1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package pl.edu.agh.cast.ui.outline;
19
20 import org.eclipse.jface.viewers.TreeViewer;
21 import org.eclipse.swt.widgets.Composite;
22 import org.eclipse.ui.IEditorPart;
23 import org.eclipse.ui.IPartListener;
24 import org.eclipse.ui.IWorkbenchPart;
25
26 import pl.edu.agh.cast.backward.editor.AbstractEditor;
27 import pl.edu.agh.cast.backward.resources.DiagramEditorInput;
28 import pl.edu.agh.cast.model.visual.backward.IDiagram;
29 import pl.edu.agh.cast.ui.AbstractTreeView;
30
31
32
33
34
35
36 public class OutlineTreeView extends AbstractTreeView implements IPartListener {
37
38
39
40
41 public OutlineTreeView() {
42 }
43
44
45
46
47 public static final String ID = "pl.edu.agh.cast.view.outline";
48
49 private OutlineContentProvider provider;
50
51 private Object currentDiagram;
52
53
54
55
56
57
58 @Override
59 protected void activate() {
60 TreeViewer viewer = getViewer();
61 provider = new OutlineContentProvider(viewer, this);
62
63 viewer.setContentProvider(provider);
64 viewer.setInput(null);
65
66 getSite().getPage().addPartListener(this);
67 }
68
69
70
71
72
73
74 @Override
75 public void dispose() {
76 super.dispose();
77 getSite().getPage().removePartListener(this);
78 }
79
80 @Override
81 protected void contributeToActionBars() {
82
83
84 }
85
86 @Override
87 protected void hookContextMenu() {
88
89
90 }
91
92 @Override
93 protected void hookDoubleClickAction() {
94
95
96 }
97
98 @Override
99 protected void makeActions() {
100
101
102 }
103
104 @Override
105 protected void createControl(Composite parent) {
106 super.createControl(parent);
107 TreeViewer viewer = getViewer();
108 viewer.setLabelProvider(OutlineLabelProvider.getInstance());
109
110
111 }
112
113
114
115
116
117
118 public void partActivated(IWorkbenchPart part) {
119 updateActiveEditor();
120 }
121
122
123
124
125
126
127 public void partDeactivated(IWorkbenchPart part) {
128 updateActiveEditor();
129 }
130
131 private void updateActiveEditor() {
132 IEditorPart activeEditor = getSite().getPage().getActiveEditor();
133 if (activeEditor instanceof AbstractEditor) {
134 AbstractEditor editor = (AbstractEditor)activeEditor;
135 DiagramEditorInput input = (DiagramEditorInput)editor
136 .getEditorInput();
137 IDiagram diagram = input.getDiagram();
138 if (!diagram.equals(currentDiagram)) {
139 setInput(diagram);
140 currentDiagram = diagram;
141 }
142 } else {
143 currentDiagram = null;
144 setInput(null);
145 }
146 }
147
148
149
150
151
152
153 public void partBroughtToTop(IWorkbenchPart part) {
154 updateActiveEditor();
155 }
156
157
158
159
160
161
162 public void partClosed(IWorkbenchPart part) {
163 updateActiveEditor();
164 }
165
166
167
168
169
170
171 public void partOpened(IWorkbenchPart part) {
172 updateActiveEditor();
173 }
174
175 }