Package enfo.ui

Source Code of enfo.ui.FilteredTreePanel

package enfo.ui;

import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.FilteredTree;
import org.eclipse.ui.dialogs.PatternFilter;

public abstract class FilteredTreePanel extends Panel implements
    IDoubleClickListener, ISelectionChangedListener {

  private EnfoView view;
  private FilteredTree fTree;

  public FilteredTreePanel(EnfoView parent) {
    super();
    view = parent;
  }

  protected ViewerComparator createComparator() {
    return new ViewerComparator();
  }

  protected abstract ITreeContentProvider createContentProvider();

  @Override
  public Composite createContents(Composite p) {

    fTree = new FilteredTree(p, getStyles(), createPatternFilter(), true);
    fTree.getFilterControl().setMessage(getFilterMessage());
    fTree.setBackground(PlatformUI.getWorkbench().getDisplay()
        .getSystemColor(SWT.COLOR_WHITE));

    final TreeViewer viewer = fTree.getViewer();
    viewer.addDoubleClickListener(this);
    viewer.addSelectionChangedListener(this);
    viewer.setComparator(createComparator());
    viewer.setLabelProvider(createLabelProvider());
    viewer.setContentProvider(createContentProvider());
    viewer.setInput(getInput());

    return p;
  }

  protected IBaseLabelProvider createLabelProvider() {
    return new LabelProvider();
  }

  protected PatternFilter createPatternFilter() {
    return new PatternFilter();
  }

  @Override
  public void doubleClick(DoubleClickEvent e) {
    IStructuredSelection select = (IStructuredSelection) e.getSelection();
    Object o = select.getFirstElement();

    TreeViewer viewer = getFilteredTree().getViewer();
    if (((ITreeContentProvider) viewer.getContentProvider()).hasChildren(o)) {
      viewer.setExpandedState(o, !viewer.getExpandedState(o));
    } else {
      doubleClickOnLeaf(o);
    }
  }

  protected void doubleClickOnLeaf(Object leaf) {
  }

  protected FilteredTree getFilteredTree() {
    return fTree;
  }

  protected String getFilterMessage() {
    return "Search";
  }

  protected String getMessage(Object treeNode) {
    return "";
  }

  protected abstract Object getInput();

  protected int getStyles() {
    return (SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
  }

  @Override
  public void selectionChanged(SelectionChangedEvent e) {
//    Object o = ((IStructuredSelection) e.getSelection()).getFirstElement();
//    view.setContentDescription(getMessage(o));
  }
 
  protected EnfoView getParent() {
    return view;
  }

}
TOP

Related Classes of enfo.ui.FilteredTreePanel

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.