package enfo.ui.editor; import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.PatternFilter; import enfo.ui.EnfoView; import enfo.ui.FilteredTreePanel; public class EditorPanel extends FilteredTreePanel { public EditorPanel(EnfoView p) { super(p); } @Override protected ViewerComparator createComparator() { return new EditorComparator(); } @Override protected ITreeContentProvider createContentProvider() { return new EditorContentProvider(); } @Override protected IBaseLabelProvider createLabelProvider() { return new EditorLabelProvider(); } @Override protected PatternFilter createPatternFilter() { return new EditorPatternFilter(); } @Override protected String getFilterMessage() { return "Search by name or ID"; } @Override protected Object getInput() { Set<IEditorDescriptor> editors = new HashSet<IEditorDescriptor>(); IEditorRegistry registry = PlatformUI.getWorkbench() .getEditorRegistry(); for (IConfigurationElement e : Platform.getExtensionRegistry() .getConfigurationElementsFor("org.eclipse.ui.editors")) { IEditorDescriptor edit = registry.findEditor(e.getAttribute("id")); if (edit != null) { editors.add(edit); } } return editors; } @Override protected String getMessage(Object treeNode) { if (treeNode instanceof IEditorDescriptor) { IEditorDescriptor editor = (IEditorDescriptor) treeNode; StringBuilder builder = new StringBuilder(); builder.append(editor.getLabel()); builder.append("\n"); builder.append(editor.getId()); return builder.toString(); } return super.getMessage(treeNode); } }