/***************************************************************************** * Copyright (c) 2009 Atos Origin. * * * 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: * Emilien Perico (Atos Origin) emilien.perico@atosorigin.com - Initial API and implementation * *****************************************************************************/ package org.eclipse.papyrus.uml.diagram.usecase.providers; import java.util.HashSet; import java.util.IdentityHashMap; import java.util.Map; import java.util.Set; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.ENamedElement; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry; import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.AbstractionEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ActorAsRectangleEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ActorEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ActorInComponentEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ActorInPackageEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.AssociationEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.CommentAnnotatedElementEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.CommentEditPartCN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.CommentEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ComponentInComponentEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ComponentInPackageEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ConstraintConstrainedElementEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ConstraintEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ConstraintInComponentEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ConstraintInPackageEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.DefaultNamedElementEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.DependencyEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ExtendEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ExtensionPointEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ExtensionPointInRectangleEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.GeneralizationEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.IncludeEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.PackageEditPartCN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.PackageEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.PackageImportEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.PackageMergeEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.RealizationEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ShapeNamedElementEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.ShortCutDiagramEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.SubjectClassifierEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.UsageEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.UseCaseAsRectangleEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.UseCaseDiagramEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.UseCaseEditPartTN; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.UseCaseInComponentEditPart; import org.eclipse.papyrus.uml.diagram.usecase.edit.parts.UseCaseInPackageEditPart; import org.eclipse.papyrus.uml.diagram.usecase.part.UMLDiagramEditorPlugin; import org.eclipse.swt.graphics.Image; import org.eclipse.uml2.uml.UMLPackage; /** * @generated */ public class UMLElementTypes { /** * @generated */ private UMLElementTypes() { } /** * @generated */ private static Map<IElementType, ENamedElement> elements; /** * @generated */ private static ImageRegistry imageRegistry; /** * @generated */ private static Set<IElementType> KNOWN_ELEMENT_TYPES; /** * @generated */ public static final IElementType Package_1000 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Package_1000"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Actor_2011 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Actor_2011"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Actor_2012 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Actor_2012"); //$NON-NLS-1$ /** * @generated */ public static final IElementType UseCase_2013 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.UseCase_2013"); //$NON-NLS-1$ /** * @generated */ public static final IElementType UseCase_2014 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.UseCase_2014"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Classifier_2015 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Classifier_2015"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Package_2016 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Package_2016"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Constraint_2017 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Constraint_2017"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Comment_2018 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Comment_2018"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Diagram_2019 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Diagram_2019"); //$NON-NLS-1$ /** * @generated */ public static final IElementType NamedElement_2022 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.DefaultNamedElement_2022"); //$NON-NLS-1$ /** * @generated */ public static final IElementType NamedElement_2023 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.NamedElement_2023"); //$NON-NLS-1$ /** * @generated */ public static final IElementType ExtensionPoint_3007 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.ExtensionPoint_3007"); //$NON-NLS-1$ /** * @generated */ public static final IElementType ExtensionPoint_3008 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.ExtensionPoint_3008"); //$NON-NLS-1$ /** * @generated */ public static final IElementType UseCase_3009 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.UseCase_3009"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Component_3016 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Component_3016"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Comment_3015 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Comment_3015"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Constraint_3017 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Constraint_3017"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Actor_3018 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Actor_3018"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Constraint_3010 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Constraint_3010"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Actor_3011 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Actor_3011"); //$NON-NLS-1$ /** * @generated */ public static final IElementType UseCase_3012 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.UseCase_3012"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Component_3013 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Component_3013"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Package_3014 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Package_3014"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Include_4008 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Include_4008"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Extend_4009 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Extend_4009"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Generalization_4010 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Generalization_4010"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Association_4011 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Association_4011"); //$NON-NLS-1$ /** * @generated */ public static final IElementType ConstraintConstrainedElement_4012 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.ConstraintConstrainedElement_4012"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Dependency_4013 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Dependency_4013"); //$NON-NLS-1$ /** * @generated */ public static final IElementType CommentAnnotatedElement_4014 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.CommentAnnotatedElement_4014"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Abstraction_4015 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Abstraction_4015"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Usage_4016 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Usage_4016"); //$NON-NLS-1$ /** * @generated */ public static final IElementType Realization_4017 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.Realization_4017"); //$NON-NLS-1$ /** * @generated */ public static final IElementType PackageMerge_4018 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.PackageMerge_4018"); //$NON-NLS-1$ /** * @generated */ public static final IElementType PackageImport_4019 = getElementType("org.eclipse.papyrus.uml.diagram.usecase.PackageImport_4019"); //$NON-NLS-1$ /** * @generated */ private static ImageRegistry getImageRegistry() { if(imageRegistry == null) { imageRegistry = new ImageRegistry(); } return imageRegistry; } /** * @generated */ private static String getImageRegistryKey(ENamedElement element) { return element.getName(); } /** * @generated */ private static ImageDescriptor getProvidedImageDescriptor(ENamedElement element) { if(element instanceof EStructuralFeature) { EStructuralFeature feature = ((EStructuralFeature)element); EClass eContainingClass = feature.getEContainingClass(); EClassifier eType = feature.getEType(); if(eContainingClass != null && !eContainingClass.isAbstract()) { element = eContainingClass; } else if(eType instanceof EClass && !((EClass)eType).isAbstract()) { element = eType; } } if(element instanceof EClass) { EClass eClass = (EClass)element; if(!eClass.isAbstract()) { return UMLDiagramEditorPlugin.getInstance().getItemImageDescriptor(eClass.getEPackage().getEFactoryInstance().create(eClass)); } } // TODO : support structural features return null; } /** * @generated */ public static ImageDescriptor getImageDescriptor(ENamedElement element) { String key = getImageRegistryKey(element); ImageDescriptor imageDescriptor = getImageRegistry().getDescriptor(key); if(imageDescriptor == null) { imageDescriptor = getProvidedImageDescriptor(element); if(imageDescriptor == null) { imageDescriptor = ImageDescriptor.getMissingImageDescriptor(); } getImageRegistry().put(key, imageDescriptor); } return imageDescriptor; } /** * @generated */ public static Image getImage(ENamedElement element) { String key = getImageRegistryKey(element); Image image = getImageRegistry().get(key); if(image == null) { ImageDescriptor imageDescriptor = getProvidedImageDescriptor(element); if(imageDescriptor == null) { imageDescriptor = ImageDescriptor.getMissingImageDescriptor(); } getImageRegistry().put(key, imageDescriptor); image = getImageRegistry().get(key); } return image; } /** * @generated */ public static ImageDescriptor getImageDescriptor(IAdaptable hint) { ENamedElement element = getElement(hint); if(element == null) { return null; } return getImageDescriptor(element); } /** * @generated */ public static Image getImage(IAdaptable hint) { ENamedElement element = getElement(hint); if(element == null) { return null; } return getImage(element); } /** * Returns 'type' of the ecore object associated with the hint. * * @generated */ public static ENamedElement getElement(IAdaptable hint) { Object type = hint.getAdapter(IElementType.class); if(elements == null) { elements = new IdentityHashMap<IElementType, ENamedElement>(); elements.put(Package_1000, UMLPackage.eINSTANCE.getPackage()); elements.put(Actor_2011, UMLPackage.eINSTANCE.getActor()); elements.put(Actor_2012, UMLPackage.eINSTANCE.getActor()); elements.put(UseCase_2013, UMLPackage.eINSTANCE.getUseCase()); elements.put(UseCase_2014, UMLPackage.eINSTANCE.getUseCase()); elements.put(Classifier_2015, UMLPackage.eINSTANCE.getClassifier()); elements.put(Package_2016, UMLPackage.eINSTANCE.getPackage()); elements.put(Constraint_2017, UMLPackage.eINSTANCE.getConstraint()); elements.put(Comment_2018, UMLPackage.eINSTANCE.getComment()); elements.put(NamedElement_2022, UMLPackage.eINSTANCE.getNamedElement()); elements.put(NamedElement_2023, UMLPackage.eINSTANCE.getNamedElement()); elements.put(Diagram_2019, NotationPackage.eINSTANCE.getDiagram()); elements.put(ExtensionPoint_3007, UMLPackage.eINSTANCE.getExtensionPoint()); elements.put(ExtensionPoint_3008, UMLPackage.eINSTANCE.getExtensionPoint()); elements.put(UseCase_3009, UMLPackage.eINSTANCE.getUseCase()); elements.put(Component_3016, UMLPackage.eINSTANCE.getComponent()); elements.put(Comment_3015, UMLPackage.eINSTANCE.getComment()); elements.put(Constraint_3017, UMLPackage.eINSTANCE.getConstraint()); elements.put(Actor_3018, UMLPackage.eINSTANCE.getActor()); elements.put(Constraint_3010, UMLPackage.eINSTANCE.getConstraint()); elements.put(Actor_3011, UMLPackage.eINSTANCE.getActor()); elements.put(UseCase_3012, UMLPackage.eINSTANCE.getUseCase()); elements.put(Component_3013, UMLPackage.eINSTANCE.getComponent()); elements.put(Package_3014, UMLPackage.eINSTANCE.getPackage()); elements.put(Include_4008, UMLPackage.eINSTANCE.getInclude()); elements.put(Extend_4009, UMLPackage.eINSTANCE.getExtend()); elements.put(Generalization_4010, UMLPackage.eINSTANCE.getGeneralization()); elements.put(Association_4011, UMLPackage.eINSTANCE.getAssociation()); elements.put(ConstraintConstrainedElement_4012, UMLPackage.eINSTANCE.getConstraint_ConstrainedElement()); elements.put(Dependency_4013, UMLPackage.eINSTANCE.getDependency()); elements.put(CommentAnnotatedElement_4014, UMLPackage.eINSTANCE.getComment_AnnotatedElement()); elements.put(Abstraction_4015, UMLPackage.eINSTANCE.getAbstraction()); elements.put(Usage_4016, UMLPackage.eINSTANCE.getUsage()); elements.put(Realization_4017, UMLPackage.eINSTANCE.getRealization()); elements.put(PackageMerge_4018, UMLPackage.eINSTANCE.getPackageMerge()); elements.put(PackageImport_4019, UMLPackage.eINSTANCE.getPackageImport()); } return (ENamedElement)elements.get(type); } /** * @generated */ private static IElementType getElementType(String id) { return ElementTypeRegistry.getInstance().getType(id); } /** * @generated */ public static boolean isKnownElementType(IElementType elementType) { if(KNOWN_ELEMENT_TYPES == null) { KNOWN_ELEMENT_TYPES = new HashSet<IElementType>(); KNOWN_ELEMENT_TYPES.add(Package_1000); KNOWN_ELEMENT_TYPES.add(Actor_2011); KNOWN_ELEMENT_TYPES.add(Actor_2012); KNOWN_ELEMENT_TYPES.add(UseCase_2013); KNOWN_ELEMENT_TYPES.add(UseCase_2014); KNOWN_ELEMENT_TYPES.add(Classifier_2015); KNOWN_ELEMENT_TYPES.add(Package_2016); KNOWN_ELEMENT_TYPES.add(Constraint_2017); KNOWN_ELEMENT_TYPES.add(Comment_2018); KNOWN_ELEMENT_TYPES.add(NamedElement_2022); KNOWN_ELEMENT_TYPES.add(NamedElement_2023); KNOWN_ELEMENT_TYPES.add(Diagram_2019); KNOWN_ELEMENT_TYPES.add(ExtensionPoint_3007); KNOWN_ELEMENT_TYPES.add(ExtensionPoint_3008); KNOWN_ELEMENT_TYPES.add(UseCase_3009); KNOWN_ELEMENT_TYPES.add(Component_3016); KNOWN_ELEMENT_TYPES.add(Comment_3015); KNOWN_ELEMENT_TYPES.add(Constraint_3017); KNOWN_ELEMENT_TYPES.add(Actor_3018); KNOWN_ELEMENT_TYPES.add(Constraint_3010); KNOWN_ELEMENT_TYPES.add(Actor_3011); KNOWN_ELEMENT_TYPES.add(UseCase_3012); KNOWN_ELEMENT_TYPES.add(Component_3013); KNOWN_ELEMENT_TYPES.add(Package_3014); KNOWN_ELEMENT_TYPES.add(Include_4008); KNOWN_ELEMENT_TYPES.add(Extend_4009); KNOWN_ELEMENT_TYPES.add(Generalization_4010); KNOWN_ELEMENT_TYPES.add(Association_4011); KNOWN_ELEMENT_TYPES.add(ConstraintConstrainedElement_4012); KNOWN_ELEMENT_TYPES.add(Dependency_4013); KNOWN_ELEMENT_TYPES.add(CommentAnnotatedElement_4014); KNOWN_ELEMENT_TYPES.add(Abstraction_4015); KNOWN_ELEMENT_TYPES.add(Usage_4016); KNOWN_ELEMENT_TYPES.add(Realization_4017); KNOWN_ELEMENT_TYPES.add(PackageMerge_4018); KNOWN_ELEMENT_TYPES.add(PackageImport_4019); } return KNOWN_ELEMENT_TYPES.contains(elementType); } /** * @generated */ public static IElementType getElementType(int visualID) { switch(visualID) { case UseCaseDiagramEditPart.VISUAL_ID: return Package_1000; case ActorEditPartTN.VISUAL_ID: return Actor_2011; case ActorAsRectangleEditPartTN.VISUAL_ID: return Actor_2012; case UseCaseEditPartTN.VISUAL_ID: return UseCase_2013; case UseCaseAsRectangleEditPartTN.VISUAL_ID: return UseCase_2014; case SubjectClassifierEditPartTN.VISUAL_ID: return Classifier_2015; case PackageEditPartTN.VISUAL_ID: return Package_2016; case ConstraintEditPartTN.VISUAL_ID: return Constraint_2017; case CommentEditPartTN.VISUAL_ID: return Comment_2018; case DefaultNamedElementEditPartTN.VISUAL_ID: return NamedElement_2022; case ShapeNamedElementEditPart.VISUAL_ID: return NamedElement_2023; case ShortCutDiagramEditPart.VISUAL_ID: return Diagram_2019; case ExtensionPointEditPart.VISUAL_ID: return ExtensionPoint_3007; case ExtensionPointInRectangleEditPart.VISUAL_ID: return ExtensionPoint_3008; case UseCaseInComponentEditPart.VISUAL_ID: return UseCase_3009; case ComponentInComponentEditPart.VISUAL_ID: return Component_3016; case CommentEditPartCN.VISUAL_ID: return Comment_3015; case ConstraintInComponentEditPart.VISUAL_ID: return Constraint_3017; case ActorInComponentEditPart.VISUAL_ID: return Actor_3018; case ConstraintInPackageEditPart.VISUAL_ID: return Constraint_3010; case ActorInPackageEditPart.VISUAL_ID: return Actor_3011; case UseCaseInPackageEditPart.VISUAL_ID: return UseCase_3012; case ComponentInPackageEditPart.VISUAL_ID: return Component_3013; case PackageEditPartCN.VISUAL_ID: return Package_3014; case IncludeEditPart.VISUAL_ID: return Include_4008; case ExtendEditPart.VISUAL_ID: return Extend_4009; case GeneralizationEditPart.VISUAL_ID: return Generalization_4010; case AssociationEditPart.VISUAL_ID: return Association_4011; case ConstraintConstrainedElementEditPart.VISUAL_ID: return ConstraintConstrainedElement_4012; case DependencyEditPart.VISUAL_ID: return Dependency_4013; case CommentAnnotatedElementEditPart.VISUAL_ID: return CommentAnnotatedElement_4014; case AbstractionEditPart.VISUAL_ID: return Abstraction_4015; case UsageEditPart.VISUAL_ID: return Usage_4016; case RealizationEditPart.VISUAL_ID: return Realization_4017; case PackageMergeEditPart.VISUAL_ID: return PackageMerge_4018; case PackageImportEditPart.VISUAL_ID: return PackageImport_4019; } return null; } }