|
1 /* |
|
2 * Copyright (c) 2006, 2008 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 * Dmitry Stadnik (Borland) - initial API and implementation |
|
11 */ |
|
12 |
|
13 «IMPORT "http://www.eclipse.org/gmf/2008/GenModel"» |
|
14 «IMPORT "http://www.eclipse.org/emf/2002/GenModel"» |
|
15 «IMPORT "http://www.eclipse.org/emf/2002/Ecore"» |
|
16 «EXTENSION xpt::diagram::Utils» |
|
17 «EXTENSION xpt::GenModelUtils» |
|
18 |
|
19 «DEFINE ElementTypes FOR gmfgen::GenDiagram-» |
|
20 «EXPAND xpt::Common::copyright FOR editorGen-» |
|
21 package «providersPackageName»; |
|
22 |
|
23 «EXPAND xpt::Common::generatedClassComment» |
|
24 public class «elementTypesClassName» extends ElementInitializers { |
|
25 |
|
26 «EXPAND constructor-» |
|
27 |
|
28 «EXPAND attributes-» |
|
29 |
|
30 «EXPAND elementTypeField FOREACH getElements()-» |
|
31 |
|
32 «EXPAND getImageRegistry-» |
|
33 |
|
34 «EXPAND getImageRegistryKey-» |
|
35 |
|
36 «EXPAND getProvidedImageDescriptor-» |
|
37 |
|
38 «EXPAND getNamedElementImageDescriptor-» |
|
39 |
|
40 «EXPAND getNamedElementImage-» |
|
41 |
|
42 «EXPAND getAdaptableImageDescriptor-» |
|
43 |
|
44 «EXPAND getAdaptableImage-» |
|
45 |
|
46 «EXPAND getElement-» |
|
47 |
|
48 «EXPAND getElementType-» |
|
49 |
|
50 «EXPAND isKnownElementType-» |
|
51 |
|
52 «EXPAND additions-» |
|
53 } |
|
54 «ENDDEFINE» |
|
55 |
|
56 «DEFINE constructor FOR gmfgen::GenDiagram-» |
|
57 «EXPAND xpt::Common::generatedMemberComment» |
|
58 private «elementTypesClassName»() { |
|
59 } |
|
60 «ENDDEFINE» |
|
61 |
|
62 «DEFINE attributes FOR gmfgen::GenDiagram-» |
|
63 «EXPAND xpt::Common::generatedMemberComment» |
|
64 private static java.util.Map elements; |
|
65 |
|
66 «EXPAND xpt::Common::generatedMemberComment» |
|
67 private static org.eclipse.jface.resource.ImageRegistry imageRegistry; |
|
68 |
|
69 «EXPAND xpt::Common::generatedMemberComment» |
|
70 private static java.util.Set KNOWN_ELEMENT_TYPES; |
|
71 «ENDDEFINE» |
|
72 |
|
73 |
|
74 «DEFINE getImageRegistry FOR gmfgen::GenDiagram-» |
|
75 «EXPAND xpt::Common::generatedMemberComment» |
|
76 private static org.eclipse.jface.resource.ImageRegistry getImageRegistry() { |
|
77 if (imageRegistry == null) { |
|
78 imageRegistry = new org.eclipse.jface.resource.ImageRegistry(); |
|
79 } |
|
80 return imageRegistry; |
|
81 } |
|
82 «ENDDEFINE» |
|
83 |
|
84 «DEFINE getImageRegistryKey FOR gmfgen::GenDiagram-» |
|
85 «EXPAND xpt::Common::generatedMemberComment» |
|
86 private static String getImageRegistryKey(org.eclipse.emf.ecore.ENamedElement element) { |
|
87 return element.getName(); |
|
88 } |
|
89 «ENDDEFINE» |
|
90 |
|
91 «DEFINE getProvidedImageDescriptor FOR gmfgen::GenDiagram-» |
|
92 «EXPAND xpt::Common::generatedMemberComment» |
|
93 private static org.eclipse.jface.resource.ImageDescriptor getProvidedImageDescriptor(org.eclipse.emf.ecore.ENamedElement element) { |
|
94 if (element instanceof org.eclipse.emf.ecore.EStructuralFeature) { |
|
95 org.eclipse.emf.ecore.EStructuralFeature feature = ((org.eclipse.emf.ecore.EStructuralFeature) element); |
|
96 org.eclipse.emf.ecore.EClass eContainingClass = feature.getEContainingClass(); |
|
97 org.eclipse.emf.ecore.EClassifier eType = feature.getEType(); |
|
98 if (eContainingClass != null && !eContainingClass.isAbstract()){ |
|
99 element = eContainingClass; |
|
100 } else if (eType instanceof org.eclipse.emf.ecore.EClass && !((org.eclipse.emf.ecore.EClass)eType).isAbstract()){ |
|
101 element = eType; |
|
102 } |
|
103 } |
|
104 if (element instanceof org.eclipse.emf.ecore.EClass) { |
|
105 org.eclipse.emf.ecore.EClass eClass = (org.eclipse.emf.ecore.EClass) element; |
|
106 if (!eClass.isAbstract()) { |
|
107 return «editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemImageDescriptor( |
|
108 eClass.getEPackage().getEFactoryInstance().create(eClass)); |
|
109 } |
|
110 } |
|
111 // TODO : support structural features |
|
112 return null; |
|
113 } |
|
114 «ENDDEFINE» |
|
115 |
|
116 «DEFINE getNamedElementImageDescriptor FOR gmfgen::GenDiagram-» |
|
117 «EXPAND xpt::Common::generatedMemberComment» |
|
118 public static org.eclipse.jface.resource.ImageDescriptor getImageDescriptor(org.eclipse.emf.ecore.ENamedElement element) { |
|
119 String key = getImageRegistryKey(element); |
|
120 org.eclipse.jface.resource.ImageDescriptor imageDescriptor = getImageRegistry().getDescriptor(key); |
|
121 if (imageDescriptor == null) { |
|
122 «EXPAND loadProvidedImageDescriptor-» |
|
123 } |
|
124 return imageDescriptor; |
|
125 } |
|
126 «ENDDEFINE» |
|
127 |
|
128 «DEFINE loadProvidedImageDescriptor FOR gmfgen::GenDiagram-» |
|
129 imageDescriptor = getProvidedImageDescriptor(element); |
|
130 if (imageDescriptor == null) { |
|
131 imageDescriptor = org.eclipse.jface.resource.ImageDescriptor.getMissingImageDescriptor(); |
|
132 } |
|
133 getImageRegistry().put(key, imageDescriptor); |
|
134 «ENDDEFINE» |
|
135 |
|
136 «DEFINE getNamedElementImage FOR gmfgen::GenDiagram-» |
|
137 «EXPAND xpt::Common::generatedMemberComment» |
|
138 public static org.eclipse.swt.graphics.Image getImage(org.eclipse.emf.ecore.ENamedElement element) { |
|
139 String key = getImageRegistryKey(element); |
|
140 org.eclipse.swt.graphics.Image image = getImageRegistry().get(key); |
|
141 if (image == null) { |
|
142 org.eclipse.jface.resource.ImageDescriptor «EXPAND loadProvidedImageDescriptor-» |
|
143 image = getImageRegistry().get(key); |
|
144 } |
|
145 return image; |
|
146 } |
|
147 «ENDDEFINE» |
|
148 |
|
149 «DEFINE getAdaptableImageDescriptor FOR gmfgen::GenDiagram-» |
|
150 «EXPAND xpt::Common::generatedMemberComment» |
|
151 public static org.eclipse.jface.resource.ImageDescriptor getImageDescriptor(org.eclipse.core.runtime.IAdaptable hint) { |
|
152 «EXPAND getNamedElement-» |
|
153 return getImageDescriptor(element); |
|
154 } |
|
155 «ENDDEFINE» |
|
156 |
|
157 «DEFINE getNamedElement FOR gmfgen::GenDiagram-» |
|
158 org.eclipse.emf.ecore.ENamedElement element = getElement(hint); |
|
159 if (element == null) { |
|
160 return null; |
|
161 } |
|
162 «ENDDEFINE» |
|
163 |
|
164 «DEFINE getAdaptableImage FOR gmfgen::GenDiagram-» |
|
165 «EXPAND xpt::Common::generatedMemberComment» |
|
166 public static org.eclipse.swt.graphics.Image getImage(org.eclipse.core.runtime.IAdaptable hint) { |
|
167 «EXPAND getNamedElement-» |
|
168 return getImage(element); |
|
169 } |
|
170 «ENDDEFINE» |
|
171 |
|
172 «DEFINE getElement FOR gmfgen::GenDiagram-» |
|
173 «EXPAND xpt::Common::generatedMemberComment("Returns \'type\' of the ecore object associated with the hint.\n")» |
|
174 public static org.eclipse.emf.ecore.ENamedElement getElement(org.eclipse.core.runtime.IAdaptable hint) { |
|
175 Object type = hint.getAdapter(org.eclipse.gmf.runtime.emf.type.core.IElementType.class); |
|
176 if (elements == null) { |
|
177 elements = new java.util.IdentityHashMap(); |
|
178 «EXPAND bindUniqueIdentifierToNamedElement(getUniqueIdentifier()) FOR domainDiagramElement-» |
|
179 «FOREACH getNodes() AS node-» |
|
180 «EXPAND bindUniqueIdentifierToNamedElement(node.getUniqueIdentifier()) FOR node.modelFacet-» |
|
181 «ENDFOREACH-» |
|
182 «FOREACH links AS link-» |
|
183 «EXPAND bindUniqueIdentifierToNamedElement(link.getUniqueIdentifier()) FOR link.modelFacet-» |
|
184 «ENDFOREACH-» |
|
185 } |
|
186 return (org.eclipse.emf.ecore.ENamedElement) elements.get(type); |
|
187 } |
|
188 «ENDDEFINE» |
|
189 |
|
190 «DEFINE bindUniqueIdentifierToNamedElement(String id) FOR genmodel::GenClass» |
|
191 elements.put(«id», «EXPAND MetaModel::MetaClass»); |
|
192 «ENDDEFINE» |
|
193 |
|
194 «DEFINE bindUniqueIdentifierToNamedElement(String id) FOR gmfgen::ModelFacet» |
|
195 «ERROR "Unsupported model facet: " + this-» |
|
196 «ENDDEFINE» |
|
197 |
|
198 «DEFINE bindUniqueIdentifierToNamedElement(String id) FOR gmfgen::TypeModelFacet» |
|
199 «EXPAND bindUniqueIdentifierToNamedElement(id) FOR metaClass-» |
|
200 «ENDDEFINE» |
|
201 |
|
202 «DEFINE bindUniqueIdentifierToNamedElement(String id) FOR gmfgen::FeatureLinkModelFacet» |
|
203 elements.put(«id», «EXPAND MetaModel::MetaFeature FOR metaFeature»); |
|
204 «ENDDEFINE» |
|
205 |
|
206 «DEFINE elementTypeField FOR gmfgen::GenCommonBase-» |
|
207 «IF null != elementType-» |
|
208 «EXPAND xpt::Common::generatedMemberComment» |
|
209 public static final org.eclipse.gmf.runtime.emf.type.core.IElementType «getUniqueIdentifier()» = getElementType("«elementType.uniqueIdentifier»"); «EXPAND xpt::Common::nonNLS» |
|
210 «ENDIF-» |
|
211 «ENDDEFINE» |
|
212 |
|
213 «DEFINE getElementType FOR gmfgen::GenDiagram-» |
|
214 «EXPAND xpt::Common::generatedMemberComment» |
|
215 private static org.eclipse.gmf.runtime.emf.type.core.IElementType getElementType(String id) { |
|
216 return org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry.getInstance().getType(id); |
|
217 } |
|
218 «ENDDEFINE» |
|
219 |
|
220 «DEFINE isKnownElementType FOR gmfgen::GenDiagram-» |
|
221 «EXPAND xpt::Common::generatedMemberComment» |
|
222 public static boolean isKnownElementType(org.eclipse.gmf.runtime.emf.type.core.IElementType elementType) { |
|
223 if (KNOWN_ELEMENT_TYPES == null) { |
|
224 KNOWN_ELEMENT_TYPES = new java.util.HashSet(); |
|
225 «EXPAND addKnownElementType FOREACH getElements()-» |
|
226 } |
|
227 return KNOWN_ELEMENT_TYPES.contains(elementType); |
|
228 } |
|
229 «ENDDEFINE» |
|
230 |
|
231 «DEFINE addKnownElementType FOR gmfgen::GenCommonBase-» |
|
232 «IF null != elementType-» |
|
233 KNOWN_ELEMENT_TYPES.add(«getUniqueIdentifier()»); |
|
234 «ENDIF-» |
|
235 «ENDDEFINE» |
|
236 |
|
237 «DEFINE additions FOR gmfgen::GenDiagram-» |
|
238 «ENDDEFINE» |