Package enfo.ui.command

Source Code of enfo.ui.command.CommandPanel

package enfo.ui.command;

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

import org.eclipse.core.commands.Category;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.dialogs.PatternFilter;

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

public class CommandPanel extends FilteredTreePanel {

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

  public CommandPanel(EnfoView parent) {
    super(parent);
  }

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

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

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

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

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

  @Override
  protected Object getInput() {
    return PlatformUI.getWorkbench().getService(ICommandService.class);
  }

  @Override
  protected String getMessage(Object treeNode) {
    if (treeNode instanceof Category) {
      return ((Category) treeNode).getId();
     
    } else if (treeNode instanceof Command) {
      Command cmd = (Command) treeNode;
      try {
        return cmd.getId() + "    " + cmd.getDescription();
      } catch (NotDefinedException e) {
        return cmd.getId();
      }
    }
    return super.getMessage(treeNode);
  }

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

    Set<Category> result = new HashSet<Category>();
    ICommandService service = (ICommandService) PlatformUI.getWorkbench()
        .getService(ICommandService.class);
    for (Category c : service.getDefinedCategories()) {
      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(
          ((Category) o).getId());
    }
  }

}
TOP

Related Classes of enfo.ui.command.CommandPanel

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.