blob: f2440bb5e8f6838cdec0ecdb737e9874d6cb6d10 [file] [log] [blame]
/*
* Copyright (c) 2006, 2010 Borland Software Corporation and others
*
* 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/2009/GenModel'»
«IMPORT 'http://www.eclipse.org/emf/2002/GenModel'»
«EXTENSION xpt::diagram::Utils»
«DEFINE qualifiedClassName FOR gmfgen::GenDiagram»«providersPackageName».«elementTypesClassName»«ENDDEFINE»
«DEFINE ElementTypes FOR gmfgen::GenDiagram
«EXPAND xpt::Common::copyright FOR editorGen
package «providersPackageName»;
«EXPAND xpt::Common::generatedClassComment»
public class «elementTypesClassName» {
«EXPAND _constructor
«EXPAND attributes
«EXPAND elementTypeField FOREACH getAllTypedElements()-»
«EXPAND getNamedElementImageDescriptor
«EXPAND getNamedElementImage
«EXPAND getAdaptableImageDescriptor
«EXPAND getAdaptableImage
«EXPAND getElement
«EXPAND getElementType
«EXPAND isKnownElementType
«EXPAND getElementTypeByVisualID
«EXPAND typedInstance
«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 «EXPAND CodeStyle::G2('java.util.Map', 'org.eclipse.gmf.runtime.emf.type.core.IElementType', 'org.eclipse.emf.ecore.ENamedElement' elements;
«EXPAND xpt::Common::generatedMemberComment»
private static org.eclipse.gmf.tooling.runtime.providers.DiagramElementTypeImages elementTypeImages = new org.eclipse.gmf.tooling.runtime.providers.DiagramElementTypeImages(«-»
«editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory());
«EXPAND xpt::Common::generatedMemberComment»
private static «EXPAND CodeStyle::G('java.util.Set', 'org.eclipse.gmf.runtime.emf.type.core.IElementType' KNOWN_ELEMENT_TYPES;
«ENDDEFINE»
«REM»
Since 3.1, GMFT delegates ImageRegistry-related code to non-generated DiagramElementTypeImages, so methods below are not generated anymore.
If you still need one, you always can get it from 'elementTypeImages.getXXX()' call.
The only exception is 'DEFINE loadProvidedImageDescriptor FOR gmfgen::GenDiagram', which is not compatible with the delegation and removed completely.
«DEFINE getImageRegistry FOR gmfgen::GenDiagram»«ENDDEFINE»
«DEFINE getImageRegistryKey FOR gmfgen::GenDiagram»«ENDDEFINE»
«DEFINE getProvidedImageDescriptor FOR gmfgen::GenDiagram»«ENDDEFINE»
«ENDREM»
«DEFINE getNamedElementImageDescriptor FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.jface.resource.ImageDescriptor getImageDescriptor(org.eclipse.emf.ecore.ENamedElement element) {
return elementTypeImages.getImageDescriptor(element);
}
«ENDDEFINE»
«DEFINE getNamedElementImage FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.swt.graphics.Image getImage(org.eclipse.emf.ecore.ENamedElement element) {
return elementTypeImages.getImage(element);
}
«ENDDEFINE»
«DEFINE getAdaptableImageDescriptor FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.jface.resource.ImageDescriptor getImageDescriptor(org.eclipse.core.runtime.IAdaptable hint) {
return getImageDescriptor(getElement(hint));
}
«ENDDEFINE»
«DEFINE getAdaptableImage FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.swt.graphics.Image getImage(org.eclipse.core.runtime.IAdaptable hint) {
return getImage(getElement(hint));
}
«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 «EXPAND CodeStyle::G2('java.util.IdentityHashMap', 'org.eclipse.gmf.runtime.emf.type.core.IElementType', 'org.eclipse.emf.ecore.ENamedElement')»();
«EXPAND bindUniqueIdentifierToNamedElement(getUniqueIdentifier()) FOR domainDiagramElement
«FOREACH getAllNodes() AS node
«EXPAND bindUniqueIdentifierToNamedElement(node.getUniqueIdentifier()) FOR node.modelFacet
«ENDFOREACH
«FOREACH links->asSequence() AS link
«EXPAND bindUniqueIdentifierToNamedElement(link.getUniqueIdentifier()) FOR link.modelFacet
«ENDFOREACH
}
return (org.eclipse.emf.ecore.ENamedElement) elements.get(type);
}
«ENDDEFINE»
«DEFINE bindUniqueIdentifierToNamedElement(id : String) FOR genmodel::GenClass»
elements.putid», «EXPAND MetaModel::MetaClass»);
«ENDDEFINE»
«DEFINE bindUniqueIdentifierToNamedElement(id : String) FOR gmfgen::ModelFacet»
«ERROR 'Unsupported model facet: ' + self.repr()-»
«ENDDEFINE»
«DEFINE bindUniqueIdentifierToNamedElement(id : String) FOR gmfgen::TypeModelFacet»
«EXPAND bindUniqueIdentifierToNamedElement(id) FOR metaClass
«ENDDEFINE»
«DEFINE bindUniqueIdentifierToNamedElement(id : String) FOR gmfgen::FeatureLinkModelFacet»
elements.putid», «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 accessElementType FOR gmfgen::GenCommonBase»«getDiagram().getElementTypesQualifiedClassName()».«getUniqueIdentifier()»«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 «EXPAND CodeStyle::G('java.util.HashSet', 'org.eclipse.gmf.runtime.emf.type.core.IElementType')»();
«EXPAND addKnownElementType FOREACH getAllTypedElements()-»
}
return KNOWN_ELEMENT_TYPES.contains(elementType);
}
«ENDDEFINE»
«DEFINE addKnownElementType FOR gmfgen::GenCommonBase
«IF null <> elementType
KNOWN_ELEMENT_TYPES.addgetUniqueIdentifier()»);
«ENDIF
«ENDDEFINE»
«DEFINE getElementTypeByVisualID FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedMemberComment»
public static org.eclipse.gmf.runtime.emf.type.core.IElementType getElementType(int visualID) {
switch (visualID) {
«EXPAND caseElementType FOREACH getAllTypedElements()->select(el | el.elementType <> null)-»
}
return null;
}
«ENDDEFINE»
«DEFINE caseElementType FOR gmfgen::GenCommonBase
«EXPAND xpt::Common::caseVisualID
return «getUniqueIdentifier()»;
«ENDDEFINE»
«DEFINE typedInstanceName FOR gmfgen::GenDiagram»TYPED_INSTANCE«ENDDEFINE»
«DEFINE typedInstanceCall FOR gmfgen::GenDiagram»«EXPAND qualifiedClassName».«EXPAND typedInstanceName»«ENDDEFINE»
«DEFINE typedInstance FOR gmfgen::GenDiagram
«EXPAND xpt::Common::generatedClassComment»
public static final org.eclipse.gmf.tooling.runtime.providers.DiagramElementTypes TYPED_INSTANCE
= new org.eclipse.gmf.tooling.runtime.providers.DiagramElementTypes(elementTypeImages) {
«EXPAND xpt::Common::generatedMemberComment»
«EXPAND CodeStyle::override»
public boolean isKnownElementType(org.eclipse.gmf.runtime.emf.type.core.IElementType elementType) {
return «EXPAND qualifiedClassName».isKnownElementType(elementType);
}
«EXPAND xpt::Common::generatedMemberComment»
«EXPAND CodeStyle::override»
public org.eclipse.gmf.runtime.emf.type.core.IElementType getElementTypeForVisualId(int visualID) {
return «EXPAND qualifiedClassName».getElementType(visualID);
}
«EXPAND xpt::Common::generatedMemberComment»
«EXPAND CodeStyle::override»
public org.eclipse.emf.ecore.ENamedElement getDefiningNamedElement(org.eclipse.core.runtime.IAdaptable elementTypeAdapter) {
return «EXPAND qualifiedClassName».getElement(elementTypeAdapter);
}
};
«ENDDEFINE»
«DEFINE additions FOR gmfgen::GenDiagram
«ENDDEFINE»