View | Details | Raw Unified | Return to bug 173496 | Differences between
and this patch

Collapse All | Expand All

(-)templates/parts/setViewColor.javajet (-32 lines)
Removed Link Here
1
if (modelElement.get<%=modelColorProperty%>Color() != null) {
2
	final int rgbColor;
3
	if (modelElement.get<%=modelColorProperty%>Color() instanceof RGBColor) {
4
		<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%> modelColor = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) modelElement.get<%=modelColorProperty%>Color();
5
		rgbColor = (modelColor.getRed()& 0xFF) | ((modelColor.getGreen() & 0xFF) << 8) | ((modelColor.getBlue() & 0xFF) << 16);
6
	} else {
7
		<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.ConstantColor")%> modelColor = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.ConstantColor")%>) modelElement.get<%=modelColorProperty%>Color();
8
		switch (modelColor.getValue().getValue()) {
9
/*
10
		case <nextValue>: {
11
			rgbColor = org.eclipse.draw2d.ColorConstants.<nextColorLiteral.getName()>.getRGB().hashCode();
12
			break;
13
		}
14
*/
15
		default: 
16
			rgbColor = -1;
17
		}
18
	}
19
	if (rgbColor != -1 && shapeStyle.get<%=viewColorProperty%>Color() != rgbColor) {
20
		<%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%> setColorOperation = new <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%>(getEditingDomain(), "Synchronizing view <%=modelColorProperty%> color with the model", <%=importManager.getImportedName("java.util.Collections")%>.singletonMap(<%=importManager.getImportedName("org.eclipse.emf.transaction.Transaction")%>.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$
21
			protected <%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%> doExecute(<%=importManager.getImportedName("org.eclipse.core.runtime.IProgressMonitor")%> monitor, <%=importManager.getImportedName("org.eclipse.core.runtime.IAdaptable")%> info) throws <%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> {
22
				shapeStyle.set<%=viewColorProperty%>Color(rgbColor);
23
				return <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>.OK_STATUS;
24
			}
25
		};
26
		try {
27
			setColorOperation.execute(new <%=importManager.getImportedName("org.eclipse.core.runtime.NullProgressMonitor")%>(), null);
28
		} catch (<%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> e) {
29
			<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to synchronize view <%=modelColorProperty%> background color with the model", e); //$NON-NLS-1$
30
		}
31
	}
32
}
(-)templates/parts/NodeEditPart.javajet (-1021 lines)
Removed Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.parts" class="NodeEditPartGenerator"
2
	imports="java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"
3
	skeleton="../common.skeleton"%>
4
<%
5
final GenNode genNode = (GenNode) ((Object[]) argument)[0];
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
GenDiagram genDiagram = genNode.getDiagram();
8
boolean isXYLayout = ViewmapLayoutType.XY_LAYOUT_LITERAL.equals(genNode.getLayoutType());
9
10
class NodeEditPartHelper {
11
	private final List myInnerLabels = new LinkedList();
12
	private final List myExternalLabels = new LinkedList();
13
	private final List myPinnedCompartments = new LinkedList();
14
	private final List myFloatingCompartments = new LinkedList();
15
	private GenNodeLabel myPrimaryLabel;
16
	private boolean myHasChildrenInListCompartments = false;
17
	
18
	public NodeEditPartHelper(GenNode genNode){
19
		myPrimaryLabel = null;
20
21
		for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) {
22
			GenNodeLabel next = (GenNodeLabel) labels.next();
23
			if (myPrimaryLabel == null){
24
				myPrimaryLabel = next;
25
			}
26
			if (next instanceof GenExternalNodeLabel) {
27
				myExternalLabels.add(next);
28
			} else if (next.getViewmap() instanceof ParentAssignedViewmap) {
29
				myInnerLabels.add(next);
30
			}
31
		}
32
		
33
		for (Iterator compartments = genNode.getCompartments().iterator(); compartments.hasNext();){
34
			GenCompartment next = (GenCompartment) compartments.next();
35
			if (next.getViewmap() instanceof ParentAssignedViewmap){
36
				myPinnedCompartments.add(next);
37
			} else {
38
				myFloatingCompartments.add(next);
39
			}	
40
			
41
			myHasChildrenInListCompartments |= next.isListLayout() && !next.getChildNodes().isEmpty();
42
		}
43
	}
44
	
45
	public boolean hasChildrenInListCompartments(){
46
		return myHasChildrenInListCompartments;
47
	}
48
	
49
	public boolean hasInnerFixedLabels(){
50
		return !myInnerLabels.isEmpty();
51
	}
52
	
53
	public boolean hasPinnedCompartments(){
54
		return !myPinnedCompartments.isEmpty();
55
	}
56
	
57
	public boolean hasFixedChildren(){
58
		return hasInnerFixedLabels() || hasPinnedCompartments();
59
	}
60
	
61
	public boolean hasExternalLabels(){
62
		return !myExternalLabels.isEmpty();
63
	}
64
	
65
	public GenNodeLabel getPrimaryLabel(){
66
		return myPrimaryLabel;
67
	}
68
	
69
	public Iterator getInnerFixedLabels(){
70
		return myInnerLabels.iterator();
71
	}
72
	
73
	public Iterator getExternalLabels(){
74
		return myExternalLabels.iterator();
75
	}
76
	
77
	public Iterator getPinnedCompartments(){
78
		return myPinnedCompartments.iterator();
79
	}	
80
}
81
final NodeEditPartHelper myHelper = new NodeEditPartHelper(genNode);
82
// [graphdef++]
83
GenClass metaclass = genNode.getModelFacet().getMetaClass();
84
boolean generateSyncronizationCode = genNode.getViewmap() instanceof InnerClassViewmap && metaclass.getEcoreClass().getEAllSuperTypes().contains(metaclass.getEcoreClass().getEPackage().getEClassifier("FigureMarker"));
85
// [graphdef--]
86
%>
87
<%@ include file="../copyright4java.jetinc"%>
88
<%importManager.emitPackageStatement(stringBuffer);%>
89
90
<%
91
if (genNode.getViewmap() instanceof InnerClassViewmap) {
92
importManager.registerInnerClass(((InnerClassViewmap) genNode.getViewmap()).getClassName());
93
}
94
importManager.addImport("org.eclipse.draw2d.IFigure");
95
importManager.addImport("org.eclipse.draw2d.StackLayout");
96
importManager.addImport("org.eclipse.gef.EditPolicy");
97
importManager.addImport("org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles");
98
importManager.addImport("org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure");
99
importManager.addImport("org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure");
100
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
101
importManager.markImportLocation(stringBuffer);
102
%>
103
104
/**
105
 * @generated
106
 */
107
public class <%=genNode.getEditPartClassName()%> extends <%=/*[graphdef++]*/generateSyncronizationCode ? importManager.getImportedName(genDiagram.getEditPartsPackageName() + ".AbstractFigureEditPart") : importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart")/*[graphdef++]*/%> {
108
<%{
109
GenCommonBase genCommonBase = genNode;%>
110
<%@ include file="visualID.jetinc"%>
111
<%}%>
112
113
	/**
114
	 * @generated
115
	 */
116
	protected IFigure contentPane;
117
118
<%
119
// [graphdef++]
120
if (generateSyncronizationCode) {
121
%>
122
	/**
123
	 * @generated
124
	 */
125
	private <%=((InnerClassViewmap) genNode.getViewmap()).getClassName()%> myFigure;
126
	
127
// TODO: use myFigure?
128
	/**
129
	 * @generated
130
	 */
131
	protected <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%> myNodeFigure;
132
	
133
<%
134
}
135
// [graphdef--]
136
%>
137
	/**
138
	 * @generated
139
	 */
140
	protected IFigure primaryShape;
141
142
	/**
143
	 * @generated
144
	 */
145
	public <%=genNode.getEditPartClassName()%>(View view) {
146
		super(view);
147
	}
148
<%
149
// [graphdef++]
150
if (generateSyncronizationCode) {
151
	String modelInterfaceName = importManager.getImportedName(metaclass.getQualifiedInterfaceName());
152
%>
153
154
	/**
155
	 * @generated
156
	 */
157
	public void activate() {
158
		if (isActive()){
159
			return;
160
		}
161
		View view = (View) getModel();
162
		if (view.getElement() == null) {
163
			super.activate();
164
			return;
165
		}
166
167
		final <%=modelInterfaceName%> modelElement = (<%=modelInterfaceName%>) view.getElement();
168
		
169
<%
170
	for (Iterator genFeatures = metaclass.getAllGenFeatures().iterator(); genFeatures.hasNext();) {
171
		GenFeature nextGenFeature = (GenFeature) genFeatures.next();
172
		if (skip(nextGenFeature)) {
173
			continue;
174
		}
175
		String packageInterfaceName = metaclass.getGenPackage().getQualifiedPackageInterfaceName();
176
		if (false == nextGenFeature.getTypeGenClassifier() instanceof GenDataType) {
177
%>
178
		final <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%> <%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener = new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%>() {
179
			public void notifyChanged(Notification notification) {
180
				<%=getProcessChangesCall("modelElement", nextGenFeature)%>;
181
			}
182
		};
183
<%@ include file="addFeaturePropertyChangeListeners.jetinc"%>
184
<%		}%>
185
		addListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_Listener", new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%>() {
186
			public void notifyChanged(<%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> notification) {
187
<%		if (false == nextGenFeature.getTypeGenClassifier() instanceof GenDataType) {
188
			if (nextGenFeature.isListType()) {%>
189
				int listSize = modelElement.<%=nextGenFeature.getGetAccessor()%>().size();
190
				if (notification.getOldValue() instanceof <%=importManager.getImportedName("java.util.Collection")%>) {
191
					listSize += ((<%=importManager.getImportedName("java.util.Collection")%>) notification.getOldValue()).size();
192
				} else {
193
					listSize++;
194
				}
195
				for (int i = 0; i < listSize; i++) {
196
					removeListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener#" + i);
197
				}
198
<%			} else {%>
199
				removeListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener");
200
<%			}%>
201
<%@ include file="addFeaturePropertyChangeListeners.jetinc"%>
202
<%		}%>
203
				<%=getProcessChangesCall("modelElement", nextGenFeature)%>;
204
			}
205
		}, modelElement, <%=importManager.getImportedName(nextGenFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=nextGenFeature.getFeatureAccessorName()%>());
206
		
207
<%	}%>
208
		final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%> bounds = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%>) ((<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>) view).getLayoutConstraint();
209
		final int sizeX;
210
		final int sizeY;
211
		if (modelElement.getPreferredSize() != null) {
212
			sizeX = getMapMode().DPtoLP(modelElement.getPreferredSize().getDx());
213
			sizeY = getMapMode().DPtoLP(modelElement.getPreferredSize().getDy());
214
		} else {
215
			sizeX = getMapMode().DPtoLP(20);
216
			sizeY = getMapMode().DPtoLP(20);
217
		}
218
		final int locationX;
219
		final int locationY;
220
		if (modelElement.getLocation() != null) {
221
			locationX = getMapMode().DPtoLP(modelElement.getLocation().getX());
222
			locationY = getMapMode().DPtoLP(modelElement.getLocation().getY());
223
		} else {
224
			locationX = bounds.getX();
225
			locationY = bounds.getY();
226
		}
227
		if (sizeX != bounds.getWidth() || sizeY != bounds.getHeight() || locationX != bounds.getX() || locationY != bounds.getY()) {
228
			try {
229
				new <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%>(getEditingDomain(), "Synchronizing view size with the model", <%=importManager.getImportedName("java.util.Collections")%>.singletonMap(<%=importManager.getImportedName("org.eclipse.emf.transaction.Transaction")%>.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$
230
					protected <%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%> doExecute(<%=importManager.getImportedName("org.eclipse.core.runtime.IProgressMonitor")%> monitor, <%=importManager.getImportedName("org.eclipse.core.runtime.IAdaptable")%> info) throws <%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> {
231
						bounds.setX(locationX);
232
						bounds.setY(locationY);
233
						bounds.setWidth(sizeX);
234
						bounds.setHeight(sizeY);
235
						return <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>.OK_STATUS;
236
					}
237
				}.execute(new <%=importManager.getImportedName("org.eclipse.core.runtime.NullProgressMonitor")%>(), null);
238
			} catch (<%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> e) {
239
				<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to synchronize view size with the model", e); //$NON-NLS-1$			
240
			}
241
		}
242
		addListenerFilter("BoundsListener", new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%>() {
243
			public void notifyChanged(final <%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> notification) {
244
				try {
245
					new <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%>(getEditingDomain(), "Synchronizing model size with the view", <%=importManager.getImportedName("java.util.Collections")%>.singletonMap(<%=importManager.getImportedName("org.eclipse.emf.transaction.Transaction")%>.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$
246
						protected <%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%> doExecute(<%=importManager.getImportedName("org.eclipse.core.runtime.IProgressMonitor")%> monitor, <%=importManager.getImportedName("org.eclipse.core.runtime.IAdaptable")%> info) throws <%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> {
247
							<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%> bounds = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%>) notification.getNotifier();
248
							<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Dimension")%> dim = modelElement.getPreferredSize();
249
							if (dim == null) {
250
								dim = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createDimension();
251
								modelElement.setPreferredSize(dim);
252
							}
253
							<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Point")%> location = modelElement.getLocation();
254
							if (location == null) {
255
								location = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createPoint();
256
								modelElement.setLocation(location);
257
							}
258
				
259
							int x = getMapMode().LPtoDP(bounds.getX());
260
							int y = getMapMode().LPtoDP(bounds.getY());
261
							int width = getMapMode().LPtoDP(bounds.getWidth());
262
							int height = getMapMode().LPtoDP(bounds.getHeight());
263
							if (location.getX() != x || location.getY() != y) {
264
								location.setX(x);
265
								location.setY(y);
266
							}
267
							if (dim.getDx() != width || dim.getDy() != height) {
268
								dim.setDx(width);
269
								dim.setDy(height);
270
							}
271
272
							myNodeFigure.setPreferredSize(bounds.getWidth(), bounds.getHeight());
273
							myNodeFigure.setLocation(new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%>(bounds.getX(), bounds.getY()));
274
				
275
							if (modelElement.getLayoutData() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%> || (modelElement.getParent() != null && modelElement.getParent().getLayout() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayout")%>)) {
276
								<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%> xyLayoutData = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%>) modelElement.getLayoutData();
277
								if (xyLayoutData == null) {
278
									xyLayoutData = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createXYLayoutData();
279
									modelElement.setLayoutData(xyLayoutData);
280
									xyLayoutData.setTopLeft(<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createPoint());
281
									xyLayoutData.getTopLeft().setX(0);
282
									xyLayoutData.getTopLeft().setY(0);
283
									xyLayoutData.setSize(<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createDimension());
284
									xyLayoutData.getSize().setDx(40);
285
									xyLayoutData.getSize().setDy(40);
286
								}
287
								<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Point")%> topLeft;
288
								if (xyLayoutData.getTopLeft() != null) {
289
									topLeft = xyLayoutData.getTopLeft();
290
								} else {
291
									topLeft = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createPoint();
292
									xyLayoutData.setTopLeft(topLeft);
293
								}
294
								if (topLeft.getX() != location.getX() || topLeft.getY() != location.getY()) {
295
									topLeft.setX(location.getX());
296
									topLeft.setY(location.getY());
297
								}
298
299
								<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Dimension")%> size;
300
								if (xyLayoutData.getSize() != null) {
301
									size = xyLayoutData.getSize();
302
								} else {
303
									size = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createDimension();
304
									xyLayoutData.setSize(size);
305
								}
306
								if (size.getDx() != dim.getDx() || size.getDy() != dim.getDy()) {
307
									size.setDx(dim.getDx());
308
									size.setDy(dim.getDy());
309
								}
310
							}
311
							return <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>.OK_STATUS;
312
						}
313
					}.execute(new <%=importManager.getImportedName("org.eclipse.core.runtime.NullProgressMonitor")%>(), null);
314
				} catch (<%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> e) {
315
					<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to synchronize model size with the view", e); //$NON-NLS-1$			
316
				}
317
				if (getRoot() != null) {
318
					handleMajorSemanticChange();	
319
				}
320
			}
321
		}, bounds);
322
		
323
<%
324
	String shapeStyleInterface = importManager.getImportedName("org.eclipse.gmf.runtime.notation.ShapeStyle");
325
	String notationPackageInterfaceName = importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage");
326
%>
327
		final <%=shapeStyleInterface%> shapeStyle = (<%=shapeStyleInterface%>) view.getStyle(<%=notationPackageInterfaceName%>.eINSTANCE.getShapeStyle());
328
<%	{
329
		String modelColorProperty = "Background";
330
		String viewColorProperty = "Fill";%>
331
<%@ include file = "setViewColor.javajet"%>
332
<%	}%>
333
<%	{
334
		String modelColorProperty = "Foreground";
335
		String viewColorProperty = "Line";%>
336
<%@ include file = "setViewColor.javajet"%>
337
<%	}%>
338
		addListenerFilter("ShapeStyleListener", new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%>() {
339
			public void notifyChanged(final <%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> notification) {
340
				try {
341
					new <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%>(getEditingDomain(), "Synchronizing model size with the view", <%=importManager.getImportedName("java.util.Collections")%>.singletonMap(<%=importManager.getImportedName("org.eclipse.emf.transaction.Transaction")%>.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$
342
						protected <%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%> doExecute(<%=importManager.getImportedName("org.eclipse.core.runtime.IProgressMonitor")%> monitor, <%=importManager.getImportedName("org.eclipse.core.runtime.IAdaptable")%> info) throws <%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> {
343
							<%=shapeStyleInterface%> shapeStyle = (<%=shapeStyleInterface%>) notification.getNotifier();
344
							switch (notification.getFeatureID(<%=shapeStyleInterface%>.class)) {
345
							case <%=notationPackageInterfaceName%>.SHAPE_STYLE__FILL_COLOR:
346
								{
347
									int color = shapeStyle.getFillColor();
348
									<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%> modelColor;
349
									if (modelElement.getBackgroundColor() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) {
350
										modelColor = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) modelElement.getBackgroundColor();
351
									} else {
352
										modelColor = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createRGBColor();
353
										modelElement.setBackgroundColor(modelColor);
354
									}
355
									if (modelColor.getRed() != (color & 0x000000FF) || modelColor.getGreen() != (color & 0x0000FF00) >> 8 || modelColor.getBlue() != (color & 0x00FF0000) >> 16) {
356
										modelColor.setRed(color & 0x000000FF);
357
										modelColor.setGreen((color & 0x0000FF00) >> 8);
358
										modelColor.setBlue((color & 0x00FF0000) >> 16);
359
									}
360
									break;
361
								}
362
							case <%=notationPackageInterfaceName%>.SHAPE_STYLE__LINE_COLOR:
363
								{
364
									int color = shapeStyle.getLineColor();
365
									<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%> modelColor;
366
									if (modelElement.getForegroundColor() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) {
367
										modelColor = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) modelElement.getForegroundColor();
368
									} else {
369
										modelColor = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createRGBColor();
370
										modelElement.setForegroundColor(modelColor);
371
									}
372
									if (modelColor.getRed() != (color & 0x000000FF) || modelColor.getGreen() != (color & 0x0000FF00) >> 8 || modelColor.getBlue() != (color & 0x00FF0000) >> 16) {
373
										modelColor.setRed(color & 0x000000FF);
374
										modelColor.setGreen((color & 0x0000FF00) >> 8);
375
										modelColor.setBlue((color & 0x00FF0000) >> 16);
376
									}
377
									break;
378
								}
379
							}
380
							return <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>.OK_STATUS;
381
						}
382
					}.execute(new <%=importManager.getImportedName("org.eclipse.core.runtime.NullProgressMonitor")%>(), null);
383
				} catch (<%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> e) {
384
					<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to synchronize model size with the view", e); //$NON-NLS-1$			
385
				}
386
			}
387
		}, shapeStyle);
388
		super.activate();
389
	}
390
<%
391
}
392
// [graphdef--]
393
%>
394
395
	/**
396
	 * @generated
397
	 */
398
	protected void createDefaultEditPolicies() {
399
<%
400
if (!genNode.getChildNodes().isEmpty() || myHelper.hasChildrenInListCompartments()) {
401
%>
402
		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy")%>()
403
<%	if (myHelper.hasChildrenInListCompartments()) {%>
404
		{
405
406
			public <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getCommand(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) {
407
				if (understandsRequest(request)) {
408
					if (request instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest")%>) {
409
						<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter")%> adapter =
410
							((<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest")%>) request).getViewAndElementDescriptor().getCreateElementRequestAdapter();
411
						<%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.type.core.IElementType")%> type =
412
							(<%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.type.core.IElementType")%>) adapter.getAdapter(<%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.type.core.IElementType")%>.class);
413
<%
414
	for (Iterator compartments = genNode.getCompartments().iterator(); compartments.hasNext();) {
415
		GenCompartment compartment = (GenCompartment) compartments.next();
416
		if (compartment.isListLayout() && !compartment.getChildNodes().isEmpty()) {
417
			for (Iterator children = compartment.getChildNodes().iterator(); children.hasNext(); ) {
418
				GenNode child = (GenNode) children.next();
419
%>
420
						if (type == <%=importManager.getImportedName(genDiagram.getElementTypesQualifiedClassName())%>.<%=child.getUniqueIdentifier()%>) {
421
							<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> compartmentEditPart =
422
								getChildBySemanticHint(<%=importManager.getImportedName(genDiagram.getVisualIDRegistryQualifiedClassName())%>.getType(<%=importManager.getImportedName(compartment.getEditPartQualifiedClassName())%>.VISUAL_ID));
423
							return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request);
424
						}
425
<%
426
			}
427
		}
428
	}
429
%>
430
					}
431
					return super.getCommand(request);
432
				}
433
				return null;
434
			}
435
}
436
<%	}%>
437
		);
438
<%}%>
439
		super.createDefaultEditPolicies();
440
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new <%=importManager.getImportedName(genNode.getItemSemanticEditPolicyQualifiedClassName())%>());
441
		installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new <%=importManager.getImportedName(genNode.getGraphicalNodeEditPolicyQualifiedClassName())%>());
442
<%if (!genNode.getChildNodes().isEmpty()) {%>
443
		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy")%>());
444
<%}
445
446
if (genDiagram.isSynchronized()) {%>
447
		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new <%=importManager.getImportedName(genNode.getCanonicalEditPolicyQualifiedClassName())%>());
448
<%}%>
449
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
450
	}
451
452
	/**
453
	 * @generated
454
	 */
455
	protected <%=importManager.getImportedName("org.eclipse.gef.editpolicies.LayoutEditPolicy")%> createLayoutEditPolicy() {			
456
<%
457
final String fqnEditPart = importManager.getImportedName("org.eclipse.gef.EditPart");
458
switch(genNode.getLayoutType().getValue()){
459
	case ViewmapLayoutType.XY_LAYOUT:
460
%>	
461
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy")%> lep = new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy")%>() {
462
<%		if (myHelper.hasExternalLabels()) {%>
463
464
			protected void decorateChild(EditPart child) {
465
				if (isExternalLabel(child)) {
466
					return;
467
				}
468
				super.decorateChild(child);
469
			}
470
<%		}%>
471
472
			protected EditPolicy createChildEditPolicy(<%=fqnEditPart%> child) {
473
				EditPolicy result = super.createChildEditPolicy(child);
474
				if (result == null) {
475
					return new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableShapeEditPolicy")%>();
476
				}
477
				return result;
478
			}
479
480
<%
481
// [graphdef++]
482
	if (generateSyncronizationCode) {
483
%>
484
			protected <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> getLayoutOrigin() {
485
				return ((<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart")%>)getHost()).getContentPane().getClientArea().getLocation();
486
			}
487
			
488
			protected <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> getCurrentConstraintFor(<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%> child) {
489
				<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> result = super.getCurrentConstraintFor(child);
490
				if (result == null) {
491
					IFigure fig = child.getFigure();
492
					result = fig.getBounds().getCopy();
493
				}
494
				return result;
495
			}
496
			
497
<%
498
	}
499
// [graphdef--]
500
%>
501
		};
502
<%		if (myHelper.hasExternalLabels()) {%>
503
		<%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%> xlep = new <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%>() {
504
505
			protected boolean isExternalLabel(EditPart editPart) {
506
				return <%=genNode.getEditPartClassName()%>.this.isExternalLabel(editPart);
507
			}
508
		};
509
		xlep.setRealLayoutEditPolicy(lep);
510
		return xlep;
511
<%		} else {%>
512
		return lep;
513
<%
514
		}
515
		break;
516
	case ViewmapLayoutType.TOOLBAR_LAYOUT:
517
%>
518
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy")%> lep = new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy")%>() {
519
<%		if (myHelper.hasExternalLabels()) {%>
520
521
			protected void decorateChild(EditPart child) {
522
				if (isExternalLabel(child)) {
523
					return;
524
				}
525
				super.decorateChild(child);
526
			}
527
<%		}%>
528
529
			protected EditPolicy createChildEditPolicy(<%=fqnEditPart%> child) {
530
				if (child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE) == null) {
531
					if (child instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart")%>) {
532
						return new <%=importManager.getImportedName(genDiagram.getTextSelectionEditPolicyQualifiedClassName())%>();
533
					}
534
				}
535
				return super.createChildEditPolicy(child);
536
			}
537
<%
538
// [graphdef++]
539
	if (generateSyncronizationCode) {
540
%>
541
			protected <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> getLayoutOrigin() {
542
				return ((<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart")%>)getHost()).getContentPane().getClientArea().getLocation();
543
			}
544
<%
545
	}
546
// [graphdef--]
547
%>
548
549
		};
550
<%		if (myHelper.hasExternalLabels()) {%>
551
		<%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%> xlep = new <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%>() {
552
553
			protected boolean isExternalLabel(EditPart editPart) {
554
				return <%=genNode.getEditPartClassName()%>.this.isExternalLabel(editPart);
555
			}
556
		};
557
		xlep.setRealLayoutEditPolicy(lep);
558
		return xlep;
559
<%		} else {%>
560
		return lep;
561
<%
562
		}
563
		break;
564
	case ViewmapLayoutType.FLOW_LAYOUT:
565
%>
566
		<%=importManager.getImportedName("org.eclipse.gef.editpolicies.FlowLayoutEditPolicy")%> lep = new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.FlowLayoutEditPolicy")%>() {
567
<%		if (myHelper.hasExternalLabels()) {%>
568
569
			protected void decorateChild(EditPart child) {
570
				if (isExternalLabel(child)) {
571
					return;
572
				}
573
				super.decorateChild(child);
574
			}
575
<%		}%>
576
577
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createAddCommand(<%=fqnEditPart%> child, <%=fqnEditPart%> after) {
578
				return null;
579
			}
580
581
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createMoveChildCommand(<%=fqnEditPart%> child, <%=fqnEditPart%> after) {
582
				return null;
583
			}
584
585
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getCreateCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")%> request) {
586
				return null;
587
			}
588
		};
589
<%		if (myHelper.hasExternalLabels()) {%>
590
		<%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%> xlep = new <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%>() {
591
592
			protected boolean isExternalLabel(EditPart editPart) {
593
				return <%=genNode.getEditPartClassName()%>.this.isExternalLabel(editPart);
594
			}
595
		};
596
		xlep.setRealLayoutEditPolicy(lep);
597
		return xlep;
598
<%		} else {%>
599
		return lep;
600
<%
601
		}
602
		break;
603
	default:
604
%>
605
		<%=importManager.getImportedName("org.eclipse.gef.editpolicies.LayoutEditPolicy")%> lep = new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.LayoutEditPolicy")%>() {
606
<%		if (myHelper.hasExternalLabels()) {%>
607
608
			protected void decorateChild(EditPart child) {
609
				if (isExternalLabel(child)) {
610
					return;
611
				}
612
				super.decorateChild(child);
613
			}
614
<%		}%>
615
616
			protected EditPolicy createChildEditPolicy(<%=fqnEditPart%> child) {
617
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
618
				if( result == null ){
619
					result = new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.NonResizableEditPolicy")%>();
620
				}
621
				return result;
622
			}
623
624
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getMoveChildrenCommand(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) {
625
				return null;
626
			}
627
628
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getCreateCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")%> request) {
629
				return null;
630
			}
631
		};
632
<%		if (myHelper.hasExternalLabels()) {%>
633
		<%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%> xlep = new <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%>() {
634
635
			protected boolean isExternalLabel(EditPart editPart) {
636
				return <%=genNode.getEditPartClassName()%>.this.isExternalLabel(editPart);
637
			}
638
		};
639
		xlep.setRealLayoutEditPolicy(lep);
640
		return xlep;
641
<%		} else {%>
642
		return lep;
643
<%
644
		}
645
} //switch
646
%>
647
	}
648
649
	/**
650
	 * @generated
651
	 */
652
	protected IFigure createNodeShape() {
653
<%
654
String figureQualifiedClassName = null;
655
Viewmap viewmap = genNode.getViewmap();
656
if (viewmap instanceof FigureViewmap) {
657
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
658
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
659
		figureQualifiedClassName = "org.eclipse.draw2d.RectangleFigure";
660
	}
661
	figureQualifiedClassName = importManager.getImportedName(figureQualifiedClassName);
662
%>
663
		return primaryShape = new <%=figureQualifiedClassName%>()<%if (isXYLayout) {%> {
664
			protected boolean useLocalCoordinates() {
665
				return true;
666
			}
667
		}<%} // if isXYLayout%>;
668
<%} // instanceof FigureViewmap
669
 else if (viewmap instanceof SnippetViewmap) {%>
670
		return <%=((SnippetViewmap) viewmap).getBody()%>;
671
<%} // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter
672
 else if (viewmap instanceof InnerClassViewmap) {
673
 	figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName();
674
%>
675
		<%=figureQualifiedClassName%> figure = new <%=figureQualifiedClassName%>();
676
<%if (!genNode.getChildNodes().isEmpty() && isXYLayout) { /*otherwise, leave to figure's default value*/%>
677
 		figure.setUseLocalCoordinates(true);
678
<%}
679
// [graphdef++]
680
 	if (generateSyncronizationCode) {
681
		String modelInterfaceName = importManager.getImportedName(metaclass.getQualifiedInterfaceName());
682
%>
683
 		myFigure = figure;
684
 		<%=modelInterfaceName%> modelElement = (<%=modelInterfaceName%>) ((View) getModel()).getElement();
685
 		if (modelElement != null) {
686
<%
687
		for (Iterator genFeatures = metaclass.getAllGenFeatures().iterator(); genFeatures.hasNext();) {
688
			GenFeature nextGenFeature = (GenFeature) genFeatures.next();
689
			if (skip(nextGenFeature)) {
690
				continue;
691
			}
692
%>
693
			{
694
				<%=getProcessChangesCall("modelElement", nextGenFeature)%>;
695
			}
696
<%		}%>
697
		}
698
<%
699
	}
700
// [graphdef--]
701
%>
702
 		return primaryShape = figure;
703
<%}%>
704
	}
705
<%if (figureQualifiedClassName != null) {%>
706
707
	/**
708
	 * @generated
709
	 */
710
	public <%=figureQualifiedClassName%> getPrimaryShape() {
711
		return (<%=figureQualifiedClassName%>) primaryShape;
712
	}
713
<%}%>
714
715
<%
716
if (myHelper.hasFixedChildren()) {
717
%>
718
	/**
719
	 * @generated
720
	 */
721
	protected boolean addFixedChild(EditPart childEditPart) {
722
<%
723
for (Iterator it = myHelper.getInnerFixedLabels(); it.hasNext(); ) {
724
			GenNodeLabel genLabel = (GenNodeLabel) it.next();
725
	final String labelEditPart = importManager.getImportedName(genLabel.getEditPartQualifiedClassName());
726
	final ParentAssignedViewmap childViewmap = (ParentAssignedViewmap) genLabel.getViewmap();
727
	final String childSetterName = childViewmap.getSetterName() == null ? "setLabel" : childViewmap.getSetterName();
728
%>
729
		if (childEditPart instanceof <%=labelEditPart%>) {
730
			((<%=labelEditPart%>) childEditPart).<%=childSetterName%>(getPrimaryShape().<%=childViewmap.getGetterName()%>());
731
			return true;
732
		}
733
<%
734
			}
735
736
for (Iterator it = myHelper.getPinnedCompartments(); it.hasNext(); ) {
737
	GenCompartment next = (GenCompartment) it.next();
738
	final ParentAssignedViewmap childViewmap = (ParentAssignedViewmap) next.getViewmap();
739
	String compartmentEditPartFQN = importManager.getImportedName(next.getEditPartQualifiedClassName());
740
%>
741
		if (childEditPart instanceof <%=compartmentEditPartFQN%>) {
742
			<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> pane = getPrimaryShape().<%=childViewmap.getGetterName()%>();
743
			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 
744
			pane.add(((<%=compartmentEditPartFQN%>)childEditPart).getFigure());
745
			return true;
746
		}
747
<%	
748
} // for pinned compartments
749
%>
750
		return false;
751
	}
752
753
	/**
754
	 * @generated
755
	 */
756
	protected boolean removeFixedChild(EditPart childEditPart) {
757
<%
758
//XXX: ignore labels assuming that they never may be removed
759
for (Iterator it = myHelper.getPinnedCompartments(); it.hasNext(); ) {
760
	GenCompartment next = (GenCompartment) it.next();
761
	final ParentAssignedViewmap childViewmap = (ParentAssignedViewmap) next.getViewmap();
762
	String compartmentEditPartFQN = importManager.getImportedName(next.getEditPartQualifiedClassName());
763
%>		
764
		if (childEditPart instanceof <%=compartmentEditPartFQN%>) {
765
			<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> pane = getPrimaryShape().<%=childViewmap.getGetterName()%>();
766
			pane.remove(((<%=compartmentEditPartFQN%>)childEditPart).getFigure());
767
			return true;
768
		}	
769
<%
770
} // for pinned compartments
771
%>
772
		return false;
773
	}
774
<%
775
} // if myHelper.hasFixedChildren()
776
%>
777
778
	/**
779
	 * @generated
780
	 */
781
	protected <%=importManager.getImportedName("org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure")%> createNodePlate() {
782
<%
783
int width = 40;
784
int height = 40;
785
DefaultSizeAttributes defSizeAttrs = (DefaultSizeAttributes) genNode.getViewmap().find(DefaultSizeAttributes.class);
786
if (defSizeAttrs != null) {
787
	width = defSizeAttrs.getWidth();
788
	height = defSizeAttrs.getHeight();
789
}
790
%>
791
		return new <%=importManager.getImportedName("org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure")%>(getMapMode().DPtoLP(<%=width%>), getMapMode().DPtoLP(<%=height%>));
792
	}
793
<%if (genNode.getViewmap().find(ResizeConstraints.class) != null) {
794
	final ResizeConstraints rc = (ResizeConstraints) genNode.getViewmap().find(ResizeConstraints.class);
795
	final String draw2dPC = importManager.getImportedName("org.eclipse.draw2d.PositionConstants");%>
796
797
	/**
798
	 * @generated
799
	 */
800
	public EditPolicy getPrimaryDragEditPolicy() {
801
		<%=importManager.getImportedName("org.eclipse.gef.editpolicies.ResizableEditPolicy")%> ep = (<%=importManager.getImportedName("org.eclipse.gef.editpolicies.ResizableEditPolicy")%>) super.getPrimaryDragEditPolicy();
802
		<%if (rc.getResizeHandleNames().isEmpty()) {%>
803
		ep.setResizeDirections(<%=draw2dPC%>.NONE);
804
		<% } else {%>
805
		ep.setResizeDirections(<%for (Iterator rcNamesIter = rc.getResizeHandleNames().iterator(); rcNamesIter.hasNext();) {
806
			String nextConstantName = (String) rcNamesIter.next();%><%=draw2dPC%>.<%=nextConstantName%><%if (rcNamesIter.hasNext()) {%> | <%}}%>);
807
				<%}%>
808
		return ep;
809
	}
810
<%}%>
811
	/**
812
	 * Creates figure for this edit part.
813
	 * 
814
	 * Body of this method does not depend on settings in generation model
815
	 * so you may safely remove <i>generated</i> tag and modify it.
816
	 * 
817
	 * @generated
818
	 */
819
	protected <%=importManager.getImportedName("org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure")%> createNodeFigure() {
820
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure")%> figure = createNodePlate();
821
<%
822
// [graphdef++]
823
if (generateSyncronizationCode) {
824
%>
825
		myNodeFigure = figure;
826
<%
827
}
828
// [graphdef--]
829
%>
830
		figure.setLayoutManager(new StackLayout());
831
		IFigure shape = createNodeShape();
832
		figure.add(shape);
833
		contentPane = setupContentPane(shape);
834
		return figure;
835
	}
836
	
837
	/**
838
	 * Default implementation treats passed figure as content pane.
839
	 * Respects layout one may have set for generated figure.
840
	 * @param nodeShape instance of generated figure class
841
	 * @generated
842
	 */
843
	protected IFigure setupContentPane(IFigure nodeShape) {
844
		if (nodeShape.getLayoutManager() == null) {
845
<%
846
if (isXYLayout) {
847
%>
848
		nodeShape.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayout")%>() {
849
850
			public Object getConstraint(IFigure figure) {
851
				Object result = constraints.get(figure);
852
				if (result == null) {
853
					result = new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>(0, 0, -1, -1);
854
				}
855
				return result;
856
			}
857
		});
858
<%} else {
859
	String layoutClassName = importManager.getImportedName("org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout");
860
%>
861
			<%=layoutClassName%> layout = new <%=layoutClassName%>();
862
			layout.setSpacing(getMapMode().DPtoLP(5));
863
			nodeShape.setLayoutManager(layout);
864
<%}%>
865
}
866
		return nodeShape; // use nodeShape itself as contentPane
867
	}
868
869
	/**
870
	 * @generated
871
	 */
872
	public IFigure getContentPane() {
873
		if (contentPane != null) {
874
			return contentPane;
875
		}
876
		return super.getContentPane();
877
	}
878
<%
879
if (myHelper.getPrimaryLabel() != null) {
880
	GenNodeLabel primaryLabel = myHelper.getPrimaryLabel();
881
%>
882
883
	/**
884
	 * @generated
885
	 */
886
	public <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> getPrimaryChildEditPart() {
887
		return getChildBySemanticHint(<%=importManager.getImportedName(genDiagram.getVisualIDRegistryQualifiedClassName())%>.getType(<%=importManager.getImportedName(primaryLabel.getEditPartQualifiedClassName())%>.VISUAL_ID));
888
	}
889
<%
890
}
891
if (myHelper.hasExternalLabels()){
892
%>
893
894
	/**
895
	 * @generated
896
	 */
897
	protected boolean isExternalLabel(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) {
898
<%
899
	for (Iterator externalLabels = myHelper.getExternalLabels(); externalLabels.hasNext();) {
900
		GenNodeLabel next = (GenNodeLabel) externalLabels.next();
901
%>
902
		if (childEditPart instanceof <%=importManager.getImportedName(next.getEditPartQualifiedClassName())%>) {
903
			return true;
904
		}
905
<%	}%>
906
		return false;
907
	}
908
909
	/**
910
	 * @generated
911
	 */
912
	protected IFigure getExternalLabelsContainer() {
913
		<%=importManager.getImportedName("org.eclipse.gef.editparts.LayerManager")%> root = (<%=importManager.getImportedName("org.eclipse.gef.editparts.LayerManager")%>) getRoot();
914
		return root.getLayer(<%=importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())%>.EXTERNAL_NODE_LABELS_LAYER);
915
	}
916
917
<%
918
}
919
if (myHelper.hasFixedChildren() || myHelper.hasExternalLabels()) {
920
%>
921
922
	/**
923
	 * @generated
924
	 */
925
	protected void addChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart, int index) {
926
<%	if (myHelper.hasExternalLabels()) {%>
927
		if (isExternalLabel(childEditPart)) {
928
			IFigure labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure();
929
			getExternalLabelsContainer().add(labelFigure);
930
			return;
931
		} 
932
<%
933
}
934
if (myHelper.hasFixedChildren()){
935
%>		
936
		if (addFixedChild(childEditPart)) {
937
			return;
938
		}
939
<%	}%>
940
		super.addChildVisual(childEditPart, -1);
941
	}
942
943
	/**
944
	 * @generated
945
	 */
946
	protected void removeChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) {
947
<%	if (myHelper.hasExternalLabels()) {%>
948
		if (isExternalLabel(childEditPart)) {
949
			IFigure labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure();
950
			getExternalLabelsContainer().remove(labelFigure);
951
			return;
952
		} 
953
<%
954
}
955
if (myHelper.hasFixedChildren()){
956
%>
957
		if (removeFixedChild(childEditPart)){
958
			return;
959
		}
960
<%	}%>
961
		super.removeChildVisual(childEditPart);
962
	}
963
<%	if (myHelper.hasExternalLabels()) {%>		
964
965
	/**
966
	 * @generated
967
	 */
968
	public void removeNotify() {
969
		for (<%=importManager.getImportedName("java.util.Iterator")%> it = getChildren().iterator(); it.hasNext();) {
970
			<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart = (<%=importManager.getImportedName("org.eclipse.gef.EditPart")%>) it.next();
971
			if (isExternalLabel(childEditPart)) {
972
				IFigure labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure();
973
				getExternalLabelsContainer().remove(labelFigure);
974
			}
975
		}
976
		super.removeNotify();
977
	}
978
<%
979
	}
980
} // if hasFixedChildren || hasExternalLabels
981
%>	
982
983
<%if (genNode.getViewmap() instanceof InnerClassViewmap) {%>
984
<%=((InnerClassViewmap) genNode.getViewmap()).getClassBody()%>
985
<%}%>
986
<%
987
// [graphdef++]
988
if (generateSyncronizationCode) {%>
989
	
990
	/**
991
	 * @generated
992
	 */
993
	protected <%=importManager.getImportedName("org.eclipse.draw2d.LayoutManager")%> getFigureLayoutManager() {
994
		return myFigure.getLayoutManager();
995
	}
996
997
	/**
998
	 * @generated
999
	 */
1000
	protected void setFigureLayoutManager(<%=importManager.getImportedName("org.eclipse.draw2d.LayoutManager")%> layoutManager) {
1001
		myFigure.setLayoutManager(layoutManager);
1002
	}
1003
	
1004
	/**
1005
	 * @generated
1006
	 */
1007
	protected void refreshBounds() {
1008
		if (((<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) getParent().getModel()).getElement() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.FigureMarker")%>) {
1009
			int width = ((Integer) getStructuralFeatureValue(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getSize_Width())).intValue();
1010
			int height = ((Integer) getStructuralFeatureValue(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getSize_Height())).intValue();
1011
			myNodeFigure.setPreferredSize(new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")%>(width, height));
1012
		} else {
1013
			super.refreshBounds();
1014
		}
1015
	}
1016
<%
1017
}
1018
// [graphdef--]
1019
%>
1020
}
1021
<%importManager.emitSortedImports();%>
(-)templates/parts/addFeaturePropertyChangeListeners.jetinc (-7 lines)
Removed Link Here
1
<%if (nextGenFeature.isListType()) {%>for (int i = 0; i < modelElement.<%=nextGenFeature.getGetAccessor()%>().size(); i++) {
2
	addListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener#" + i, <%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener, (<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) modelElement.<%=nextGenFeature.getGetAccessor()%>().get(i));
3
}
4
<%} else {%>if (modelElement.<%=nextGenFeature.getGetAccessor()%>() != null) {
5
	addListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener", <%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener, modelElement.<%=nextGenFeature.getGetAccessor()%>());
6
}
7
<%}%>
(-)templates/providers/additionalPropertiesProvider.javajet (-118 lines)
Removed Link Here
1
if (element instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Layoutable")%>) {
2
	<%=importManager.getImportedName("org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource")%> compositeSource = new <%=importManager.getImportedName("org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource")%>(element);
3
	compositeSource.addPropertySource(super.getPropertySource(element));
4
<%
5
String factoryAccessor = importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory") + ".eINSTANCE";
6
String providerFactoryAccessor = importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()) + ".getInstance().getItemProvidersAdapterFactory()";
7
String packageAccessor = importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphPackage") + ".eINSTANCE";
8
%>	
9
	class ChildMetaclassItemPropertyDescriptor extends <%=importManager.getImportedName("org.eclipse.emf.edit.provider.ItemPropertyDescriptor")%> {
10
	
11
		private <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>[] myValues;
12
	
13
		ChildMetaclassItemPropertyDescriptor(<%=importManager.getImportedName("org.eclipse.emf.common.notify.AdapterFactory")%> adapterFactory, String displayName, String description, <%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature, boolean isSettable, <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>[] valueInstances) {
14
			super(adapterFactory, displayName, description, feature, isSettable);
15
			myValues = valueInstances;
16
		}
17
		
18
		protected <%=importManager.getImportedName("java.util.Collection")%> getComboBoxObjects(Object object) {
19
			if (object instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) {
20
				<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> eObject = (<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) object;
21
				Object currentValue = getValue(eObject, feature);
22
				<%=importManager.getImportedName("java.util.Collection")%> result = new <%=importManager.getImportedName("java.util.ArrayList")%>();
23
				result.add(currentValue);	
24
				<%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> valueEClass = currentValue instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> ? ((<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) currentValue).eClass() : null;
25
				for (int i = 0; i < myValues.length; i++) {
26
					if (myValues[i].eClass() == valueEClass) {
27
						continue;
28
					}
29
					result.add(myValues[i]);	
30
				}
31
				if (currentValue != null) {
32
					result.add(null);
33
				}
34
				return result;
35
			}
36
			return null;
37
		}
38
		
39
		public void setPropertyValue(Object object, Object value) {
40
			if (value instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) {
41
				<%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> eClass =  ((<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) value).eClass();
42
				value = eClass.getEPackage().getEFactoryInstance().create(eClass);
43
				if (value instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%>) {
44
					<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%> xyLayoutData = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%>) value;
45
					xyLayoutData.setTopLeft(<%=factoryAccessor%>.createPoint());
46
					xyLayoutData.getTopLeft().setX(0);
47
					xyLayoutData.getTopLeft().setY(0);
48
					xyLayoutData.setSize(<%=factoryAccessor%>.createDimension());
49
					xyLayoutData.getSize().setDx(40);
50
					xyLayoutData.getSize().setDy(40);
51
				}
52
			}
53
			super.setPropertyValue(object, value);
54
		}
55
	}
56
	
57
	class SingleDescriptorPropertySource implements <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertySource")%> {
58
59
		private <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> myPropertyDescriptor;
60
		
61
		private <%=importManager.getImportedName("java.util.List")%> myDescriptors = new <%=importManager.getImportedName("java.util.LinkedList")%>();
62
63
		SingleDescriptorPropertySource(<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> propertyDescriptor) {
64
			myPropertyDescriptor = propertyDescriptor;
65
			myDescriptors.add(myPropertyDescriptor);
66
		}
67
		
68
		public <%=importManager.getImportedName("java.util.List")%> getPropertyDescriptors(Object object) {
69
			return myDescriptors;
70
		}
71
72
		public <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> getPropertyDescriptor(Object object, Object propertyID) {
73
			return myPropertyDescriptor;
74
		}
75
76
		public Object getEditableValue(Object object) {
77
			return object;
78
		}
79
					
80
	}
81
	
82
	<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> layoutPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(<%=providerFactoryAccessor%>, "Layout Manager", "Layout Manager", <%=packageAccessor%>.getLayoutable_Layout(), true, new <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>[] {<%=factoryAccessor%>.createBorderLayout(), <%=factoryAccessor%>.createCustomLayout(), <%=factoryAccessor%>.createFlowLayout(), <%=factoryAccessor%>.createGridLayout(), <%=factoryAccessor%>.createStackLayout(), <%=factoryAccessor%>.createXYLayout()});
83
	compositeSource.addPropertySource(new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource")%>(element, new SingleDescriptorPropertySource(layoutPropertyDescriptor), "EMF")); //$NON-NLS-1$
84
	<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> layoutDataPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(<%=providerFactoryAccessor%>, "Layout Data", "Layout Data", <%=packageAccessor%>.getLayoutable_LayoutData(), true, new <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>[] {<%=factoryAccessor%>.createBorderLayoutData(), <%=factoryAccessor%>.createCustomLayoutData(), <%=factoryAccessor%>.createGridLayoutData(), <%=factoryAccessor%>.createXYLayoutData()});
85
	compositeSource.addPropertySource(new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource")%>(element, new SingleDescriptorPropertySource(layoutDataPropertyDescriptor), "EMF")); //$NON-NLS-1$
86
87
	if (element instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Polyline")%>) {
88
		int counter = 1;
89
		for (<%=importManager.getImportedName("java.util.Iterator")%> it = ((<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Polyline")%>) element).getTemplate().iterator(); it.hasNext(); counter++) {
90
			<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Point")%> nextPoint = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Point")%>) it.next();
91
			final String titleX = "Point " + counter + " X";
92
			<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> nextPointPropertyDescriptorX = new <%=importManager.getImportedName("org.eclipse.emf.edit.provider.ItemPropertyDescriptor")%>(<%=providerFactoryAccessor%>, titleX, titleX, <%=packageAccessor%>.getPoint_X(), true, "Template");
93
			compositeSource.addPropertySource(new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource")%>(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorX), "EMF") {
94
				protected <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertyDescriptor")%> newPropertyDescriptor(<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> itemPropertyDescriptor) {
95
					return new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor")%>(object, itemPropertyDescriptor, getCategory()) {
96
						public Object getId() {
97
							return titleX;
98
						}
99
					};
100
				}
101
			});
102
103
			final String titleY = "Point " + counter + " Y";
104
			<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> nextPointPropertyDescriptorY = new <%=importManager.getImportedName("org.eclipse.emf.edit.provider.ItemPropertyDescriptor")%>(<%=providerFactoryAccessor%>, titleY, titleY, <%=packageAccessor%>.getPoint_Y(), true, "Template");
105
			compositeSource.addPropertySource(new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource")%>(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorY), "EMF") {
106
				protected <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertyDescriptor")%> newPropertyDescriptor(<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> itemPropertyDescriptor) {
107
					return new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor")%>(object, itemPropertyDescriptor, getCategory()) {
108
						public Object getId() {
109
							return titleY;
110
						}
111
					};
112
				}
113
			});
114
		}
115
	}
116
117
	return compositeSource;
118
}
(-)templates/providers/PropertyProvider.javajet (-70 lines)
Removed Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.providers" class="PropertyProviderGenerator"
2
    imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
6
%>
7
<%@ include file="../copyright4java.jetinc"%>
8
<%importManager.emitPackageStatement(stringBuffer);%>
9
10
import org.eclipse.emf.ecore.EObject;
11
import org.eclipse.gef.EditPart;
12
import org.eclipse.gmf.runtime.common.core.service.IOperation;
13
import org.eclipse.gmf.runtime.common.ui.services.properties.GetPropertySourceOperation;
14
import org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource;
15
import org.eclipse.gmf.runtime.common.ui.services.properties.IPropertiesProvider;
16
import org.eclipse.gmf.runtime.emf.ui.properties.providers.GenericEMFPropertiesProvider;
17
import org.eclipse.gmf.runtime.notation.View;
18
<%importManager.markImportLocation(stringBuffer);%>
19
20
/**
21
 * @generated
22
 */
23
public class <%=genDiagram.getPropertyProviderClassName()%> extends GenericEMFPropertiesProvider implements IPropertiesProvider {
24
25
	/**
26
	 * @generated
27
	 */
28
	public boolean provides(IOperation operation) {
29
		if (operation instanceof GetPropertySourceOperation) {
30
			Object object = ((GetPropertySourceOperation) operation).getObject();
31
			return getSemanticElement(object) != null;
32
		}
33
		return false;
34
	}
35
36
	/**
37
	 * @generated
38
	 */
39
	public ICompositePropertySource getPropertySource(Object object) {
40
		EObject element = getSemanticElement(object);
41
		if (element != null) {
42
<%// [graphdef++]%>
43
<%@ include file="additionalPropertiesProvider.javajet"%>
44
<%// [graphdef--]%>
45
			return super.getPropertySource(element);
46
		}
47
		return null;
48
	}
49
50
	/**
51
	 * @generated
52
	 */
53
	protected EObject getSemanticElement(Object object) {
54
		View view = null;
55
		if (object instanceof View) {
56
			view = (View) object;
57
		} else if (object instanceof EditPart) {
58
			EditPart editPart = (EditPart) object;
59
			if (editPart.getModel() instanceof View) {
60
				view = (View) editPart.getModel();
61
			}
62
		}
63
		if (view != null && <%=importManager.getImportedName(genDiagram.getEditPartQualifiedClassName())%>.MODEL_ID.equals(<%=importManager.getImportedName(genDiagram.getVisualIDRegistryQualifiedClassName())%>.getModelID(view))) {
64
			return view.getElement();
65
		}
66
		return null;
67
	}
68
	
69
}
70
<%importManager.emitSortedImports();%>
(-)models/graphdef.gmfmap (-5 / +9 lines)
Lines 3-9 Link Here
3
    xmlns:xmi="http://www.omg.org/XMI"
3
    xmlns:xmi="http://www.omg.org/XMI"
4
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
5
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
6
    xmlns:gmfmap="http://www.eclipse.org/gmf/2005/mappings"
6
    xmlns:gmfmap="http://www.eclipse.org/gmf/2005/mappings/2.0"
7
    xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">
7
    xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">
8
  <nodes>
8
  <nodes>
9
    <containmentFeature
9
    <containmentFeature
Lines 11-17 Link Here
11
    <ownedChild>
11
    <ownedChild>
12
      <domainMetaElement
12
      <domainMetaElement
13
          href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.ecore#//Compartment"/>
13
          href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.ecore#//Compartment"/>
14
      <labelMappings>
14
      <labelMappings
15
          xsi:type="gmfmap:FeatureLabelMapping">
15
        <diagramLabel
16
        <diagramLabel
16
            href="graphdef.gmfgraph#DiagramElementNode_Name"/>
17
            href="graphdef.gmfgraph#DiagramElementNode_Name"/>
17
        <features
18
        <features
Lines 34-40 Link Here
34
    <ownedChild>
35
    <ownedChild>
35
      <domainMetaElement
36
      <domainMetaElement
36
          href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.ecore#//Node"/>
37
          href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.ecore#//Node"/>
37
      <labelMappings>
38
      <labelMappings
39
          xsi:type="gmfmap:FeatureLabelMapping">
38
        <diagramLabel
40
        <diagramLabel
39
            href="graphdef.gmfgraph#DiagramElementNode_Name"/>
41
            href="graphdef.gmfgraph#DiagramElementNode_Name"/>
40
        <features
42
        <features
Lines 57-63 Link Here
57
    <ownedChild>
59
    <ownedChild>
58
      <domainMetaElement
60
      <domainMetaElement
59
          href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.ecore#//Connection"/>
61
          href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.ecore#//Connection"/>
60
      <labelMappings>
62
      <labelMappings
63
          xsi:type="gmfmap:FeatureLabelMapping">
61
        <diagramLabel
64
        <diagramLabel
62
            href="graphdef.gmfgraph#DiagramElementNode_Name"/>
65
            href="graphdef.gmfgraph#DiagramElementNode_Name"/>
63
        <features
66
        <features
Lines 80-86 Link Here
80
    <ownedChild>
83
    <ownedChild>
81
      <domainMetaElement
84
      <domainMetaElement
82
          href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.ecore#//FigureGallery"/>
85
          href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.ecore#//FigureGallery"/>
83
      <labelMappings>
86
      <labelMappings
87
          xsi:type="gmfmap:FeatureLabelMapping">
84
        <diagramLabel
88
        <diagramLabel
85
            href="graphdef.gmfgraph#FigureGalleryNode_Name"/>
89
            href="graphdef.gmfgraph#FigureGalleryNode_Name"/>
86
        <features
90
        <features
(-)models/graphdef.gmfgen (-17 / +317 lines)
Lines 2-8 Link Here
2
<gmfgen:GenEditorGenerator xmi:version="2.0"
2
<gmfgen:GenEditorGenerator xmi:version="2.0"
3
    xmlns:xmi="http://www.omg.org/XMI"
3
    xmlns:xmi="http://www.omg.org/XMI"
4
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
    xmlns:gmfgen="http://www.eclipse.org/gmf/2005/GenModel" packageNamePrefix="org.eclipse.gmf.graphdef.editor"
5
    xmlns:gmfgen="http://www.eclipse.org/gmf/2005/GenModel/2.0" packageNamePrefix="org.eclipse.gmf.graphdef.editor"
6
    modelID="GMFGraph"
6
    modelID="GMFGraph"
7
    dynamicTemplates="true"
7
    dynamicTemplates="true"
8
    templateDirectory="/org.eclipse.gmf.graphdef.editor/templates/"
8
    templateDirectory="/org.eclipse.gmf.graphdef.editor/templates/"
Lines 12-19 Link Here
12
      editPartClassName="CanvasEditPart"
12
      editPartClassName="CanvasEditPart"
13
      itemSemanticEditPolicyClassName="CanvasItemSemanticEditPolicy"
13
      itemSemanticEditPolicyClassName="CanvasItemSemanticEditPolicy"
14
      notationViewFactoryClassName="CanvasViewFactory"
14
      notationViewFactoryClassName="CanvasViewFactory"
15
      iconProviderPriority="Low"
16
      canonicalEditPolicyClassName="CanvasCanonicalEditPolicy"
15
      canonicalEditPolicyClassName="CanvasCanonicalEditPolicy"
16
      iconProviderPriority="Low"
17
      validationProviderPriority="Low"
17
      creationWizardCategoryID="org.eclipse.ui.Examples/org.eclipse.gmf.examples">
18
      creationWizardCategoryID="org.eclipse.ui.Examples/org.eclipse.gmf.examples">
18
    <diagramRunTimeClass
19
    <diagramRunTimeClass
19
        href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
20
        href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
Lines 32-40 Link Here
32
        editPartClassName="RectangleEditPart"
33
        editPartClassName="RectangleEditPart"
33
        itemSemanticEditPolicyClassName="RectangleItemSemanticEditPolicy"
34
        itemSemanticEditPolicyClassName="RectangleItemSemanticEditPolicy"
34
        notationViewFactoryClassName="RectangleViewFactory"
35
        notationViewFactoryClassName="RectangleViewFactory"
35
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
36
        canonicalEditPolicyClassName="RectangleCanonicalEditPolicy"
36
        canonicalEditPolicyClassName="RectangleCanonicalEditPolicy"
37
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
37
        graphicalNodeEditPolicyClassName="RectangleGraphicalNodeEditPolicy"
38
        graphicalNodeEditPolicyClassName="RectangleGraphicalNodeEditPolicy"
39
        createCommandClassName="RectangleCreateCommand"
38
        containers="//@diagram/@compartments.3">
40
        containers="//@diagram/@compartments.3">
39
      <diagramRunTimeClass
41
      <diagramRunTimeClass
40
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
42
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
Lines 67-75 Link Here
67
        editPartClassName="Rectangle2EditPart"
69
        editPartClassName="Rectangle2EditPart"
68
        itemSemanticEditPolicyClassName="Rectangle2ItemSemanticEditPolicy"
70
        itemSemanticEditPolicyClassName="Rectangle2ItemSemanticEditPolicy"
69
        notationViewFactoryClassName="Rectangle2ViewFactory"
71
        notationViewFactoryClassName="Rectangle2ViewFactory"
70
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
71
        canonicalEditPolicyClassName="Rectangle2CanonicalEditPolicy"
72
        canonicalEditPolicyClassName="Rectangle2CanonicalEditPolicy"
73
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
72
        graphicalNodeEditPolicyClassName="Rectangle2GraphicalNodeEditPolicy"
74
        graphicalNodeEditPolicyClassName="Rectangle2GraphicalNodeEditPolicy"
75
        createCommandClassName="Rectangle2CreateCommand"
73
        containers="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6">
76
        containers="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6">
74
      <diagramRunTimeClass
77
      <diagramRunTimeClass
75
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
78
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
Lines 103-111 Link Here
103
        editPartClassName="EllipseEditPart"
106
        editPartClassName="EllipseEditPart"
104
        itemSemanticEditPolicyClassName="EllipseItemSemanticEditPolicy"
107
        itemSemanticEditPolicyClassName="EllipseItemSemanticEditPolicy"
105
        notationViewFactoryClassName="EllipseViewFactory"
108
        notationViewFactoryClassName="EllipseViewFactory"
106
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
107
        canonicalEditPolicyClassName="EllipseCanonicalEditPolicy"
109
        canonicalEditPolicyClassName="EllipseCanonicalEditPolicy"
110
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
108
        graphicalNodeEditPolicyClassName="EllipseGraphicalNodeEditPolicy"
111
        graphicalNodeEditPolicyClassName="EllipseGraphicalNodeEditPolicy"
112
        createCommandClassName="EllipseCreateCommand"
109
        containers="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6">
113
        containers="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6">
110
      <diagramRunTimeClass
114
      <diagramRunTimeClass
111
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
115
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
Lines 138-146 Link Here
138
        editPartClassName="RoundedRectangleEditPart"
142
        editPartClassName="RoundedRectangleEditPart"
139
        itemSemanticEditPolicyClassName="RoundedRectangleItemSemanticEditPolicy"
143
        itemSemanticEditPolicyClassName="RoundedRectangleItemSemanticEditPolicy"
140
        notationViewFactoryClassName="RoundedRectangleViewFactory"
144
        notationViewFactoryClassName="RoundedRectangleViewFactory"
141
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
142
        canonicalEditPolicyClassName="RoundedRectangleCanonicalEditPolicy"
145
        canonicalEditPolicyClassName="RoundedRectangleCanonicalEditPolicy"
146
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
143
        graphicalNodeEditPolicyClassName="RoundedRectangleGraphicalNodeEditPolicy"
147
        graphicalNodeEditPolicyClassName="RoundedRectangleGraphicalNodeEditPolicy"
148
        createCommandClassName="RoundedRectangleCreateCommand"
144
        containers="//@diagram/@childNodes.3 //@diagram/@childNodes.2 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6">
149
        containers="//@diagram/@childNodes.3 //@diagram/@childNodes.2 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6">
145
      <diagramRunTimeClass
150
      <diagramRunTimeClass
146
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
151
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
Lines 175-180 Link Here
175
        notationViewFactoryClassName="PolylineViewFactory"
180
        notationViewFactoryClassName="PolylineViewFactory"
176
        canonicalEditPolicyClassName="PolylineCanonicalEditPolicy"
181
        canonicalEditPolicyClassName="PolylineCanonicalEditPolicy"
177
        graphicalNodeEditPolicyClassName="PolylineGraphicalNodeEditPolicy"
182
        graphicalNodeEditPolicyClassName="PolylineGraphicalNodeEditPolicy"
183
        createCommandClassName="PolylineCreateCommand"
178
        containers="//@diagram/@childNodes.3 //@diagram/@childNodes.2 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6">
184
        containers="//@diagram/@childNodes.3 //@diagram/@childNodes.2 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6">
179
      <diagramRunTimeClass
185
      <diagramRunTimeClass
180
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
186
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
Lines 205-213 Link Here
205
        editPartClassName="Ellipse2EditPart"
211
        editPartClassName="Ellipse2EditPart"
206
        itemSemanticEditPolicyClassName="Ellipse2ItemSemanticEditPolicy"
212
        itemSemanticEditPolicyClassName="Ellipse2ItemSemanticEditPolicy"
207
        notationViewFactoryClassName="Ellipse2ViewFactory"
213
        notationViewFactoryClassName="Ellipse2ViewFactory"
208
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
209
        canonicalEditPolicyClassName="Ellipse2CanonicalEditPolicy"
214
        canonicalEditPolicyClassName="Ellipse2CanonicalEditPolicy"
215
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
210
        graphicalNodeEditPolicyClassName="Ellipse2GraphicalNodeEditPolicy"
216
        graphicalNodeEditPolicyClassName="Ellipse2GraphicalNodeEditPolicy"
217
        createCommandClassName="Ellipse2CreateCommand"
211
        containers="//@diagram/@compartments.3">
218
        containers="//@diagram/@compartments.3">
212
      <diagramRunTimeClass
219
      <diagramRunTimeClass
213
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
220
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
Lines 241-249 Link Here
241
        editPartClassName="RoundedRectangle2EditPart"
248
        editPartClassName="RoundedRectangle2EditPart"
242
        itemSemanticEditPolicyClassName="RoundedRectangle2ItemSemanticEditPolicy"
249
        itemSemanticEditPolicyClassName="RoundedRectangle2ItemSemanticEditPolicy"
243
        notationViewFactoryClassName="RoundedRectangle2ViewFactory"
250
        notationViewFactoryClassName="RoundedRectangle2ViewFactory"
244
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
245
        canonicalEditPolicyClassName="RoundedRectangle2CanonicalEditPolicy"
251
        canonicalEditPolicyClassName="RoundedRectangle2CanonicalEditPolicy"
252
        childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4"
246
        graphicalNodeEditPolicyClassName="RoundedRectangle2GraphicalNodeEditPolicy"
253
        graphicalNodeEditPolicyClassName="RoundedRectangle2GraphicalNodeEditPolicy"
254
        createCommandClassName="RoundedRectangle2CreateCommand"
247
        containers="//@diagram/@compartments.3">
255
        containers="//@diagram/@compartments.3">
248
      <diagramRunTimeClass
256
      <diagramRunTimeClass
249
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
257
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
Lines 279-284 Link Here
279
        notationViewFactoryClassName="Polyline2ViewFactory"
287
        notationViewFactoryClassName="Polyline2ViewFactory"
280
        canonicalEditPolicyClassName="Polyline2CanonicalEditPolicy"
288
        canonicalEditPolicyClassName="Polyline2CanonicalEditPolicy"
281
        graphicalNodeEditPolicyClassName="Polyline2GraphicalNodeEditPolicy"
289
        graphicalNodeEditPolicyClassName="Polyline2GraphicalNodeEditPolicy"
290
        createCommandClassName="Polyline2CreateCommand"
282
        containers="//@diagram/@compartments.3">
291
        containers="//@diagram/@compartments.3">
283
      <diagramRunTimeClass
292
      <diagramRunTimeClass
284
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
293
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
Lines 312-318 Link Here
312
        notationViewFactoryClassName="CompartmentViewFactory"
321
        notationViewFactoryClassName="CompartmentViewFactory"
313
        canonicalEditPolicyClassName="CompartmentCanonicalEditPolicy"
322
        canonicalEditPolicyClassName="CompartmentCanonicalEditPolicy"
314
        compartments="//@diagram/@compartments.0"
323
        compartments="//@diagram/@compartments.0"
315
        graphicalNodeEditPolicyClassName="CompartmentGraphicalNodeEditPolicy">
324
        graphicalNodeEditPolicyClassName="CompartmentGraphicalNodeEditPolicy"
325
        createCommandClassName="CompartmentCreateCommand">
316
      <diagramRunTimeClass
326
      <diagramRunTimeClass
317
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
327
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
318
      <elementType
328
      <elementType
Lines 347-353 Link Here
347
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel"/>
357
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel"/>
348
        <modelFacet
358
        <modelFacet
349
            xsi:type="gmfgen:FeatureLabelModelFacet">
359
            xsi:type="gmfgen:FeatureLabelModelFacet">
350
          <metaFeature
360
          <metaFeatures
351
              href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#//gmfgraph/Identity/name"/>
361
              href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#//gmfgraph/Identity/name"/>
352
        </modelFacet>
362
        </modelFacet>
353
      </labels>
363
      </labels>
Lines 359-365 Link Here
359
        notationViewFactoryClassName="NodeViewFactory"
369
        notationViewFactoryClassName="NodeViewFactory"
360
        canonicalEditPolicyClassName="NodeCanonicalEditPolicy"
370
        canonicalEditPolicyClassName="NodeCanonicalEditPolicy"
361
        compartments="//@diagram/@compartments.1"
371
        compartments="//@diagram/@compartments.1"
362
        graphicalNodeEditPolicyClassName="NodeGraphicalNodeEditPolicy">
372
        graphicalNodeEditPolicyClassName="NodeGraphicalNodeEditPolicy"
373
        createCommandClassName="NodeCreateCommand">
363
      <diagramRunTimeClass
374
      <diagramRunTimeClass
364
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
375
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
365
      <elementType
376
      <elementType
Lines 394-400 Link Here
394
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel"/>
405
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel"/>
395
        <modelFacet
406
        <modelFacet
396
            xsi:type="gmfgen:FeatureLabelModelFacet">
407
            xsi:type="gmfgen:FeatureLabelModelFacet">
397
          <metaFeature
408
          <metaFeatures
398
              href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#//gmfgraph/Identity/name"/>
409
              href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#//gmfgraph/Identity/name"/>
399
        </modelFacet>
410
        </modelFacet>
400
      </labels>
411
      </labels>
Lines 406-412 Link Here
406
        notationViewFactoryClassName="ConnectionViewFactory"
417
        notationViewFactoryClassName="ConnectionViewFactory"
407
        canonicalEditPolicyClassName="ConnectionCanonicalEditPolicy"
418
        canonicalEditPolicyClassName="ConnectionCanonicalEditPolicy"
408
        compartments="//@diagram/@compartments.2"
419
        compartments="//@diagram/@compartments.2"
409
        graphicalNodeEditPolicyClassName="ConnectionGraphicalNodeEditPolicy">
420
        graphicalNodeEditPolicyClassName="ConnectionGraphicalNodeEditPolicy"
421
        createCommandClassName="ConnectionCreateCommand">
410
      <diagramRunTimeClass
422
      <diagramRunTimeClass
411
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
423
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
412
      <elementType
424
      <elementType
Lines 441-447 Link Here
441
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel"/>
453
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel"/>
442
        <modelFacet
454
        <modelFacet
443
            xsi:type="gmfgen:FeatureLabelModelFacet">
455
            xsi:type="gmfgen:FeatureLabelModelFacet">
444
          <metaFeature
456
          <metaFeatures
445
              href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#//gmfgraph/Identity/name"/>
457
              href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#//gmfgraph/Identity/name"/>
446
        </modelFacet>
458
        </modelFacet>
447
      </labels>
459
      </labels>
Lines 453-459 Link Here
453
        notationViewFactoryClassName="FigureGalleryViewFactory"
465
        notationViewFactoryClassName="FigureGalleryViewFactory"
454
        canonicalEditPolicyClassName="FigureGalleryCanonicalEditPolicy"
466
        canonicalEditPolicyClassName="FigureGalleryCanonicalEditPolicy"
455
        compartments="//@diagram/@compartments.3"
467
        compartments="//@diagram/@compartments.3"
456
        graphicalNodeEditPolicyClassName="FigureGalleryGraphicalNodeEditPolicy">
468
        graphicalNodeEditPolicyClassName="FigureGalleryGraphicalNodeEditPolicy"
469
        createCommandClassName="FigureGalleryCreateCommand">
457
      <diagramRunTimeClass
470
      <diagramRunTimeClass
458
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
471
          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
459
      <elementType
472
      <elementType
Lines 488-494 Link Here
488
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel"/>
501
            figureQualifiedClassName="org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel"/>
489
        <modelFacet
502
        <modelFacet
490
            xsi:type="gmfgen:FeatureLabelModelFacet">
503
            xsi:type="gmfgen:FeatureLabelModelFacet">
491
          <metaFeature
504
          <metaFeatures
492
              href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#//gmfgraph/Identity/name"/>
505
              href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#//gmfgraph/Identity/name"/>
493
        </modelFacet>
506
        </modelFacet>
494
      </labels>
507
      </labels>
Lines 572-579 Link Here
572
        editPartClassName="FigureGalleryFiguresEditPart"
585
        editPartClassName="FigureGalleryFiguresEditPart"
573
        itemSemanticEditPolicyClassName="FigureGalleryFiguresItemSemanticEditPolicy"
586
        itemSemanticEditPolicyClassName="FigureGalleryFiguresItemSemanticEditPolicy"
574
        notationViewFactoryClassName="FigureGalleryFiguresViewFactory"
587
        notationViewFactoryClassName="FigureGalleryFiguresViewFactory"
575
        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6 //@diagram/@childNodes.7"
576
        canonicalEditPolicyClassName="FigureGalleryFiguresCanonicalEditPolicy"
588
        canonicalEditPolicyClassName="FigureGalleryFiguresCanonicalEditPolicy"
589
        childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6 //@diagram/@childNodes.7"
577
        title="Figures"
590
        title="Figures"
578
        node="//@diagram/@topLevelNodes.3"
591
        node="//@diagram/@topLevelNodes.3"
579
        listLayout="false">
592
        listLayout="false">
Lines 647-657 Link Here
647
            genNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.7"/>
660
            genNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.7"/>
648
      </groups>
661
      </groups>
649
    </palette>
662
    </palette>
663
    <preferencePages
664
        xsi:type="gmfgen:GenStandardPreferencePage"
665
        iD="org.eclipse.gmf.graphdef.diagram.general"
666
        name="GMFGraph Diagram">
667
      <children
668
          xsi:type="gmfgen:GenStandardPreferencePage"
669
          iD="org.eclipse.gmf.graphdef.diagram.appearance"
670
          name="Appearance"
671
          kind="Appearance"/>
672
      <children
673
          xsi:type="gmfgen:GenStandardPreferencePage"
674
          iD="org.eclipse.gmf.graphdef.diagram.connections"
675
          name="Connections"
676
          kind="Connections"/>
677
      <children
678
          xsi:type="gmfgen:GenStandardPreferencePage"
679
          iD="org.eclipse.gmf.graphdef.diagram.printing"
680
          name="Printing"
681
          kind="Printing"/>
682
      <children
683
          xsi:type="gmfgen:GenStandardPreferencePage"
684
          iD="org.eclipse.gmf.graphdef.diagram.rulersAndGrid"
685
          name="Rulers And Grid"
686
          kind="RulersAndGrid"/>
687
      <children
688
          xsi:type="gmfgen:GenStandardPreferencePage"
689
          iD="org.eclipse.gmf.graphdef.diagram.pathmaps"
690
          name="Pathmaps"
691
          kind="Pathmaps"/>
692
    </preferencePages>
650
  </diagram>
693
  </diagram>
651
  <plugin
694
  <plugin
652
      iD="org.eclipse.gmf.graphdef.editor"
695
      iD="org.eclipse.gmf.graphdef.editor"
653
      name="gmfgraph Plugin"/>
696
      name="gmfgraph Plugin"/>
654
  <editor/>
697
  <editor/>
698
  <navigator>
699
    <childReferences
700
        child="//@diagram"/>
701
    <childReferences
702
        parent="//@diagram"
703
        child="//@diagram/@topLevelNodes.0"/>
704
    <childReferences
705
        parent="//@diagram"
706
        child="//@diagram/@topLevelNodes.1"/>
707
    <childReferences
708
        parent="//@diagram"
709
        child="//@diagram/@topLevelNodes.2"/>
710
    <childReferences
711
        parent="//@diagram/@childNodes.1"
712
        child="//@diagram/@childNodes.1"/>
713
    <childReferences
714
        parent="//@diagram/@childNodes.2"
715
        child="//@diagram/@childNodes.1"/>
716
    <childReferences
717
        parent="//@diagram/@childNodes.2"
718
        child="//@diagram/@childNodes.2"/>
719
    <childReferences
720
        parent="//@diagram/@childNodes.3"
721
        child="//@diagram/@childNodes.1"/>
722
    <childReferences
723
        parent="//@diagram/@childNodes.3"
724
        child="//@diagram/@childNodes.2"/>
725
    <childReferences
726
        parent="//@diagram/@childNodes.3"
727
        child="//@diagram/@childNodes.3"/>
728
    <childReferences
729
        parent="//@diagram/@childNodes.3"
730
        child="//@diagram/@childNodes.4"/>
731
    <childReferences
732
        parent="//@diagram/@childNodes.2"
733
        child="//@diagram/@childNodes.3"/>
734
    <childReferences
735
        parent="//@diagram/@childNodes.2"
736
        child="//@diagram/@childNodes.4"/>
737
    <childReferences
738
        parent="//@diagram/@childNodes.1"
739
        child="//@diagram/@childNodes.2"/>
740
    <childReferences
741
        parent="//@diagram/@childNodes.1"
742
        child="//@diagram/@childNodes.3"/>
743
    <childReferences
744
        parent="//@diagram/@childNodes.1"
745
        child="//@diagram/@childNodes.4"/>
746
    <childReferences
747
        parent="//@diagram/@childNodes.0"
748
        child="//@diagram/@childNodes.1"/>
749
    <childReferences
750
        parent="//@diagram/@childNodes.0"
751
        child="//@diagram/@childNodes.2"/>
752
    <childReferences
753
        parent="//@diagram/@childNodes.0"
754
        child="//@diagram/@childNodes.3"/>
755
    <childReferences
756
        parent="//@diagram/@childNodes.0"
757
        child="//@diagram/@childNodes.4"/>
758
    <childReferences
759
        parent="//@diagram/@topLevelNodes.3"
760
        child="//@diagram/@childNodes.0"/>
761
    <childReferences
762
        parent="//@diagram/@childNodes.5"
763
        child="//@diagram/@childNodes.1"/>
764
    <childReferences
765
        parent="//@diagram/@childNodes.5"
766
        child="//@diagram/@childNodes.2"/>
767
    <childReferences
768
        parent="//@diagram/@childNodes.5"
769
        child="//@diagram/@childNodes.3"/>
770
    <childReferences
771
        parent="//@diagram/@childNodes.5"
772
        child="//@diagram/@childNodes.4"/>
773
    <childReferences
774
        parent="//@diagram/@topLevelNodes.3"
775
        child="//@diagram/@childNodes.5"/>
776
    <childReferences
777
        parent="//@diagram/@childNodes.6"
778
        child="//@diagram/@childNodes.1"/>
779
    <childReferences
780
        parent="//@diagram/@childNodes.6"
781
        child="//@diagram/@childNodes.2"/>
782
    <childReferences
783
        parent="//@diagram/@childNodes.6"
784
        child="//@diagram/@childNodes.3"/>
785
    <childReferences
786
        parent="//@diagram/@childNodes.6"
787
        child="//@diagram/@childNodes.4"/>
788
    <childReferences
789
        parent="//@diagram/@topLevelNodes.3"
790
        child="//@diagram/@childNodes.6"/>
791
    <childReferences
792
        parent="//@diagram/@topLevelNodes.3"
793
        child="//@diagram/@childNodes.7"/>
794
    <childReferences
795
        parent="//@diagram"
796
        child="//@diagram/@topLevelNodes.3"/>
797
    <childReferences
798
        parent="//@diagram"
799
        child="//@diagram/@links.0"
800
        groupName="links"
801
        groupIcon="icons/linksNavigatorGroup.gif"/>
802
    <childReferences
803
        parent="//@diagram/@links.0"
804
        child="//@diagram/@childNodes.0"
805
        referenceType="out_taget"
806
        groupName="target"
807
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
808
    <childReferences
809
        parent="//@diagram/@childNodes.0"
810
        child="//@diagram/@links.0"
811
        referenceType="in_source"
812
        groupName="incoming links"
813
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
814
    <childReferences
815
        parent="//@diagram/@links.0"
816
        child="//@diagram/@childNodes.1"
817
        referenceType="out_taget"
818
        groupName="target"
819
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
820
    <childReferences
821
        parent="//@diagram/@childNodes.1"
822
        child="//@diagram/@links.0"
823
        referenceType="in_source"
824
        groupName="incoming links"
825
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
826
    <childReferences
827
        parent="//@diagram/@links.0"
828
        child="//@diagram/@childNodes.2"
829
        referenceType="out_taget"
830
        groupName="target"
831
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
832
    <childReferences
833
        parent="//@diagram/@childNodes.2"
834
        child="//@diagram/@links.0"
835
        referenceType="in_source"
836
        groupName="incoming links"
837
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
838
    <childReferences
839
        parent="//@diagram/@links.0"
840
        child="//@diagram/@childNodes.3"
841
        referenceType="out_taget"
842
        groupName="target"
843
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
844
    <childReferences
845
        parent="//@diagram/@childNodes.3"
846
        child="//@diagram/@links.0"
847
        referenceType="in_source"
848
        groupName="incoming links"
849
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
850
    <childReferences
851
        parent="//@diagram/@links.0"
852
        child="//@diagram/@childNodes.4"
853
        referenceType="out_taget"
854
        groupName="target"
855
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
856
    <childReferences
857
        parent="//@diagram/@childNodes.4"
858
        child="//@diagram/@links.0"
859
        referenceType="in_source"
860
        groupName="incoming links"
861
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
862
    <childReferences
863
        parent="//@diagram/@links.0"
864
        child="//@diagram/@childNodes.5"
865
        referenceType="out_taget"
866
        groupName="target"
867
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
868
    <childReferences
869
        parent="//@diagram/@childNodes.5"
870
        child="//@diagram/@links.0"
871
        referenceType="in_source"
872
        groupName="incoming links"
873
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
874
    <childReferences
875
        parent="//@diagram/@links.0"
876
        child="//@diagram/@childNodes.6"
877
        referenceType="out_taget"
878
        groupName="target"
879
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
880
    <childReferences
881
        parent="//@diagram/@childNodes.6"
882
        child="//@diagram/@links.0"
883
        referenceType="in_source"
884
        groupName="incoming links"
885
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
886
    <childReferences
887
        parent="//@diagram/@links.0"
888
        child="//@diagram/@childNodes.7"
889
        referenceType="out_taget"
890
        groupName="target"
891
        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
892
    <childReferences
893
        parent="//@diagram/@childNodes.7"
894
        child="//@diagram/@links.0"
895
        referenceType="in_source"
896
        groupName="incoming links"
897
        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
898
    <childReferences
899
        parent="//@diagram/@links.0"
900
        child="//@diagram/@topLevelNodes.0"
901
        referenceType="in_source"
902
        groupName="source"
903
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
904
    <childReferences
905
        parent="//@diagram/@topLevelNodes.0"
906
        child="//@diagram/@links.0"
907
        referenceType="out_taget"
908
        groupName="outgoing links"
909
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
910
    <childReferences
911
        parent="//@diagram/@links.0"
912
        child="//@diagram/@topLevelNodes.1"
913
        referenceType="in_source"
914
        groupName="source"
915
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
916
    <childReferences
917
        parent="//@diagram/@topLevelNodes.1"
918
        child="//@diagram/@links.0"
919
        referenceType="out_taget"
920
        groupName="outgoing links"
921
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
922
    <childReferences
923
        parent="//@diagram/@links.0"
924
        child="//@diagram/@topLevelNodes.2"
925
        referenceType="in_source"
926
        groupName="source"
927
        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
928
    <childReferences
929
        parent="//@diagram/@topLevelNodes.2"
930
        child="//@diagram/@links.0"
931
        referenceType="out_taget"
932
        groupName="outgoing links"
933
        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
934
  </navigator>
935
  <propertySheet>
936
    <tabs
937
        xsi:type="gmfgen:GenStandardPropertyTab"
938
        iD="appearance"/>
939
    <tabs
940
        xsi:type="gmfgen:GenStandardPropertyTab"
941
        iD="diagram"
942
        label="Rulers &amp; Grid"/>
943
    <tabs
944
        xsi:type="gmfgen:GenCustomPropertyTab"
945
        iD="domain"
946
        label="Core">
947
      <filter
948
          xsi:type="gmfgen:TypeTabFilter">
949
        <types>org.eclipse.gmf.runtime.notation.View</types>
950
        <types>org.eclipse.gef.EditPart</types>
951
        <generatedTypes>abstractNavigatorItem</generatedTypes>
952
      </filter>
953
    </tabs>
954
  </propertySheet>
655
  <domainGenModel
955
  <domainGenModel
656
      href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#/"/>
956
      href="../../../plugin/org.eclipse.gmf.graphdef/models/gmfgraph.genmodel#/"/>
657
</gmfgen:GenEditorGenerator>
957
</gmfgen:GenEditorGenerator>
(-)templates/common.skeleton (-207 lines)
Removed Link Here
1
public class CLASS {
2
3
// [graphdef++]
4
	private java.util.Map myMethodsMap;
5
	
6
	private java.util.Set mySkippedDataTypeFeatures;
7
	
8
	private java.util.Set myAllowedNonDataTypeFeatures;
9
10
	private java.util.Map getMethodsMap() {
11
		if (myMethodsMap == null) {
12
			myMethodsMap = new java.util.HashMap();
13
			myMethodsMap.put("XorFill", "myFigure.setFillXOR");
14
			myMethodsMap.put("XorOutline", "myFigure.setOutlineXOR");
15
			myMethodsMap.put("LineKind", "myFigure.setLineStyle");
16
			myMethodsMap.put("CornerWidth", "myFigure.setCornerDimensions");
17
			myMethodsMap.put("CornerHeight", "myFigure.setCornerDimensions");
18
			myMethodsMap.put("Template", "myFigure.setPoints");
19
		}
20
		return myMethodsMap;
21
	}
22
	
23
	private java.util.Set getSkippedDataTypeFeatures() {
24
		if (mySkippedDataTypeFeatures == null) {
25
			mySkippedDataTypeFeatures = new java.util.HashSet();
26
			mySkippedDataTypeFeatures.add("name");
27
		}
28
		return mySkippedDataTypeFeatures;
29
	}
30
	
31
	private java.util.Set getAllowedNonDataTypeFeatures() {
32
		if (myAllowedNonDataTypeFeatures == null) {
33
			myAllowedNonDataTypeFeatures = new java.util.HashSet();
34
			myAllowedNonDataTypeFeatures.add("layout");
35
			myAllowedNonDataTypeFeatures.add("layoutData");
36
			myAllowedNonDataTypeFeatures.add("layout");
37
			myAllowedNonDataTypeFeatures.add("template");
38
		}
39
		return myAllowedNonDataTypeFeatures;
40
	}
41
	
42
	protected final boolean skip(GenFeature feature) {
43
		if (feature.getTypeGenClassifier() instanceof GenDataType) {
44
			return getSkippedDataTypeFeatures().contains(feature.getName());
45
		}
46
		return !getAllowedNonDataTypeFeatures().contains(feature.getName());
47
	}
48
	
49
	private final StringBuffer getValue(String modelElementVariable, GenFeature feature) {
50
		StringBuffer result = new StringBuffer();
51
		String featureName = feature.getName();
52
		if ("cornerWidth".equals(featureName) || "cornerHeight".equals(featureName)) {
53
			result.append("getMapMode().DPtoLP(");
54
			result.append(modelElementVariable);
55
			result.append(".getCornerWidth()), getMapMode().DPtoLP(");
56
			result.append(modelElementVariable);
57
			result.append(".getCornerHeight())");
58
		} else {
59
			result.append(modelElementVariable);
60
			result.append(".");
61
			result.append(feature.getGetAccessor());
62
			result.append("()");
63
		}
64
		return result;
65
	}
66
	
67
	private final void transform(StringBuffer value, GenFeature feature) {
68
		String featureName = feature.getName();
69
		if ("cornerWidth".equals(featureName) || "cornerHeight".equals(featureName)) {
70
			value.insert(0, "new org.eclipse.draw2d.geometry.Dimension(");
71
			value.append(")");
72
		} else if ("lineKind".equals(featureName)) {
73
			value.insert(0, "getLineStyle(");
74
			value.append(")");
75
		} else if ("template".equals(featureName)) {
76
			value.insert(0, "getPointList(");
77
			value.append(")");
78
		}
79
	}
80
	
81
	private final void setValue(StringBuffer value, GenFeature feature) {
82
		value.insert(0, "(");
83
		java.util.Map map = getMethodsMap();
84
		String accessorName = feature.getAccessorName();
85
		if (map.containsKey(accessorName)) {
86
			value.insert(0, (String) map.get(accessorName));
87
		} else {
88
			if (feature.getTypeGenClassifier() instanceof GenDataType) {
89
				value.insert(0, accessorName);
90
				value.insert(0, "myFigure.set");
91
			} else {
92
				value.insert(0, "Changed");
93
				value.insert(0, feature.getName());
94
			}
95
		}	
96
		value.append(")");
97
	}
98
	
99
	protected final String getProcessChangesCall(String modelElementVariable, GenFeature feature) {
100
		StringBuffer result = getValue(modelElementVariable, feature);
101
		transform(result, feature);
102
		setValue(result, feature);
103
		return result.toString();
104
	}
105
// [graphdef--] 
106
107
	protected final String getFeatureValueGetter(String containerName, GenFeature feature, boolean isContainerEObject, ImportAssistant importManager) {
108
		StringBuffer result = new StringBuffer();
109
		if (feature.getGenClass().isExternalInterface()) {
110
// Using EMF reflective method to access feature value
111
			result.append("((");
112
			if (feature.isListType()) {
113
				result.append(importManager.getImportedName("java.util.Collection"));
114
			} else {
115
				result.append(importManager.getImportedName(feature.getTypeGenClass().getQualifiedInterfaceName()));
116
			}
117
			result.append(")");
118
			if (!isContainerEObject) {
119
// Casting container to EObject - ExternalIntarfce could be not an instance of EObject
120
				result.append("((");
121
				result.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
122
				result.append(")");
123
			}
124
			result.append(containerName);
125
			if (!isContainerEObject) {
126
				result.append(")");
127
			}
128
			result.append(".eGet(");
129
			result.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName()));
130
			result.append(".eINSTANCE.get");
131
			result.append(feature.getFeatureAccessorName());
132
			result.append("()))");
133
		} else {
134
			if (isContainerEObject) {
135
// Casting container to the typed interface
136
				result.append("((");
137
				result.append(importManager.getImportedName(feature.getGenClass().getQualifiedInterfaceName()));
138
				result.append(")");
139
			}
140
			result.append(containerName);
141
			if (isContainerEObject) {
142
				result.append(")");
143
			}
144
			result.append(".");
145
			result.append(feature.getGetAccessor());
146
			result.append("()");
147
		}
148
		return result.toString();
149
	}
150
	
151
	protected final String getFeatureValueSetterPrefix(String containerName, GenFeature feature, boolean isContainerEObject, ImportAssistant importManager) {
152
		StringBuffer result = new StringBuffer();
153
		if (feature.getGenClass().isExternalInterface()) {
154
// Using EMF reflective method to access feature value
155
			if (!isContainerEObject) {
156
// Casting container to EObject - ExternalIntarfce could be not an instance of EObject
157
				result.append("((");
158
				result.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
159
				result.append(")");
160
			}
161
			result.append(containerName);
162
			if (!isContainerEObject) {
163
				result.append(")");
164
			}
165
			result.append(".eSet(");
166
			result.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName()));
167
			result.append(".eINSTANCE.get");
168
			result.append(feature.getFeatureAccessorName());
169
			result.append("(), ");
170
		} else {
171
			if (isContainerEObject) {
172
// Casting container to the typed interface
173
				result.append("((");
174
				result.append(importManager.getImportedName(feature.getGenClass().getQualifiedInterfaceName()));
175
				result.append(")");
176
			}
177
			result.append(containerName);
178
			if (isContainerEObject) {
179
				result.append(")");
180
			}
181
			if (feature.isListType()) {
182
				result.append(".");
183
				result.append(feature.getGetAccessor());
184
				result.append("().add(");
185
			} else {
186
				result.append(".set");
187
				result.append(feature.getAccessorName());
188
				result.append("(");
189
			}
190
		}
191
		return result.toString();
192
	}
193
 
194
	protected final String getMetaClassAccessor(GenClass genClass, ImportAssistant importManager) {
195
		StringBuffer buf = new StringBuffer();
196
		buf.append(importManager.getImportedName(genClass.getGenPackage().getQualifiedPackageInterfaceName()))
197
			.append(".eINSTANCE.get") //$NON-NLS-1$
198
			.append(genClass.getName())
199
			.append("()"); //$NON-NLS-1$
200
		return buf.toString();
201
	} 
202
 
203
	public String generate(Object argument) {
204
		return "";
205
	}
206
   
207
}
(-)templates/aspects/xpt/diagram/editparts/Utils.ext (+118 lines)
Added Link Here
1
/*
2
 * Copyright (c) 2007 Borland Software Corporation
3
 * 
4
 * All rights reserved. This program and the accompanying materials
5
 * are made available under the terms of the Eclipse Public License v1.0
6
 * which accompanies this distribution, and is available at
7
 * http://www.eclipse.org/legal/epl-v10.html
8
 *
9
 * Contributors:
10
 *    Anna Karjakina (Borland) - initial API and implementation
11
 */
12
 
13
import "http://www.eclipse.org/gmf/2005/GraphicalDefinition";
14
import "http://www.eclipse.org/gmf/2005/GenModel/2.0";
15
import "http://www.eclipse.org/emf/2002/GenModel";
16
import "http://www.eclipse.org/emf/2002/Ecore";
17
18
extension xpt::GenModelUtils;
19
20
cached List[genmodel::GenFeature] getAllGenFeatures(genmodel::GenClass genClass) :
21
getAllBaseGenClasses(genClass).genFeatures.union(genClass.genFeatures)
22
;
23
24
cached List[genmodel::GenClass] getAllBaseGenClasses(genmodel::GenClass genClass) :
25
genClass.ecoreClass.eAllSuperTypes.findGenClassifier(genClass.genPackage.genModel)
26
;
27
28
private genmodel::GenClass findGenClassifier(ecore::EClass eClass, genmodel::GenModel genModel) :
29
findGenClassifier(genModel, eClass)
30
;
31
32
cached genmodel::GenClassifier getTypeGenClassifier(genmodel::GenFeature genFeature) :
33
null != genFeature.ecoreFeature.eType ? findGenClassifier(genFeature.genClass.genPackage.genModel, genFeature.ecoreFeature.eType) : null
34
;
35
36
cached genmodel::GenClass metaclass(gmfgen::GenNode genNode) :
37
genNode.getDomainMetaClass()
38
;
39
40
cached boolean skip(genmodel::GenFeature genFeature) :
41
skip(getTypeGenClassifier(genFeature), getName(genFeature))
42
;
43
44
private String getName(genmodel::GenFeature genFeature) :
45
genFeature.ecoreFeature.name
46
;
47
48
private boolean skip(genmodel::GenClassifier type, String genFeatureName) :
49
!genFeatureName.matches("layoutData|layout|template")
50
;
51
52
private boolean skip(genmodel::GenDataType type, String genFeatureName) :
53
genFeatureName.matches("name")
54
;
55
56
cached boolean generateSyncronizationCode(genmodel::GenClass metaclass) :
57
metaclass.ecoreClass.eAllSuperTypes.contains(metaclass.ecoreClass.ePackage.getEClassifier("FigureMarker"))
58
;
59
60
boolean isInnerClassViewmap(gmfgen::Viewmap viewmap) :
61
false
62
;
63
64
boolean isInnerClassViewmap(gmfgen::InnerClassViewmap viewmap) :
65
true
66
;
67
68
cached String getProcessChangesCall(genmodel::GenFeature genFeature, String modelElementVariable) :
69
setValue(genFeature, transform(genFeature, getValue(genFeature, modelElementVariable)))
70
;
71
72
private String getValue(genmodel::GenFeature genFeature, String modelElementVariable) :
73
isCornerWidthOrHeight(genFeature) ? 
74
DPtoLPcall(modelElementVariable+".getCornerWidth()")+", "+DPtoLPcall(modelElementVariable+".getCornerHeight()") :
75
modelElementVariable+"."+getGetAccessor(genFeature)+"()"
76
;
77
78
private String DPtoLPcall(String variable) :
79
"getMapMode().DPtoLP("+variable+")"
80
;
81
82
private String transform(genmodel::GenFeature genFeature, String getValueString) :
83
switch (getName(genFeature)) {
84
case "cornerWidth": "new org.eclipse.draw2d.geometry.Dimension("+getValueString+")"
85
case "cornerHeight": "new org.eclipse.draw2d.geometry.Dimension("+getValueString+")"
86
case "lineKind": "getLineStyle("+getValueString+")"
87
case "template": "getPointList("+getValueString+")"
88
default : getValueString
89
}
90
;
91
92
private boolean isCornerWidthOrHeight(genmodel::GenFeature genFeature) :
93
getName(genFeature).matches("cornerWidth|cornerHeight")
94
;
95
96
private String getAccessorCall(genmodel::GenFeature genFeature) :
97
switch (getAccessorName(genFeature)) {
98
case "XorFill": "myFigure.setFillXOR"
99
case "XorOutline": "myFigure.setOutlineXOR"
100
case "LineKind": "myFigure.setLineStyle"
101
case "CornerWidth": "myFigure.setCornerDimensions"
102
case "CornerHeight": "myFigure.setCornerDimensions"
103
case "Template": "myFigure.setPoints"
104
default : getTypedAccessorCall(genFeature, getTypeGenClassifier(genFeature))
105
}
106
;
107
108
private String getTypedAccessorCall(genmodel::GenFeature genFeature, genmodel::GenDataType type) :
109
"myFigure.set"+getAccessorName(genFeature)
110
;
111
112
private String getTypedAccessorCall(genmodel::GenFeature genFeature, genmodel::GenClassifier type) :
113
getName(genFeature)+"Changed"
114
;
115
116
private String setValue(genmodel::GenFeature genFeature, String transformedValueString) :
117
getAccessorCall(genFeature)+"("+transformedValueString+")"
118
;
(-)templates/aspects/xpt/propsheet/PropertySection.xpt (+191 lines)
Added Link Here
1
/*
2
 * Copyright (c) 2007 Borland Software Corporation
3
 * 
4
 * All rights reserved. This program and the accompanying materials
5
 * are made available under the terms of the Eclipse Public License v1.0
6
 * which accompanies this distribution, and is available at
7
 * http://www.eclipse.org/legal/epl-v10.html
8
 *
9
 * Contributors:
10
 *    Anna Karjakina (Borland) - initial API and implementation
11
 */
12
«IMPORT "http://www.eclipse.org/gmf/2005/GenModel/2.0"»
13
«IMPORT "http://www.eclipse.org/emf/2002/Ecore"»
14
15
«AROUND getPropertySourceMethod FOR gmfgen::GenCustomPropertyTab-»
16
	«EXPAND xpt::Common::generatedMemberComment»
17
	public org.eclipse.ui.views.properties.IPropertySource getPropertySource(Object object) {
18
	    «EXPAND additionalPropertiesProvider-»
19
		if (object instanceof org.eclipse.ui.views.properties.IPropertySource) {
20
			return (org.eclipse.ui.views.properties.IPropertySource) object;
21
		}
22
		org.eclipse.emf.common.notify.AdapterFactory af = getAdapterFactory(object);
23
		if (af != null) {
24
			org.eclipse.emf.edit.provider.IItemPropertySource ips = (org.eclipse.emf.edit.provider.IItemPropertySource) af.adapt(object, org.eclipse.emf.edit.provider.IItemPropertySource.class);
25
			if (ips != null) {
26
				return new org.eclipse.emf.edit.ui.provider.PropertySource(object, ips);
27
			}
28
		}
29
		if (object instanceof org.eclipse.core.runtime.IAdaptable) {
30
			return (org.eclipse.ui.views.properties.IPropertySource) ((org.eclipse.core.runtime.IAdaptable) object).getAdapter(org.eclipse.ui.views.properties.IPropertySource.class);
31
		}
32
		return null;
33
	}
34
«ENDAROUND»
35
36
«DEFINE additionalPropertiesProvider FOR gmfgen::GenCustomPropertyTab-»
37
if (object instanceof org.eclipse.gmf.gmfgraph.Layoutable) {
38
	org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource compositeSource = new org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource(object);	
39
40
	compositeSource.addPropertySource(adaptToOldCompositePropertySource(object));
41
42
	org.eclipse.emf.edit.provider.IItemPropertyDescriptor layoutPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), "Layout Manager", "Layout Manager", org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), true, new org.eclipse.emf.ecore.EObject[] {org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createBorderLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createCustomLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createFlowLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createGridLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createStackLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayout()});
43
	compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, new SingleDescriptorPropertySource(layoutPropertyDescriptor), "EMF")); //$NON-NLS-1$
44
45
	org.eclipse.emf.edit.provider.IItemPropertyDescriptor layoutDataPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), "Layout Data", "Layout Data", org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getLayoutable_LayoutData(), true, new org.eclipse.emf.ecore.EObject[] {org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createBorderLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createCustomLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createGridLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayoutData()});
46
	compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, new SingleDescriptorPropertySource(layoutDataPropertyDescriptor), "EMF")); //$NON-NLS-1$
47
48
	if (object instanceof org.eclipse.gmf.gmfgraph.Polyline) {
49
		int counter = 1;
50
		for (java.util.Iterator it = ((org.eclipse.gmf.gmfgraph.Polyline) object).getTemplate().iterator(); it.hasNext(); counter++) {
51
			org.eclipse.gmf.gmfgraph.Point nextPoint = (org.eclipse.gmf.gmfgraph.Point) it.next();
52
			final String titleX = "Point " + counter + " X";
53
			org.eclipse.emf.edit.provider.IItemPropertyDescriptor nextPointPropertyDescriptorX = new org.eclipse.emf.edit.provider.ItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), titleX, titleX, org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getPoint_X(), true, "Template");
54
			compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorX), "EMF") {
55
				protected org.eclipse.ui.views.properties.IPropertyDescriptor newPropertyDescriptor(org.eclipse.emf.edit.provider.IItemPropertyDescriptor itemPropertyDescriptor) {
56
					return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor(object, itemPropertyDescriptor, getCategory()) {
57
						public Object getId() {
58
							return titleX;
59
						}
60
					};
61
				}
62
			});
63
64
			final String titleY = "Point " + counter + " Y";
65
			org.eclipse.emf.edit.provider.IItemPropertyDescriptor nextPointPropertyDescriptorY = new org.eclipse.emf.edit.provider.ItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), titleY, titleY, org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getPoint_Y(), true, "Template");
66
			compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorY), "EMF") {
67
				protected org.eclipse.ui.views.properties.IPropertyDescriptor newPropertyDescriptor(org.eclipse.emf.edit.provider.IItemPropertyDescriptor itemPropertyDescriptor) {
68
					return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor(object, itemPropertyDescriptor, getCategory()) {
69
						public Object getId() {
70
							return titleY;
71
						}
72
					};
73
				}
74
			});
75
		}
76
	}
77
78
	return compositeSource;
79
}
80
«ENDDEFINE»
81
82
«AROUND additions FOR gmfgen::GenCustomPropertyTab-»
83
«EXPAND xpt::Common::generatedMemberComment»
84
private org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource adaptToOldCompositePropertySource(Object object) {
85
	if (object instanceof org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) {
86
		return (org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) object;
87
	}
88
	org.eclipse.emf.common.notify.AdapterFactory af = getAdapterFactory(object);
89
	if (af != null) {
90
		org.eclipse.emf.edit.provider.IItemPropertySource ips = (org.eclipse.emf.edit.provider.IItemPropertySource) af.adapt(object, org.eclipse.emf.edit.provider.IItemPropertySource.class);
91
		if (ips != null) {
92
			return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, ips, "EMF");
93
		}
94
	}
95
	if (object instanceof org.eclipse.core.runtime.IAdaptable) {
96
		return (org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) ((org.eclipse.core.runtime.IAdaptable) object).getAdapter(org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource.class);
97
	}
98
	return null;
99
}
100
101
«EXPAND SingleDescriptorPropertySourceClass-»
102
«EXPAND ChildMetaclassItemPropertyDescriptorClass-»
103
«ENDAROUND»
104
105
«DEFINE SingleDescriptorPropertySourceClass FOR gmfgen::GenCustomPropertyTab»
106
«EXPAND xpt::Common::generatedMemberComment»
107
public static class SingleDescriptorPropertySource implements org.eclipse.emf.edit.provider.IItemPropertySource {
108
109
	«EXPAND xpt::Common::generatedMemberComment»
110
	private org.eclipse.emf.edit.provider.IItemPropertyDescriptor myPropertyDescriptor;
111
	
112
	«EXPAND xpt::Common::generatedMemberComment»
113
	private java.util.List myDescriptors = new java.util.LinkedList();
114
115
	«EXPAND xpt::Common::generatedMemberComment»
116
	SingleDescriptorPropertySource(org.eclipse.emf.edit.provider.IItemPropertyDescriptor propertyDescriptor) {
117
		myPropertyDescriptor = propertyDescriptor;
118
		myDescriptors.add(myPropertyDescriptor);
119
	}
120
	
121
	«EXPAND xpt::Common::generatedMemberComment»
122
	public java.util.List getPropertyDescriptors(Object object) {
123
		return myDescriptors;
124
	}
125
126
	«EXPAND xpt::Common::generatedMemberComment»
127
	public org.eclipse.emf.edit.provider.IItemPropertyDescriptor getPropertyDescriptor(Object object, Object propertyID) {
128
		return myPropertyDescriptor;
129
	}
130
131
	«EXPAND xpt::Common::generatedMemberComment»
132
	public Object getEditableValue(Object object) {
133
		return object;
134
	}
135
}
136
«ENDDEFINE»
137
138
«DEFINE ChildMetaclassItemPropertyDescriptorClass FOR gmfgen::GenCustomPropertyTab»
139
«EXPAND xpt::Common::generatedMemberComment»
140
public static class ChildMetaclassItemPropertyDescriptor extends org.eclipse.emf.edit.provider.ItemPropertyDescriptor {
141
142
	«EXPAND xpt::Common::generatedMemberComment»
143
	private org.eclipse.emf.ecore.EObject[] myValues;
144
145
	«EXPAND xpt::Common::generatedMemberComment»
146
	ChildMetaclassItemPropertyDescriptor(org.eclipse.emf.common.notify.AdapterFactory adapterFactory, String displayName, String description, org.eclipse.emf.ecore.EStructuralFeature feature, boolean isSettable, org.eclipse.emf.ecore.EObject[] valueInstances) {
147
		super(adapterFactory, displayName, description, feature, isSettable);
148
		myValues = valueInstances;
149
	}
150
	
151
	«EXPAND xpt::Common::generatedMemberComment»
152
	protected java.util.Collection getComboBoxObjects(Object object) {
153
		if (object instanceof org.eclipse.emf.ecore.EObject) {
154
			org.eclipse.emf.ecore.EObject eObject = (org.eclipse.emf.ecore.EObject) object;
155
			Object currentValue = getValue(eObject, feature);
156
			java.util.Collection result = new java.util.ArrayList();
157
			result.add(currentValue);	
158
			org.eclipse.emf.ecore.EClass valueEClass = currentValue instanceof org.eclipse.emf.ecore.EObject ? ((org.eclipse.emf.ecore.EObject) currentValue).eClass() : null;
159
			for (int i = 0; i < myValues.length; i++) {
160
				if (myValues[i].eClass() == valueEClass) {
161
					continue;
162
				}
163
				result.add(myValues[i]);	
164
			}
165
			if (currentValue != null) {
166
				result.add(null);
167
			}
168
			return result;
169
		}
170
		return null;
171
	}
172
	
173
	«EXPAND xpt::Common::generatedMemberComment»
174
	public void setPropertyValue(Object object, Object value) {
175
		if (value instanceof org.eclipse.emf.ecore.EObject) {
176
			org.eclipse.emf.ecore.EClass eClass =  ((org.eclipse.emf.ecore.EObject) value).eClass();
177
			value = eClass.getEPackage().getEFactoryInstance().create(eClass);
178
			if (value instanceof org.eclipse.gmf.gmfgraph.XYLayoutData) {
179
				org.eclipse.gmf.gmfgraph.XYLayoutData xyLayoutData = (org.eclipse.gmf.gmfgraph.XYLayoutData) value;
180
				xyLayoutData.setTopLeft(org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createPoint());
181
				xyLayoutData.getTopLeft().setX(0);
182
				xyLayoutData.getTopLeft().setY(0);
183
				xyLayoutData.setSize(org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createDimension());
184
				xyLayoutData.getSize().setDx(40);
185
				xyLayoutData.getSize().setDy(40);
186
			}
187
		}
188
		super.setPropertyValue(object, value);
189
	}
190
}
191
«ENDDEFINE»
(-)templates/aspects/xpt/diagram/editparts/NodeEditPart.xpt (+464 lines)
Added Link Here
1
/*
2
 * Copyright (c) 2007 Borland Software Corporation
3
 * 
4
 * All rights reserved. This program and the accompanying materials
5
 * are made available under the terms of the Eclipse Public License v1.0
6
 * which accompanies this distribution, and is available at
7
 * http://www.eclipse.org/legal/epl-v10.html
8
 *
9
 * Contributors:
10
 *    Anna Karjakina (Borland) - initial API and implementation
11
 */
12
13
«IMPORT "http://www.eclipse.org/gmf/2005/GraphicalDefinition"»
14
«IMPORT "http://www.eclipse.org/gmf/2005/GenModel/2.0"»
15
«IMPORT "http://www.eclipse.org/emf/2002/GenModel"»
16
«IMPORT "http://www.eclipse.org/emf/2002/Ecore"»
17
18
«EXTENSION xpt::GenModelUtils»
19
«EXTENSION xpt::diagram::editparts::Utils»
20
«EXTENSION aspects::xpt::diagram::editparts::Utils»
21
22
«DEFINE addFeaturePropertyChangeListeners FOR genmodel::GenFeature-»
23
«IF this.isListType()-»
24
for (int i = 0; i < modelElement.«this.getGetAccessor()»().size(); i++) {
25
	addListenerFilter("«this.getFeatureAccessorName()»_PropertiesListener#" + i, «this.getFeatureAccessorName()»_PropertiesListener, (org.eclipse.emf.ecore.EObject) modelElement.«this.getGetAccessor()»().get(i));
26
}
27
«ELSE-»
28
if (modelElement.«this.getGetAccessor()»() != null) {
29
	addListenerFilter("«this.getFeatureAccessorName()»_PropertiesListener", «this.getFeatureAccessorName()»_PropertiesListener, modelElement.«this.getGetAccessor()»());
30
}
31
«ENDIF-»
32
«ENDDEFINE»
33
34
«DEFINE setViewColor(String modelColorProperty, String viewColorProperty) FOR gmfgen::GenNode-»
35
if (modelElement.get«modelColorProperty»Color() != null) {
36
	final int rgbColor;
37
	if (modelElement.get«modelColorProperty»Color() instanceof org.eclipse.gmf.gmfgraph.RGBColor) {
38
		org.eclipse.gmf.gmfgraph.RGBColor modelColor = (org.eclipse.gmf.gmfgraph.RGBColor) modelElement.get«modelColorProperty»Color();
39
		rgbColor = (modelColor.getRed()& 0xFF) | ((modelColor.getGreen() & 0xFF) << 8) | ((modelColor.getBlue() & 0xFF) << 16);
40
	} else {
41
		org.eclipse.gmf.gmfgraph.ConstantColor modelColor = (org.eclipse.gmf.gmfgraph.ConstantColor) modelElement.get«modelColorProperty»Color();
42
		switch (modelColor.getValue().getValue()) {
43
/*
44
		case <nextValue>: {
45
			rgbColor = org.eclipse.draw2d.ColorConstants.<nextColorLiteral.getName()>.getRGB().hashCode();
46
			break;
47
		}
48
*/
49
		default: 
50
			rgbColor = -1;
51
		}
52
	}
53
	if (rgbColor != -1 && shapeStyle.get«viewColorProperty»Color() != rgbColor) {
54
		org.eclipse.emf.workspace.AbstractEMFOperation setColorOperation = new org.eclipse.emf.workspace.AbstractEMFOperation(getEditingDomain(), "Synchronizing view «modelColorProperty» color with the model", java.util.Collections.singletonMap(org.eclipse.emf.transaction.Transaction.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$
55
			protected org.eclipse.core.runtime.IStatus doExecute(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException {
56
				shapeStyle.set«viewColorProperty»Color(rgbColor);
57
				return org.eclipse.core.runtime.Status.OK_STATUS;
58
			}
59
		};
60
		try {
61
			setColorOperation.execute(new org.eclipse.core.runtime.NullProgressMonitor(), null);
62
		} catch (org.eclipse.core.commands.ExecutionException e) {
63
			«getDiagram().editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to synchronize view «modelColorProperty» background color with the model", e); //$NON-NLS-1$
64
		}
65
	}
66
}
67
«ENDDEFINE»
68
69
«DEFINE listenerForDatatype FOR genmodel::GenFeature-»
70
«EXPAND listenerForDatatype(getTypeGenClassifier())-»
71
«ENDDEFINE»
72
73
«DEFINE listenerForDatatype(genmodel::GenClassifier type) FOR genmodel::GenFeature-»
74
	final org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener «this.getFeatureAccessorName()»_PropertiesListener = new org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener() {
75
		public void notifyChanged(org.eclipse.emf.common.notify.Notification notification) {
76
		    «getProcessChangesCall(this, "modelElement")»;
77
		}
78
	};
79
	«EXPAND addFeaturePropertyChangeListeners-»
80
«ENDDEFINE»
81
82
«DEFINE listenerForDatatype(genmodel::GenDataType type) FOR genmodel::GenFeature-»
83
«ENDDEFINE»
84
85
«DEFINE notifyBodyForDatatype FOR genmodel::GenFeature-»
86
«EXPAND notifyBodyForDatatype(getTypeGenClassifier())-»
87
«ENDDEFINE»
88
89
«DEFINE notifyBodyForDatatype(genmodel::GenClassifier type) FOR genmodel::GenFeature-»
90
    «IF this.isListType()-»
91
	int listSize = modelElement.«this.getGetAccessor()»().size();
92
	if (notification.getOldValue() instanceof java.util.Collection) {
93
		listSize += ((java.util.Collection) notification.getOldValue()).size();
94
	} else {
95
		listSize++;
96
	}
97
	for (int i = 0; i < listSize; i++) {
98
		removeListenerFilter("«this.getFeatureAccessorName()»_PropertiesListener#" + i);
99
	}
100
    «ELSE-»
101
	removeListenerFilter("«this.getFeatureAccessorName()»_PropertiesListener");
102
    «ENDIF-»
103
    «EXPAND addFeaturePropertyChangeListeners-»
104
«ENDDEFINE»
105
106
«DEFINE notifyBodyForDatatype(genmodel::GenDataType type) FOR genmodel::GenFeature-»
107
«ENDDEFINE»
108
109
«AROUND extendsList FOR gmfgen::GenNode-»
110
«IF generateSyncronizationCode(metaclass()) && isInnerClassViewmap(viewmap)-»
111
«getDiagram().editPartsPackageName».AbstractFigureEditPart«ELSE»«targetDef.proceed()»«ENDIF»
112
«ENDAROUND»
113
114
«AROUND additions FOR gmfgen::GenNode-»
115
«IF generateSyncronizationCode(metaclass())-»
116
«EXPAND additions(viewmap)-»
117
«ELSE-»
118
«targetDef.proceed()»
119
«ENDIF-»
120
«ENDAROUND»
121
122
«DEFINE additions(gmfgen::Viewmap innerViewmap) FOR gmfgen::GenNode-»
123
«ENDDEFINE»
124
125
«DEFINE additions(gmfgen::InnerClassViewmap innerViewmap) FOR gmfgen::GenNode-»
126
	«EXPAND xpt::Common::generatedMemberComment»
127
	private «innerViewmap.className» myFigure;
128
	
129
// TODO: use myFigure?
130
	«EXPAND xpt::Common::generatedMemberComment»
131
	protected org.eclipse.draw2d.Figure myNodeFigure;
132
	
133
	«EXPAND xpt::Common::generatedMemberComment»
134
	public void activate() {
135
		if (isActive()){
136
			return;
137
		}
138
		org.eclipse.gmf.runtime.notation.View view = (org.eclipse.gmf.runtime.notation.View) getModel();
139
		if (view.getElement() == null) {
140
			super.activate();
141
			return;
142
		}
143
144
		final «metaclass().getQualifiedInterfaceName()» modelElement = («metaclass().getQualifiedInterfaceName()») view.getElement();
145
146
        «FOREACH metaclass().getAllGenFeatures() AS nextGenFeature»
147
            «IF !skip(nextGenFeature)-»
148
                «EXPAND listenerForDatatype FOR nextGenFeature-»
149
		addListenerFilter("«nextGenFeature.getFeatureAccessorName()»_Listener", new org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener() {
150
			public void notifyChanged(org.eclipse.emf.common.notify.Notification notification) {
151
			    «EXPAND notifyBodyForDatatype FOR nextGenFeature-»
152
			    «getProcessChangesCall(nextGenFeature, "modelElement")»;
153
			}
154
		}, modelElement, «nextGenFeature.genClass.genPackage.getQualifiedPackageInterfaceName()».eINSTANCE.get«nextGenFeature.getFeatureAccessorName()»());
155
            «ENDIF-»
156
        «ENDFOREACH»
157
        
158
		final org.eclipse.gmf.runtime.notation.Bounds bounds = (org.eclipse.gmf.runtime.notation.Bounds) ((org.eclipse.gmf.runtime.notation.Node) view).getLayoutConstraint();
159
		final int sizeX;
160
		final int sizeY;
161
		if (modelElement.getPreferredSize() != null) {
162
			sizeX = getMapMode().DPtoLP(modelElement.getPreferredSize().getDx());
163
			sizeY = getMapMode().DPtoLP(modelElement.getPreferredSize().getDy());
164
		} else {
165
			sizeX = getMapMode().DPtoLP(20);
166
			sizeY = getMapMode().DPtoLP(20);
167
		}
168
		final int locationX;
169
		final int locationY;
170
		if (modelElement.getLocation() != null) {
171
			locationX = getMapMode().DPtoLP(modelElement.getLocation().getX());
172
			locationY = getMapMode().DPtoLP(modelElement.getLocation().getY());
173
		} else {
174
			locationX = bounds.getX();
175
			locationY = bounds.getY();
176
		}
177
		if (sizeX != bounds.getWidth() || sizeY != bounds.getHeight() || locationX != bounds.getX() || locationY != bounds.getY()) {
178
			try {
179
				new org.eclipse.emf.workspace.AbstractEMFOperation(getEditingDomain(), "Synchronizing view size with the model", java.util.Collections.singletonMap(org.eclipse.emf.transaction.Transaction.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$
180
					protected org.eclipse.core.runtime.IStatus doExecute(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException {
181
						bounds.setX(locationX);
182
						bounds.setY(locationY);
183
						bounds.setWidth(sizeX);
184
						bounds.setHeight(sizeY);
185
						return org.eclipse.core.runtime.Status.OK_STATUS;
186
					}
187
				}.execute(new org.eclipse.core.runtime.NullProgressMonitor(), null);
188
			} catch (org.eclipse.core.commands.ExecutionException e) {
189
				«getDiagram().editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to synchronize view size with the model", e); //$NON-NLS-1$			
190
			}
191
		}
192
		addListenerFilter("BoundsListener", new org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener() {
193
			public void notifyChanged(final org.eclipse.emf.common.notify.Notification notification) {
194
				try {
195
					new org.eclipse.emf.workspace.AbstractEMFOperation(getEditingDomain(), "Synchronizing model size with the view", java.util.Collections.singletonMap(org.eclipse.emf.transaction.Transaction.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$
196
						protected org.eclipse.core.runtime.IStatus doExecute(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException {
197
							org.eclipse.gmf.runtime.notation.Bounds bounds = (org.eclipse.gmf.runtime.notation.Bounds) notification.getNotifier();
198
							org.eclipse.gmf.gmfgraph.Dimension dim = modelElement.getPreferredSize();
199
							if (dim == null) {
200
								dim = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createDimension();
201
								modelElement.setPreferredSize(dim);
202
							}
203
							org.eclipse.gmf.gmfgraph.Point location = modelElement.getLocation();
204
							if (location == null) {
205
								location = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createPoint();
206
								modelElement.setLocation(location);
207
							}
208
				
209
							int x = getMapMode().LPtoDP(bounds.getX());
210
							int y = getMapMode().LPtoDP(bounds.getY());
211
							int width = getMapMode().LPtoDP(bounds.getWidth());
212
							int height = getMapMode().LPtoDP(bounds.getHeight());
213
							if (location.getX() != x || location.getY() != y) {
214
								location.setX(x);
215
								location.setY(y);
216
							}
217
							if (dim.getDx() != width || dim.getDy() != height) {
218
								dim.setDx(width);
219
								dim.setDy(height);
220
							}
221
222
							myNodeFigure.setPreferredSize(bounds.getWidth(), bounds.getHeight());
223
							myNodeFigure.setLocation(new org.eclipse.draw2d.geometry.Point(bounds.getX(), bounds.getY()));
224
				
225
							if (modelElement.getLayoutData() instanceof org.eclipse.gmf.gmfgraph.XYLayoutData || (modelElement.getParent() != null && modelElement.getParent().getLayout() instanceof org.eclipse.gmf.gmfgraph.XYLayout)) {
226
								org.eclipse.gmf.gmfgraph.XYLayoutData xyLayoutData = (org.eclipse.gmf.gmfgraph.XYLayoutData) modelElement.getLayoutData();
227
								if (xyLayoutData == null) {
228
									xyLayoutData = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayoutData();
229
									modelElement.setLayoutData(xyLayoutData);
230
									xyLayoutData.setTopLeft(org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createPoint());
231
									xyLayoutData.getTopLeft().setX(0);
232
									xyLayoutData.getTopLeft().setY(0);
233
									xyLayoutData.setSize(org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createDimension());
234
									xyLayoutData.getSize().setDx(40);
235
									xyLayoutData.getSize().setDy(40);
236
								}
237
								org.eclipse.gmf.gmfgraph.Point topLeft;
238
								if (xyLayoutData.getTopLeft() != null) {
239
									topLeft = xyLayoutData.getTopLeft();
240
								} else {
241
									topLeft = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createPoint();
242
									xyLayoutData.setTopLeft(topLeft);
243
								}
244
								if (topLeft.getX() != location.getX() || topLeft.getY() != location.getY()) {
245
									topLeft.setX(location.getX());
246
									topLeft.setY(location.getY());
247
								}
248
249
								org.eclipse.gmf.gmfgraph.Dimension size;
250
								if (xyLayoutData.getSize() != null) {
251
									size = xyLayoutData.getSize();
252
								} else {
253
									size = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createDimension();
254
									xyLayoutData.setSize(size);
255
								}
256
								if (size.getDx() != dim.getDx() || size.getDy() != dim.getDy()) {
257
									size.setDx(dim.getDx());
258
									size.setDy(dim.getDy());
259
								}
260
							}
261
							return org.eclipse.core.runtime.Status.OK_STATUS;
262
						}
263
					}.execute(new org.eclipse.core.runtime.NullProgressMonitor(), null);
264
				} catch (org.eclipse.core.commands.ExecutionException e) {
265
					«getDiagram().editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to synchronize model size with the view", e); //$NON-NLS-1$			
266
				}
267
				if (getRoot() != null) {
268
					handleMajorSemanticChange();	
269
				}
270
			}
271
		}, bounds);
272
		
273
		final org.eclipse.gmf.runtime.notation.ShapeStyle shapeStyle = (org.eclipse.gmf.runtime.notation.ShapeStyle) view.getStyle(org.eclipse.gmf.runtime.notation.NotationPackage.eINSTANCE.getShapeStyle());
274
		«EXPAND setViewColor("Background", "Fill")-»
275
		«EXPAND setViewColor("Foreground", "Line")-»
276
		addListenerFilter("ShapeStyleListener", new org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener() {
277
			public void notifyChanged(final org.eclipse.emf.common.notify.Notification notification) {
278
				try {
279
					new org.eclipse.emf.workspace.AbstractEMFOperation(getEditingDomain(), "Synchronizing model size with the view", java.util.Collections.singletonMap(org.eclipse.emf.transaction.Transaction.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$
280
						protected org.eclipse.core.runtime.IStatus doExecute(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException {
281
							org.eclipse.gmf.runtime.notation.ShapeStyle shapeStyle = (org.eclipse.gmf.runtime.notation.ShapeStyle) notification.getNotifier();
282
							switch (notification.getFeatureID(org.eclipse.gmf.runtime.notation.ShapeStyle.class)) {
283
							case org.eclipse.gmf.runtime.notation.NotationPackage.SHAPE_STYLE__FILL_COLOR:
284
								{
285
									int color = shapeStyle.getFillColor();
286
									org.eclipse.gmf.gmfgraph.RGBColor modelColor;
287
									if (modelElement.getBackgroundColor() instanceof org.eclipse.gmf.gmfgraph.RGBColor) {
288
										modelColor = (org.eclipse.gmf.gmfgraph.RGBColor) modelElement.getBackgroundColor();
289
									} else {
290
										modelColor = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createRGBColor();
291
										modelElement.setBackgroundColor(modelColor);
292
									}
293
									if (modelColor.getRed() != (color & 0x000000FF) || modelColor.getGreen() != (color & 0x0000FF00) >> 8 || modelColor.getBlue() != (color & 0x00FF0000) >> 16) {
294
										modelColor.setRed(color & 0x000000FF);
295
										modelColor.setGreen((color & 0x0000FF00) >> 8);
296
										modelColor.setBlue((color & 0x00FF0000) >> 16);
297
									}
298
									break;
299
								}
300
							case org.eclipse.gmf.runtime.notation.NotationPackage.SHAPE_STYLE__LINE_COLOR:
301
								{
302
									int color = shapeStyle.getLineColor();
303
									org.eclipse.gmf.gmfgraph.RGBColor modelColor;
304
									if (modelElement.getForegroundColor() instanceof org.eclipse.gmf.gmfgraph.RGBColor) {
305
										modelColor = (org.eclipse.gmf.gmfgraph.RGBColor) modelElement.getForegroundColor();
306
									} else {
307
										modelColor = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createRGBColor();
308
										modelElement.setForegroundColor(modelColor);
309
									}
310
									if (modelColor.getRed() != (color & 0x000000FF) || modelColor.getGreen() != (color & 0x0000FF00) >> 8 || modelColor.getBlue() != (color & 0x00FF0000) >> 16) {
311
										modelColor.setRed(color & 0x000000FF);
312
										modelColor.setGreen((color & 0x0000FF00) >> 8);
313
										modelColor.setBlue((color & 0x00FF0000) >> 16);
314
									}
315
									break;
316
								}
317
							}
318
							return org.eclipse.core.runtime.Status.OK_STATUS;
319
						}
320
					}.execute(new org.eclipse.core.runtime.NullProgressMonitor(), null);
321
				} catch (org.eclipse.core.commands.ExecutionException e) {
322
					«getDiagram().editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to synchronize model size with the view", e); //$NON-NLS-1$			
323
				}
324
			}
325
		}, shapeStyle);
326
		super.activate();
327
	}
328
	
329
	«EXPAND xpt::Common::generatedMemberComment»
330
	protected org.eclipse.draw2d.LayoutManager getFigureLayoutManager() {
331
		return myFigure.getLayoutManager();
332
	}
333
334
	«EXPAND xpt::Common::generatedMemberComment»
335
	protected void setFigureLayoutManager(org.eclipse.draw2d.LayoutManager layoutManager) {
336
		myFigure.setLayoutManager(layoutManager);
337
	}
338
	
339
	«EXPAND xpt::Common::generatedMemberComment»
340
	protected void refreshBounds() {
341
		if (((org.eclipse.gmf.runtime.notation.View) getParent().getModel()).getElement() instanceof org.eclipse.gmf.gmfgraph.FigureMarker) {
342
			int width = ((Integer) getStructuralFeatureValue(org.eclipse.gmf.runtime.notation.NotationPackage.eINSTANCE.getSize_Width())).intValue();
343
			int height = ((Integer) getStructuralFeatureValue(org.eclipse.gmf.runtime.notation.NotationPackage.eINSTANCE.getSize_Height())).intValue();
344
			myNodeFigure.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(width, height));
345
		} else {
346
			super.refreshBounds();
347
		}
348
	}
349
«ENDDEFINE»
350
351
«DEFINE overrideGetCurrentConstraintFor(gmfgen::Viewmap innerViewmap) FOR gmfgen::GenNode-»«ENDDEFINE»
352
353
«DEFINE overrideGetCurrentConstraintFor(gmfgen::InnerClassViewmap innerViewmap) FOR gmfgen::GenNode-»
354
355
protected org.eclipse.draw2d.geometry.Rectangle getCurrentConstraintFor(org.eclipse.gef.GraphicalEditPart child) {
356
	org.eclipse.draw2d.geometry.Rectangle result = super.getCurrentConstraintFor(child);
357
	if (result == null) {
358
		org.eclipse.draw2d.IFigure fig = child.getFigure();
359
		result = fig.getBounds().getCopy();
360
	}
361
	return result;
362
}
363
«ENDDEFINE»
364
365
«DEFINE overrideGetLayoutOrigin(gmfgen::Viewmap innerViewmap) FOR gmfgen::GenNode-»«ENDDEFINE»
366
367
«DEFINE overrideGetLayoutOrigin(gmfgen::InnerClassViewmap innerViewmap) FOR gmfgen::GenNode-»
368
369
protected org.eclipse.draw2d.geometry.Point getLayoutOrigin() {
370
	return ((org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart)getHost()).getContentPane().getClientArea().getLocation();
371
}
372
«ENDDEFINE»
373
374
«AROUND createLayoutEditPolicyMethodBody FOR gmfgen::GenNode-»
375
«IF generateSyncronizationCode(metaclass())-»
376
	«IF gmfgen::ViewmapLayoutType::XY_LAYOUT.value == getLayoutType().value-»
377
	org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy lep =
378
			new org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy() {
379
380
		protected org.eclipse.gef.EditPolicy createChildEditPolicy(org.eclipse.gef.EditPart child) {
381
			«IF hasBorderItems()-»
382
			if (child instanceof org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart) {
383
				return new org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy();
384
			}
385
			«ENDIF-»
386
			org.eclipse.gef.EditPolicy result = super.createChildEditPolicy(child);
387
			if (result == null) {
388
				return new org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableShapeEditPolicy();
389
			}
390
			return result;
391
		}
392
        «EXPAND overrideGetLayoutOrigin(viewmap)-»
393
        «EXPAND overrideGetCurrentConstraintFor(viewmap)-»
394
        
395
	};
396
	return lep;
397
	«ELSEIF gmfgen::ViewmapLayoutType::TOOLBAR_LAYOUT.value == getLayoutType().value»
398
	org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy lep =
399
			new org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy() {
400
401
		protected org.eclipse.gef.EditPolicy createChildEditPolicy(org.eclipse.gef.EditPart child) {
402
			«IF hasBorderItems()-»
403
			if (child instanceof org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart) {
404
				return new org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy();
405
			}
406
			«ENDIF-»
407
			if (child.getEditPolicy(org.eclipse.gef.EditPolicy.PRIMARY_DRAG_ROLE) == null) {
408
				if (child instanceof org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart) {
409
					return new «getDiagram().getTextSelectionEditPolicyQualifiedClassName()»();
410
				}
411
			}
412
			return super.createChildEditPolicy(child);
413
		}
414
        «EXPAND overrideGetLayoutOrigin(this.viewmap)-»
415
        
416
	};
417
	return lep;
418
	«ELSE-»
419
    «targetDef.proceed()»
420
	«ENDIF-»
421
«ELSE»
422
«targetDef.proceed()»
423
«ENDIF-»
424
«ENDAROUND»
425
426
«AROUND createNodeShape(gmfgen::GenNode node) FOR gmfgen::InnerClassViewmap»
427
«IF generateSyncronizationCode(node.metaclass()) && isInnerClassViewmap(node.viewmap)»
428
	«EXPAND xpt::Common::generatedMemberComment»
429
	protected org.eclipse.draw2d.IFigure createNodeShape() {
430
		«className» figure = new «className»();
431
		«IF node.childNodes.size() > 0 && node.getLayoutType().value == gmfgen::ViewmapLayoutType::XY_LAYOUT.value-»
432
 		figure.setUseLocalCoordinates(true);
433
		«ENDIF-»
434
		«EXPAND processChanges(node)-»
435
 		return primaryShape = figure;
436
	}
437
438
	«EXPAND xpt::Common::generatedMemberComment»
439
	public «className» getPrimaryShape() {
440
		return («className») primaryShape;
441
	}
442
«ELSE»
443
«targetDef.proceed()»
444
«ENDIF»
445
«ENDAROUND»
446
447
«DEFINE processChanges(gmfgen::GenNode node) FOR gmfgen::InnerClassViewmap-»
448
	myFigure = figure;
449
	«node.metaclass().getQualifiedInterfaceName()» modelElement = («node.metaclass().getQualifiedInterfaceName()») ((org.eclipse.gmf.runtime.notation.View) getModel()).getElement();
450
	if (modelElement != null) {
451
	«FOREACH node.metaclass().getAllGenFeatures() AS nextGenFeature-»
452
		«IF !skip(nextGenFeature)-»
453
		{
454
		    «getProcessChangesCall(nextGenFeature, "modelElement")»;
455
		}
456
		«ENDIF-»
457
	«ENDFOREACH-»
458
	}
459
«ENDDEFINE»
460
461
«AROUND setupNodePlate FOR gmfgen::GenNode-»
462
«IF generateSyncronizationCode(metaclass()) && isInnerClassViewmap(viewmap)»myNodeFigure = result;«ELSE»«targetDef.proceed()»«ENDIF-»
463
«ENDAROUND»
464

Return to bug 173496