carbidecpp22devenv/plugins/org.eclipse.gmf.templates.legacy_1.0.0.v20090614-0839/codegen.templates/xpt/providers/ElementTypes.xpt
author cawthron
Fri, 04 Dec 2009 11:06:59 -0600
changeset 422 033392511bf7
permissions -rw-r--r--
add files for RCL_2_2

/*
 * Copyright (c) 2006, 2008 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:
 *    Dmitry Stadnik (Borland) - initial API and implementation
 */

«IMPORT "http://www.eclipse.org/gmf/2008/GenModel"»
«IMPORT "http://www.eclipse.org/emf/2002/GenModel"»
«IMPORT "http://www.eclipse.org/emf/2002/Ecore"»
«EXTENSION xpt::diagram::Utils»
«EXTENSION xpt::GenModelUtils»

«DEFINE ElementTypes FOR gmfgen::GenDiagram-»
«EXPAND xpt::Common::copyright FOR editorGen-»
package «providersPackageName»;

«EXPAND xpt::Common::generatedClassComment»
public class «elementTypesClassName» extends ElementInitializers {

	«EXPAND constructor-»
	
	«EXPAND attributes-»
	
	«EXPAND elementTypeField FOREACH getElements()-»
	
	«EXPAND getImageRegistry-»

	«EXPAND getImageRegistryKey-»

	«EXPAND getProvidedImageDescriptor-»

	«EXPAND getNamedElementImageDescriptor-»

	«EXPAND getNamedElementImage-»

	«EXPAND getAdaptableImageDescriptor-»

	«EXPAND getAdaptableImage-»

	«EXPAND getElement-»

	«EXPAND getElementType-»

	«EXPAND isKnownElementType-»

	«EXPAND additions-»
}
«ENDDEFINE»

«DEFINE constructor FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
private «elementTypesClassName»() {
}
«ENDDEFINE»

«DEFINE attributes FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
private static java.util.Map elements;

	«EXPAND xpt::Common::generatedMemberComment»
private static org.eclipse.jface.resource.ImageRegistry imageRegistry;

	«EXPAND xpt::Common::generatedMemberComment»
private static java.util.Set KNOWN_ELEMENT_TYPES;
«ENDDEFINE»


«DEFINE getImageRegistry FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
private static org.eclipse.jface.resource.ImageRegistry getImageRegistry() {
	if (imageRegistry == null) {
		imageRegistry = new org.eclipse.jface.resource.ImageRegistry();
	}
	return imageRegistry;
}
«ENDDEFINE»

«DEFINE getImageRegistryKey FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
private static String getImageRegistryKey(org.eclipse.emf.ecore.ENamedElement element) {
	return element.getName();
}
«ENDDEFINE»

«DEFINE getProvidedImageDescriptor FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
private static org.eclipse.jface.resource.ImageDescriptor getProvidedImageDescriptor(org.eclipse.emf.ecore.ENamedElement element) {
	if (element instanceof org.eclipse.emf.ecore.EStructuralFeature) {
		org.eclipse.emf.ecore.EStructuralFeature feature = ((org.eclipse.emf.ecore.EStructuralFeature) element);
		org.eclipse.emf.ecore.EClass eContainingClass = feature.getEContainingClass();
		org.eclipse.emf.ecore.EClassifier eType = feature.getEType();
		if (eContainingClass != null && !eContainingClass.isAbstract()){
			element = eContainingClass;
		} else if (eType instanceof org.eclipse.emf.ecore.EClass && !((org.eclipse.emf.ecore.EClass)eType).isAbstract()){
			element = eType;
		}
	}
	if (element instanceof org.eclipse.emf.ecore.EClass) {
		org.eclipse.emf.ecore.EClass eClass = (org.eclipse.emf.ecore.EClass) element;
		if (!eClass.isAbstract()) {
			return «editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemImageDescriptor(
				eClass.getEPackage().getEFactoryInstance().create(eClass));
		}
	}
	// TODO : support structural features
	return null;
}
«ENDDEFINE»

«DEFINE getNamedElementImageDescriptor FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.jface.resource.ImageDescriptor getImageDescriptor(org.eclipse.emf.ecore.ENamedElement element) {
	String key = getImageRegistryKey(element);
	org.eclipse.jface.resource.ImageDescriptor imageDescriptor = getImageRegistry().getDescriptor(key);
	if (imageDescriptor == null) {
		«EXPAND loadProvidedImageDescriptor-»
	}
	return imageDescriptor;
}
«ENDDEFINE»

«DEFINE loadProvidedImageDescriptor FOR gmfgen::GenDiagram-»
imageDescriptor = getProvidedImageDescriptor(element);
if (imageDescriptor == null) {
	imageDescriptor = org.eclipse.jface.resource.ImageDescriptor.getMissingImageDescriptor();
}
getImageRegistry().put(key, imageDescriptor);
«ENDDEFINE»

«DEFINE getNamedElementImage FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.swt.graphics.Image getImage(org.eclipse.emf.ecore.ENamedElement element) {
	String key = getImageRegistryKey(element);
	org.eclipse.swt.graphics.Image image = getImageRegistry().get(key);
	if (image == null) {
		org.eclipse.jface.resource.ImageDescriptor «EXPAND loadProvidedImageDescriptor-»
		image = getImageRegistry().get(key);
	}
	return image;
}
«ENDDEFINE»

«DEFINE getAdaptableImageDescriptor FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.jface.resource.ImageDescriptor getImageDescriptor(org.eclipse.core.runtime.IAdaptable hint) {
	«EXPAND getNamedElement-»
	return getImageDescriptor(element);
}
«ENDDEFINE»

«DEFINE getNamedElement FOR gmfgen::GenDiagram-»
org.eclipse.emf.ecore.ENamedElement element = getElement(hint);
if (element == null) {
	return null;
}
«ENDDEFINE»

«DEFINE getAdaptableImage FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.swt.graphics.Image getImage(org.eclipse.core.runtime.IAdaptable hint) {
	«EXPAND getNamedElement-»
	return getImage(element);
}
«ENDDEFINE»

«DEFINE getElement FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment("Returns \'type\' of the ecore object associated with the hint.\n")»
public static org.eclipse.emf.ecore.ENamedElement getElement(org.eclipse.core.runtime.IAdaptable hint) {
	Object type = hint.getAdapter(org.eclipse.gmf.runtime.emf.type.core.IElementType.class);
	if (elements == null) {
		elements = new java.util.IdentityHashMap();
		«EXPAND bindUniqueIdentifierToNamedElement(getUniqueIdentifier()) FOR domainDiagramElement-»
		«FOREACH getNodes() AS node-»
			«EXPAND bindUniqueIdentifierToNamedElement(node.getUniqueIdentifier()) FOR node.modelFacet-»
		«ENDFOREACH-»
		«FOREACH links AS link-»
			«EXPAND bindUniqueIdentifierToNamedElement(link.getUniqueIdentifier()) FOR link.modelFacet-»
		«ENDFOREACH-»
	}
	return (org.eclipse.emf.ecore.ENamedElement) elements.get(type);
}
«ENDDEFINE»

«DEFINE bindUniqueIdentifierToNamedElement(String id) FOR genmodel::GenClass»
	elements.put(«id», «EXPAND MetaModel::MetaClass»);
«ENDDEFINE»

«DEFINE bindUniqueIdentifierToNamedElement(String id) FOR gmfgen::ModelFacet»
	«ERROR "Unsupported model facet: " + this-»
«ENDDEFINE»

«DEFINE bindUniqueIdentifierToNamedElement(String id) FOR gmfgen::TypeModelFacet»
	«EXPAND bindUniqueIdentifierToNamedElement(id) FOR metaClass-»
«ENDDEFINE»

«DEFINE bindUniqueIdentifierToNamedElement(String id) FOR gmfgen::FeatureLinkModelFacet»
	elements.put(«id», «EXPAND MetaModel::MetaFeature FOR metaFeature»);
«ENDDEFINE»

«DEFINE elementTypeField FOR gmfgen::GenCommonBase-»
	«IF null != elementType-»
		«EXPAND xpt::Common::generatedMemberComment»
public static final org.eclipse.gmf.runtime.emf.type.core.IElementType «getUniqueIdentifier()» = getElementType("«elementType.uniqueIdentifier»"); «EXPAND xpt::Common::nonNLS»
	«ENDIF-»
«ENDDEFINE»

«DEFINE getElementType FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
private static org.eclipse.gmf.runtime.emf.type.core.IElementType getElementType(String id) {
	return org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry.getInstance().getType(id);
}
«ENDDEFINE»

«DEFINE isKnownElementType FOR gmfgen::GenDiagram-»
	«EXPAND xpt::Common::generatedMemberComment»
public static boolean isKnownElementType(org.eclipse.gmf.runtime.emf.type.core.IElementType elementType) {
	if (KNOWN_ELEMENT_TYPES == null) {
		KNOWN_ELEMENT_TYPES = new java.util.HashSet();
		«EXPAND addKnownElementType FOREACH getElements()-»
	}
	return KNOWN_ELEMENT_TYPES.contains(elementType);
}
«ENDDEFINE»

«DEFINE addKnownElementType FOR gmfgen::GenCommonBase-»
	«IF null != elementType-»
KNOWN_ELEMENT_TYPES.add(«getUniqueIdentifier()»);
	«ENDIF-»
«ENDDEFINE»

«DEFINE additions FOR gmfgen::GenDiagram-»
«ENDDEFINE»