Package enfo.ui.view

Source Code of enfo.ui.view.ViewPanel

package enfo.ui.view;

import java.util.HashSet;
import java.util.Set;

import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PatternFilter;
import org.eclipse.ui.views.IViewCategory;
import org.eclipse.ui.views.IViewDescriptor;
import org.eclipse.ui.views.IViewRegistry;

import enfo.ui.EnfoView;
import enfo.ui.FilteredTreePanel;

public class ViewPanel extends FilteredTreePanel {

  private static final String MEMENTO_CATEGORY = "expandedViewCategories";
  private static final String MEMENTO_ELEMENT = "categoryId";

  public ViewPanel(EnfoView p) {
    super(p);
  }

  @Override
  protected ViewerComparator createComparator() {
    return new ViewComparator();
  }

  @Override
  protected ITreeContentProvider createContentProvider() {
    return new ViewContentProvider();
  }

  @Override
  public Composite createContents(Composite parent) {
    Composite cmp = super.createContents(parent);

    TreeViewer viewer = getFilteredTree().getViewer();
    viewer.addFilter(createFilter());
    viewer.addSelectionChangedListener(this);
    viewer.addDoubleClickListener(this);
    return cmp;
  }

  protected ViewerFilter createFilter() {
    return new ViewFilter();
  }

  @Override
  protected IBaseLabelProvider createLabelProvider() {
    return new ViewLabelProvider();
  }

  @Override
  protected PatternFilter createPatternFilter() {
    return new ViewPatternFilter();
  }

  @Override
  protected void doubleClickOnLeaf(Object o) {
    if (!(o instanceof IViewDescriptor)) {
      return;
    }

    IWorkbenchPage pg = getParent().getSite().getWorkbenchWindow()
        .getActivePage();
    if (pg == null) {
      return;
    }

    try {
      IViewDescriptor v = (IViewDescriptor) o;
      pg.showView(v.getId(), null, IWorkbenchPage.VIEW_VISIBLE);
    } catch (PartInitException ex) {
    }
    super.doubleClickOnLeaf(o);
  }

  @Override
  protected String getFilterMessage() {
    return "Search by name or ID";
  }

  @Override
  protected Object getInput() {
    return PlatformUI.getWorkbench().getViewRegistry();
  }

  @Override
  protected String getMessage(Object o) {
    if (o instanceof IViewCategory) {
      return ((IViewCategory) o).getId();

    } else if (o instanceof IViewDescriptor) {
      return ((IViewDescriptor) o).getId();
    }
    return super.getMessage(o);
  }

  @Override
  public void restoreState(IMemento memento) {
    IMemento m = memento.getChild(MEMENTO_CATEGORY);
    if (m == null) {
      return;
    }

    Set<IViewCategory> result = new HashSet<IViewCategory>();
    IViewRegistry r = PlatformUI.getWorkbench().getViewRegistry();
    for (IViewCategory c : r.getCategories()) {
      for (IMemento child : m.getChildren(MEMENTO_ELEMENT)) {
        if (c.getId().equals(child.getTextData())) {
          result.add(c);
        }
      }
    }
    getFilteredTree().getViewer().setExpandedElements(result.toArray());
  }

  @Override
  public void saveState(IMemento memento) {
    IMemento m = memento.createChild(MEMENTO_CATEGORY);
    Object[] expanded = getFilteredTree().getViewer().getExpandedElements();
    for (Object o : expanded) {
      m.createChild(MEMENTO_ELEMENT).putTextData(
          ((IViewCategory) o).getId());
    }
  }
}
TOP

Related Classes of enfo.ui.view.ViewPanel

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.