Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 4ecfc2c021528904722318e45ed64444c1d8792c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
 * Copyright (c) 2007 Borland Software Corporation
 * 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    bblajer (Borland) - initial API and implementation
 */

«IMPORT "http://www.eclipse.org/gmf/2006/GenModel"»
«IMPORT "http://www.eclipse.org/emf/2002/Ecore"»
«IMPORT "http://www.eclipse.org/emf/2002/GenModel"»
«EXTENSION xpt::GenModelUtils»
«EXTENSION xpt::commands::CommandUtils»
«EXTENSION xpt::diagram::Helper»
«EXTENSION xpt::diagram::LinkFinder»
«EXTENSION xpt::diagram::ViewmapAttributesUtils»

«DEFINE createNotationalNodeCommand(String parentViewCode) FOR gmfgen::GenContainerBase-»
org.eclipse.emf.ecore.EObject domainElement = descriptor.getElement();
int nodeVisualID = descriptor.getVisualID();
switch (nodeVisualID) {
«FOREACH getChildNodes().select(e|e.modelFacet != null && e.modelFacet.metaClass != null) AS nextNode-»
case «nextNode.getEditPartQualifiedClassName()».VISUAL_ID:
	if (domainElement instanceof «nextNode.modelFacet.metaClass.getQualifiedInterfaceName()») {
		return new org.eclipse.gmf.runtime.lite.commands.CreateNotationalNodeCommand(«parentViewCode», domainElement, «EXPAND defaultConstraint(needsXYLayout()) FOR nextNode», «nextNode.getNotationViewFactoryQualifiedClassName()».INSTANCE, false);
	}
	return null;
«ENDFOREACH-»
default:
	return null;
}
«ENDDEFINE»

«DEFINE defaultConstraint(boolean xyLayouted) FOR gmfgen::GenNode-»
«IF xyLayouted»new org.eclipse.draw2d.geometry.Rectangle(0, 0, «EXPAND xpt::commands::Common::defaultWidth», «EXPAND xpt::commands::Common::defaultHeight»)«ELSE»null«ENDIF-»
«ENDDEFINE»

«DEFINE createNotationalEdgeCommand(String parentDiagramCode) FOR gmfgen::GenCommonBase-»
org.eclipse.gmf.runtime.notation.View sourceView = getViewService().findView(linkDescriptor.getSource());
org.eclipse.gmf.runtime.notation.View targetView = getViewService().findView(linkDescriptor.getDestination());
org.eclipse.gmf.runtime.lite.services.IViewDecorator decorator = null;
if (sourceView == null || targetView == null) {
	return null;
}
String sourceModelID = «getDiagram().getVisualIDRegistryQualifiedClassName()».getModelID(sourceView);
if (!«getDiagram().getEditPartQualifiedClassName()».MODEL_ID.equals(sourceModelID)) {
	return null;
}
String targetModelID = «getDiagram().getVisualIDRegistryQualifiedClassName()».getModelID(targetView);
if (!«getDiagram().getEditPartQualifiedClassName()».MODEL_ID.equals(targetModelID)) {
	return null;
}
	«IF needsSourceVisualID()-»
int sourceVisualID = «getDiagram().getVisualIDRegistryQualifiedClassName()».getVisualID(sourceView);
	«ENDIF-»
	«IF needsTargetVisualID()-»
int targetVisualID = «getDiagram().getVisualIDRegistryQualifiedClassName()».getVisualID(targetView);
	«ENDIF-»
switch (linkDescriptor.getVisualID()) {
	«EXPAND createDecorator FOREACH containedLinks()-»
}
if (decorator == null) {
	return null;
}
return new org.eclipse.gmf.runtime.lite.commands.CreateNotationalEdgeCommand(«parentDiagramCode», linkDescriptor.getElement(), sourceView, targetView, decorator);
«ENDDEFINE»

«DEFINE createDecorator FOR gmfgen::GenLink-»
case «getEditPartQualifiedClassName()».VISUAL_ID:
«EXPAND restrictEdgeEnds("sourceVisualID", modelFacet.getSourceType()) FOR getDiagram()-»
«EXPAND restrictEdgeEnds("targetVisualID", modelFacet.getTargetType()) FOR getDiagram()-»
	if («EXPAND linkDescriptorCondition FOR modelFacet») {
		decorator = «getNotationViewFactoryQualifiedClassName()».INSTANCE;
	}
	break;
«ENDDEFINE»

«DEFINE linkDescriptorCondition FOR gmfgen::LinkModelFacet»«ERROR "Unexpected type"»«ENDDEFINE»

«DEFINE linkDescriptorCondition FOR gmfgen::TypeLinkModelFacet»linkDescriptor.getElement() instanceof «metaClass.getQualifiedInterfaceName()»«ENDDEFINE»

«DEFINE linkDescriptorCondition FOR gmfgen::FeatureLinkModelFacet»linkDescriptor.getElement() == null«ENDDEFINE»

«DEFINE restrictEdgeEnds(String visualIdVar, genmodel::GenClass expectedClass) FOR gmfgen::GenDiagram-»
«LET getRelatedChildLabelGenNodes(expectedClass) AS relatedChildLabelGenNodes-»
«IF relatedChildLabelGenNodes.size() > 0-»
switch («visualIdVar») {
«FOREACH relatedChildLabelGenNodes AS nextNode-»
case  «nextNode.getEditPartQualifiedClassName()».VISUAL_ID:
	return null;
«ENDFOREACH-»
}
«ENDIF-»
«ENDLET-»
«ENDDEFINE»

Back to the top