Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.pkg/src-gen/org/eclipse/papyrus/uml/diagram/pkg/provider/InheritedClassDiagramViewProvider.java')
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.pkg/src-gen/org/eclipse/papyrus/uml/diagram/pkg/provider/InheritedClassDiagramViewProvider.java233
1 files changed, 233 insertions, 0 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.pkg/src-gen/org/eclipse/papyrus/uml/diagram/pkg/provider/InheritedClassDiagramViewProvider.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.pkg/src-gen/org/eclipse/papyrus/uml/diagram/pkg/provider/InheritedClassDiagramViewProvider.java
new file mode 100644
index 00000000000..acf7c29b6b7
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.pkg/src-gen/org/eclipse/papyrus/uml/diagram/pkg/provider/InheritedClassDiagramViewProvider.java
@@ -0,0 +1,233 @@
+/*****************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ *
+ * 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:
+ *
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.pkg.provider;
+
+import static org.eclipse.papyrus.infra.core.Activator.log;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateEdgeViewOperation;
+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateNodeViewOperation;
+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateViewForKindOperation;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.notation.Edge;
+import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.uml.diagram.clazz.providers.UMLViewProvider;
+
+public class InheritedClassDiagramViewProvider extends UMLViewProvider {
+
+ /** Local graphical type registry */
+ protected IGraphicalTypeRegistry registry = new GraphicalTypeRegistry();
+
+ @Override
+ public Edge createEdge(IAdaptable semanticAdapter, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
+ Edge createdEdge = null;
+
+ IElementType elementType = (IElementType)semanticAdapter.getAdapter(IElementType.class);
+ if(elementType != null) {
+ createdEdge = super.createEdge(semanticAdapter, containerView, semanticHint, index, persisted, preferencesHint);
+ } else {
+
+ EObject domainElement = (EObject)semanticAdapter.getAdapter(EObject.class);
+
+ String domainElementGraphicalType = semanticHint;
+ if(domainElementGraphicalType == null) {
+ domainElementGraphicalType = registry.getEdgeGraphicalType(domainElement);
+ }
+
+ if((!IGraphicalTypeRegistry.UNDEFINED_TYPE.equals(domainElementGraphicalType)) && (registry.isKnownEdgeType(domainElementGraphicalType))) {
+ // Cannot use createEdge from super class as it never take the graphical type (semanticHint) into account.
+ // createdEdge = super.createEdge(semanticAdapter, containerView, domainElementGraphicalType, index, persisted, preferencesHint);
+
+ if(ElementTypes.DEPENDENCY.getSemanticHint().equals(domainElementGraphicalType)) {
+ createdEdge = createDependency_4008(domainElement, containerView, index, persisted, preferencesHint);
+ }
+ if(ElementTypes.PACKAGE_IMPORT.getSemanticHint().equals(domainElementGraphicalType)) {
+ createdEdge = createPackageImport_4010(domainElement, containerView, index, persisted, preferencesHint);
+ }
+ if(ElementTypes.COMMENT_ANNOTATED_ELEMENT.getSemanticHint().equals(domainElementGraphicalType)) {
+ createdEdge = createCommentAnnotatedElement_4013(containerView, index, persisted, preferencesHint);
+ }
+ }
+ }
+
+ if(createdEdge == null) {
+ log.error(new Exception("Could not create Edge."));
+ }
+
+ return createdEdge;
+ }
+
+ @Override
+ protected boolean provides(CreateViewForKindOperation op) {
+
+ // This provider is registered for Package Diagram only
+ String diagramType = op.getContainerView().getDiagram().getType();
+ if(!ElementTypes.DIAGRAM_ID.equals(diagramType)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ protected boolean provides(CreateEdgeViewOperation op) {
+
+ // Must have a container
+ if(op.getContainerView() == null) {
+ return false;
+ }
+
+ // This provider is registered for Package Diagram only
+ String diagramType = op.getContainerView().getDiagram().getType();
+ if(!ElementTypes.DIAGRAM_ID.equals(diagramType)) {
+ return false;
+ }
+
+ IElementType elementType = getSemanticElementType(op.getSemanticAdapter());
+ if(elementType == ElementTypes.DEPENDENCY) {
+ return true;
+ }
+ if(elementType == ElementTypes.PACKAGE_IMPORT) {
+ return true;
+ }
+ if(elementType == ElementTypes.COMMENT_ANNOTATED_ELEMENT) {
+ return true;
+ }
+
+ // /////////////////////////////////////////////////////////////////////
+ // Test possibility to provide a view based on the semantic nature and its expected container.
+ // /////////////////////////////////////////////////////////////////////
+
+ // IElementType may be null (especially when drop from ModelExplorer).
+ // In such a case, test the semantic EObject instead.
+ if(elementType == null) {
+ EObject domainElement = (EObject)op.getSemanticAdapter().getAdapter(EObject.class);
+ String domainElementGraphicalType = op.getSemanticHint();
+ if(domainElementGraphicalType == null) {
+ domainElementGraphicalType = registry.getEdgeGraphicalType(domainElement);
+ }
+
+ if((!IGraphicalTypeRegistry.UNDEFINED_TYPE.equals(domainElementGraphicalType)) && (registry.isKnownEdgeType(domainElementGraphicalType))) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ protected boolean provides(CreateNodeViewOperation op) {
+ // Must have a container
+ if(op.getContainerView() == null) {
+ return false;
+ }
+ // Get the type of the container
+ String containerGraphicalType = op.getContainerView().getType();
+
+ // This provider is registered for Package Diagram only
+ String diagramType = op.getContainerView().getDiagram().getType();
+ if(!ElementTypes.DIAGRAM_ID.equals(diagramType)) {
+ return false;
+ }
+
+ // /////////////////////////////////////////////////////////////////////
+ // Test possibility to provide a view based on the ElementType and its expected container.
+ // /////////////////////////////////////////////////////////////////////
+
+ IElementType elementType = (IElementType)op.getSemanticAdapter().getAdapter(IElementType.class);
+ if(elementType == ElementTypes.PACKAGE) {
+ if(ElementTypes.DIAGRAM_ID.equals(containerGraphicalType)) {
+ return true;
+ }
+ }
+ if(elementType == ElementTypes.PACKAGE_CN) {
+ if(ElementTypes.PACKAGE_CN_COMPARTMENT_PACKAGEABLE_ELEMENT_HINT.equals(containerGraphicalType)) {
+ return true;
+ }
+ if(ElementTypes.PACKAGE_COMPARTMENT_PACKAGEABLE_ELEMENT_HINT.equals(containerGraphicalType)) {
+ return true;
+ }
+ }
+ if(elementType == ElementTypes.COMMENT) {
+ if(ElementTypes.DIAGRAM_ID.equals(containerGraphicalType)) {
+ return true;
+ }
+ }
+ if(elementType == ElementTypes.COMMENT_CN) {
+ if(ElementTypes.PACKAGE_CN_COMPARTMENT_PACKAGEABLE_ELEMENT_HINT.equals(containerGraphicalType)) {
+ return true;
+ }
+ if(ElementTypes.PACKAGE_COMPARTMENT_PACKAGEABLE_ELEMENT_HINT.equals(containerGraphicalType)) {
+ return true;
+ }
+ }
+
+ // /////////////////////////////////////////////////////////////////////
+ // Test possibility to provide a view based on the semantic nature and its expected container.
+ // /////////////////////////////////////////////////////////////////////
+
+ // IElementType may be null (especially when drop from ModelExplorer).
+ // In such a case, test the semantic EObject instead.
+ if(elementType == null) {
+ EObject domainElement = (EObject)op.getSemanticAdapter().getAdapter(EObject.class);
+ String domainElementGraphicalType = op.getSemanticHint();
+ if(domainElementGraphicalType == null) {
+ domainElementGraphicalType = registry.getNodeGraphicalType(domainElement, containerGraphicalType);
+ }
+
+ if((!IGraphicalTypeRegistry.UNDEFINED_TYPE.equals(domainElementGraphicalType)) && (registry.isKnownNodeType(domainElementGraphicalType))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public Node createNode(IAdaptable semanticAdapter, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
+
+ if(semanticHint != null) {
+ return super.createNode(semanticAdapter, containerView, semanticHint, index, persisted, preferencesHint);
+ }
+
+ // Use the GraphicalTypeRegistry to find the expected type for a domain element
+ // Get the type of the container
+ String containerGraphicalType = containerView.getType();
+ // Get the type of the domain element
+ EObject domainElement = (EObject)semanticAdapter.getAdapter(EObject.class);
+ String domainElementGraphicalType = registry.getNodeGraphicalType(domainElement, containerGraphicalType);
+
+ // Create the expected node
+ if(!IGraphicalTypeRegistry.UNDEFINED_TYPE.equals(domainElementGraphicalType)) {
+ return super.createNode(semanticAdapter, containerView, domainElementGraphicalType, index, persisted, preferencesHint);
+ }
+
+ log.error(new Exception("Could not create Node."));
+ return null;
+ }
+
+ @Override
+ protected void stampShortcut(View containerView, Node target) {
+ if(!ElementTypes.DIAGRAM_ID.equals(containerView.getDiagram().getType())) {
+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
+ shortcutAnnotation.getDetails().put("modelID", ElementTypes.DIAGRAM_ID); //$NON-NLS-1$
+ target.getEAnnotations().add(shortcutAnnotation);
+ }
+ }
+}

Back to the top