1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package pl.edu.agh.cast.editpart;
19
20 import java.beans.PropertyChangeEvent;
21 import java.beans.PropertyChangeListener;
22
23 import org.eclipse.draw2d.ChopboxAnchor;
24 import org.eclipse.draw2d.ConnectionAnchor;
25 import org.eclipse.draw2d.IFigure;
26 import org.eclipse.draw2d.LayoutManager;
27 import org.eclipse.gef.ConnectionEditPart;
28 import org.eclipse.gef.NodeEditPart;
29 import org.eclipse.gef.Request;
30 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
31
32 import pl.edu.agh.cast.backward.figure.LegendFigure;
33 import pl.edu.agh.cast.model.visual.backward.Diagram;
34 import pl.edu.agh.cast.model.visual.backward.IDiagram;
35 import pl.edu.agh.cast.model.visual.backward.Legend;
36
37
38
39
40
41
42 public class LegendEditPart extends AbstractGraphicalEditPart implements NodeEditPart, PropertyChangeListener {
43
44
45
46
47 protected Legend legend;
48
49 @SuppressWarnings("unused")
50 private LayoutManager layout;
51
52 private LegendFigure legendFigure;
53
54 private ConnectionAnchor connectionAnchor;
55
56
57
58
59
60
61
62
63
64 public LegendEditPart(Legend legend, LayoutManager layout) {
65 this.legend = legend;
66 this.layout = layout;
67 setModel(legend);
68 }
69
70
71
72
73
74
75 @Override
76 public IFigure createFigure() {
77 legendFigure = new LegendFigure(legend, this);
78 return legendFigure;
79 }
80
81
82
83
84
85
86 @Override
87 protected void createEditPolicies() {
88 }
89
90
91
92
93
94
95 public void propertyChange(PropertyChangeEvent event) {
96 final String propName = event.getPropertyName();
97 if (propName.equals(Diagram.NAME)) {
98 legend.setDiagramName((String)event.getNewValue());
99 refreshVisuals();
100 } else if (propName.equals(Diagram.CHILD) || propName.equals(Diagram.CHILDREN)
101 || propName.equals(Diagram.CONNECTION)) {
102 refreshItems();
103 } else if (propName.equals(Legend.LOCATION)) {
104 refreshVisuals();
105 } else if (event.getSource() instanceof Legend) {
106 refreshItems();
107 }
108 }
109
110
111
112
113
114
115 @Override
116 public void activate() {
117 super.activate();
118 legend.addPropertyChangeListener(this);
119 ((IDiagram)this.getParent().getModel()).addPropertyChangeListener(this);
120 }
121
122
123
124
125
126
127 @Override
128 public void deactivate() {
129 super.deactivate();
130 legend.removePropertyChangeListener(this);
131 }
132
133
134
135
136
137
138 public Legend getModelCasted() {
139 return legend;
140 }
141
142
143
144
145
146
147 @Override
148 protected void refreshVisuals() {
149
150
151
152 if (legend.getLocation().x > 0) {
153 legendFigure.setLocation(legend.getLocation());
154 }
155 refreshItems();
156 }
157
158
159
160
161 public void refreshItems() {
162 legendFigure.init();
163 }
164
165
166
167
168
169
170 public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart arg0) {
171 return getConnectionAnchor();
172 }
173
174
175
176
177
178
179 public ConnectionAnchor getSourceConnectionAnchor(Request arg0) {
180 return getConnectionAnchor();
181 }
182
183
184
185
186
187
188 public ConnectionAnchor getTargetConnectionAnchor(ConnectionEditPart arg0) {
189 return getConnectionAnchor();
190 }
191
192
193
194
195
196
197 public ConnectionAnchor getTargetConnectionAnchor(Request arg0) {
198 return getConnectionAnchor();
199 }
200
201 private ConnectionAnchor getConnectionAnchor() {
202 if (connectionAnchor == null) {
203 connectionAnchor = new ChopboxAnchor(legendFigure);
204 }
205 return connectionAnchor;
206
207 }
208
209 }