1 package org.simantics.scl.ui.outline;
3 import org.eclipse.jface.viewers.ILabelProvider;
4 import org.eclipse.jface.viewers.ILabelProviderListener;
5 import org.eclipse.jface.viewers.ISelection;
6 import org.eclipse.jface.viewers.ISelectionChangedListener;
7 import org.eclipse.jface.viewers.ITreeContentProvider;
8 import org.eclipse.jface.viewers.StructuredSelection;
9 import org.eclipse.jface.viewers.TreeViewer;
10 import org.eclipse.swt.SWT;
11 import org.eclipse.swt.graphics.Image;
12 import org.eclipse.swt.widgets.Composite;
13 import org.eclipse.swt.widgets.Control;
14 import org.eclipse.swt.widgets.Tree;
15 import org.eclipse.ui.part.Page;
16 import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
17 import org.simantics.scl.ui.editor2.SCLModuleEditor2;
19 public class SCLModuleOutlinePage extends Page implements IContentOutlinePage {
21 private SCLOutlineViewer outlineViewer;
22 private SCLModuleEditor2 moduleEditor;
24 public SCLModuleOutlinePage(SCLModuleEditor2 moduleEditor) {
25 this.moduleEditor = moduleEditor;
29 public void addSelectionChangedListener(ISelectionChangedListener listener) {
30 if (outlineViewer != null)
31 outlineViewer.addSelectionChangedListener(listener);
35 public ISelection getSelection() {
36 if (outlineViewer != null)
37 outlineViewer.getSelection();
38 return StructuredSelection.EMPTY;
42 public void removeSelectionChangedListener(ISelectionChangedListener listener) {
43 if (outlineViewer != null)
44 outlineViewer.removeSelectionChangedListener(listener);
48 public void setSelection(ISelection selection) {
49 if (outlineViewer != null)
50 outlineViewer.setSelection(selection);
54 public void createControl(Composite parent) {
55 Tree tree = new Tree(parent, SWT.MULTI);
56 outlineViewer = new SCLOutlineViewer(tree);
58 SCLModuleOutlineProvider provider = new SCLModuleOutlineProvider();
59 outlineViewer.setContentProvider(provider);
60 outlineViewer.setLabelProvider(provider);
62 outlineViewer.setInput(moduleEditor.getEditorInput());
66 public Control getControl() {
67 if (outlineViewer != null)
68 outlineViewer.getControl();
73 public void setFocus() {
74 if (outlineViewer != null)
75 outlineViewer.getControl().setFocus();
78 protected class SCLOutlineViewer extends TreeViewer {
80 public SCLOutlineViewer(Tree tree) {
82 setAutoExpandLevel(ALL_LEVELS);
83 setUseHashlookup(true);
89 protected class SCLModuleOutlineProvider implements ITreeContentProvider, ILabelProvider {
92 public Object[] getElements(Object inputElement) {
97 public Object[] getChildren(Object parentElement) {
102 public Object getParent(Object element) {
107 public boolean hasChildren(Object element) {
112 public void addListener(ILabelProviderListener listener) {
117 public boolean isLabelProperty(Object element, String property) {
122 public void removeListener(ILabelProviderListener listener) {
127 public Image getImage(Object element) {
132 public String getText(Object element) {
137 public void dispose() {
138 ITreeContentProvider.super.dispose();