carbidecpp22devenv/plugins/org.eclipse.gmf.templates.legacy_1.0.0.v20090614-0839/codegen.templates/xpt/providers/ElementTypes.xpt
changeset 422 033392511bf7
equal deleted inserted replaced
421:631a44165bcf 422:033392511bf7
       
     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»