Package net.sf.logsaw.dialect.log4j.ui.pattern

Source Code of net.sf.logsaw.dialect.log4j.ui.pattern.Log4JPatternLayoutPreferencePage

/*******************************************************************************
* Copyright (c) 2011 LogSaw project and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    LogSaw project committers - initial API and implementation
*******************************************************************************/
package net.sf.logsaw.dialect.log4j.ui.pattern;

import java.io.IOException;
import java.util.Set;

import net.sf.logsaw.dialect.log4j.Log4JDialectPlugin;
import net.sf.logsaw.dialect.log4j.ui.Log4JDialectUIPlugin;
import net.sf.logsaw.dialect.log4j.ui.Messages;
import net.sf.logsaw.dialect.pattern.APatternDialect;
import net.sf.logsaw.ui.UIPlugin;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

/**
* @author Philipp Nanz
*/
public class Log4JPatternLayoutPreferencePage extends PreferencePage implements
    IWorkbenchPreferencePage {

  private APatternDialect patternDialect;
  private Set<String> patternSet;
  private Button editButton;
  private Button removeButton;
  private ListViewer listViewer;

  /* (non-Javadoc)
   * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
   */
  @Override
  public void init(IWorkbench workbench) {
    try {
      patternSet = Log4JDialectUIPlugin.getDefault().loadKnownPatterns();
      patternDialect = (APatternDialect) Log4JDialectPlugin.getDefault()
          .getPatternLayoutDialectFactory().createLogDialect();
    } catch (IOException e) {
      // Log and show error
      UIPlugin.logAndShowError(new CoreException(new Status(IStatus.ERROR,
          UIPlugin.PLUGIN_ID, e.getLocalizedMessage(), e)), false);
    }
  }

  /* (non-Javadoc)
   * @see org.eclipse.jface.preference.PreferencePage#performOk()
   */
  @Override
  public boolean performOk() {
    try {
      Log4JDialectUIPlugin.getDefault().saveKnownPatterns(patternSet);
    } catch (IOException e) {
      // Log and show error
      UIPlugin.logAndShowError(new CoreException(new Status(IStatus.ERROR,
          UIPlugin.PLUGIN_ID, e.getLocalizedMessage(), e)), false);
    }
    return super.performOk();
  }

  /* (non-Javadoc)
   * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
   */
  @Override
  protected Control createContents(Composite parent) {
    Composite root = new Composite(parent, SWT.NONE);
    root.setLayout(new GridLayout(2, false));
   
    listViewer = new ListViewer(root, SWT.BORDER | SWT.SINGLE |
        SWT.H_SCROLL | SWT.V_SCROLL);
    listViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    listViewer.addSelectionChangedListener(new ISelectionChangedListener() {

      /* (non-Javadoc)
       * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
       */
      @Override
      public void selectionChanged(SelectionChangedEvent event) {
        IStructuredSelection sel = (IStructuredSelection) event.getSelection();
        editButton.setEnabled(!sel.isEmpty());
        removeButton.setEnabled(!sel.isEmpty());
      }
    });
    listViewer.setContentProvider(new ArrayContentProvider());
    listViewer.setLabelProvider(new LabelProvider());
    listViewer.setSorter(new ViewerSorter());
   
    Composite buttonArea = new Composite(root, SWT.NONE);
    buttonArea.setLayout(new GridLayout());
    GridData gridData = new GridData();
    gridData.verticalAlignment = SWT.BEGINNING;
    buttonArea.setLayoutData(gridData);
   
    Button addButton = new Button(buttonArea, SWT.PUSH);
    addButton.setText(Messages.Log4JPatternLayoutPreferencePage_label_add);
    addButton.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        PatternDialog dlg = new PatternDialog(getShell(), patternDialect, null);
        if (dlg.open() == Window.OK) {
          patternSet.add(dlg.getPattern());
          refreshList();
        }
      }
    });
    addButton.setLayoutData(new GridData(SWT.FILL, SWT.NONE, false, false));
   
    editButton = new Button(buttonArea, SWT.PUSH);
    editButton.setText(Messages.Log4JPatternLayoutPreferencePage_label_edit);
    editButton.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent e) {
        IStructuredSelection sel = (IStructuredSelection) listViewer.getSelection();
        String oldPattern = (String) sel.getFirstElement();
        PatternDialog dlg = new PatternDialog(getShell(), patternDialect, oldPattern);
        if (dlg.open() == Window.OK) {
          patternSet.remove(oldPattern);
          patternSet.add(dlg.getPattern());
          refreshList();
        }
      }
    });
    editButton.setLayoutData(new GridData(SWT.FILL, SWT.NONE, false, false));
   
    removeButton = new Button(buttonArea, SWT.PUSH);
    removeButton.setText(Messages.Log4JPatternLayoutPreferencePage_label_remove);
    removeButton.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(SelectionEvent event) {
        IStructuredSelection sel = (IStructuredSelection) listViewer.getSelection();
        patternSet.remove(sel.getFirstElement());
        listViewer.setSelection(StructuredSelection.EMPTY);
        refreshList();
      }
    });
    removeButton.setLayoutData(new GridData(SWT.FILL, SWT.NONE, false, false));
   
    refreshList();
    listViewer.setSelection(StructuredSelection.EMPTY);
   
    return root;
  }

  private void refreshList() {
    listViewer.setInput(patternSet.toArray());
  }
}
TOP

Related Classes of net.sf.logsaw.dialect.log4j.ui.pattern.Log4JPatternLayoutPreferencePage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.