Package org.dyno.visual.swing.lnfs.preference

Source Code of org.dyno.visual.swing.lnfs.preference.LafPreference

package org.dyno.visual.swing.lnfs.preference;

import java.util.ArrayList;
import java.util.List;

import org.dyno.visual.swing.base.ExtensionRegistry;
import org.dyno.visual.swing.plugin.spi.ILibraryExtension;
import org.eclipse.jdt.core.IClasspathContainer;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.Viewer;
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.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

public class LafPreference extends PreferencePage implements
    IWorkbenchPreferencePage {
  private ListViewer viewer;
  private Button btnAdd;
  private Button btnDel;
  private Button btnEdit;

 
  protected Control createContents(Composite parent) {
    Composite main = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;
    main.setLayout(layout);
    Label label = new Label(main, SWT.NONE);
    label.setText(Messages.LafPreference_Lnf_Conf);
    GridData data = new GridData();
    data.horizontalSpan = 2;
    label.setLayoutData(data);
    viewer = new ListViewer(main, SWT.SINGLE | SWT.BORDER);
    viewer.setContentProvider(new LibContProv());
    viewer.setLabelProvider(new LabelProvider() {

     
      public String getText(Object element) {
        if (element == null)
          return ""; //$NON-NLS-1$
        else if (element instanceof IClasspathContainer) {
          return ((IClasspathContainer) element).getDescription();
        } else
          return super.getText(element);
      }

    });
    viewer.setInput(new LibInput());
    data = new GridData();
    data.grabExcessHorizontalSpace = true;
    data.horizontalAlignment = SWT.FILL;
    data.heightHint = 280;
    data.verticalIndent = 30;
    viewer.getControl().setLayoutData(data);
    viewer.getList().addSelectionListener(new SelectionAdapter() {
     
      public void widgetSelected(SelectionEvent e) {
        updateButtonState();
      }
    });
    Composite right = new Composite(main, SWT.NONE);
    layout = new GridLayout();
    right.setLayout(layout);

    data = new GridData();
    data.widthHint = 90;

    right.setLayoutData(data);

    btnAdd = new Button(right, SWT.PUSH);
    btnAdd.setText(Messages.LafPreference_Add);
    btnAdd.addSelectionListener(new SelectionAdapter() {
     
      public void widgetSelected(SelectionEvent e) {
        btnAddSelected();
      }
    });

    btnEdit = new Button(right, SWT.PUSH);
    btnEdit.setText(Messages.LafPreference_Edit);

    btnDel = new Button(right, SWT.PUSH);
    btnDel.setText(Messages.LafPreference_Delete);

    updateButtonState();

    return main;
  }

  private void btnAddSelected() {
    Shell parent = btnAdd.getShell();
    AddLafDialog dialog = new AddLafDialog(parent);
    if(dialog.open()==Window.OK){
      viewer.refresh();
    }
  }

  private void updateButtonState() {
    ISelection sel = viewer.getSelection();
    boolean empty = sel == null || sel.isEmpty();
    btnEdit.setEnabled(!empty);
    btnDel.setEnabled(!empty);
  }

  private class LibInput {
  };

  private class LibContProv implements IStructuredContentProvider {
   
    public Object[] getElements(Object inputElement) {
      List<IClasspathContainer> paths = new ArrayList<IClasspathContainer>();
      List<ILibraryExtension> libExts = ExtensionRegistry
          .getLibExtensions();
      for (ILibraryExtension libExt : libExts) {
        IClasspathContainer[] libPaths = libExt.listLibPaths(true);
        if (libPaths != null) {
          for (IClasspathContainer libPath : libPaths)
            paths.add(libPath);
        }
      }
      return paths.toArray();
    }

   
    public void dispose() {
    }

   
    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
    }
  }

 
  public void init(IWorkbench workbench) {
  }
}
TOP

Related Classes of org.dyno.visual.swing.lnfs.preference.LafPreference

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.