Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrschnekenbu2012-08-27 15:11:58 +0000
committerrschnekenbu2012-08-27 15:11:58 +0000
commit11740adf4e905c107f734a0689d2e60f523c9ba8 (patch)
tree410f4c324f7cc43d33d145cff8466133425ebb0b
parent1c7a7a8411ce3db102e23586cc1be90849e4bb77 (diff)
downloadorg.eclipse.papyrus-11740adf4e905c107f734a0689d2e60f523c9ba8.tar.gz
org.eclipse.papyrus-11740adf4e905c107f734a0689d2e60f523c9ba8.tar.xz
org.eclipse.papyrus-11740adf4e905c107f734a0689d2e60f523c9ba8.zip
375537: [SysML Internal Block Diagram] Unless necessary providing explicit GraphicalType as ViewDescriptor parameter should be avoided
https://bugs.eclipse.org/bugs/show_bug.cgi?id=375537 - adding null to the Ctor of the view descriptors for the drop in internal block diagram editor - adding 2 contexts for custom sysml view providers (element type semantic hints are also found from the semantic adapter, given a specific interface)
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.blockdefinition/plugin.xml24
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/ISemanticHintAdapter.java27
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/SemanticElementAdapter.java16
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/plugin.xml37
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/BlockDropHelper.java4
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PartDropHelper.java2
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PortDropHelper.java2
-rw-r--r--plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/TypeDropHelper.java8
8 files changed, 106 insertions, 14 deletions
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.blockdefinition/plugin.xml b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.blockdefinition/plugin.xml
index a79398cf196..2540a8c6fde 100644
--- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.blockdefinition/plugin.xml
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.blockdefinition/plugin.xml
@@ -580,6 +580,30 @@
<context viewClass="org.eclipse.gmf.runtime.notation.Edge" semanticHints="SysML::AssociationNone, UML::Dependency, SysML::Association, UML::InterfaceRealization, UML::Generalization, SysML::AssociationSharedDirected, SysML::AssociationCompositeDirected, SysML::AssociationComposite, UML::Usage, SysML::AssociationNoneDirected, SysML::AssociationShared"/>
<context viewClass="org.eclipse.gmf.runtime.notation.Edge" semanticHints="link_uml_dependency, link_uml_usage, link_uml_interfacerealization, link_sysml_association, link_uml_generalization"/>
+ <object id="elementtype.node"
+ class="org.eclipse.papyrus.gmf.diagram.common.commands.ISemanticHintAdapter(org.eclipse.papyrus.sysml.diagram.common)">
+
+ <method
+ name="getSemanticHint()"
+ value="SysML::ActorPartProperty, SysML::ReferenceProperty, UML::EnumerationLiteral, SysML::ConstraintBlock, UML::Signal, UML::Operation, SysML::FlowProperty, UML::PrimitiveType, UML::Port, SysML::ConstraintProperty, SysML::ValueProperty, UML::Reception, UML::Interface, UML::Constraint, UML::DataType, SysML::Unit, UML::Enumeration, SysML::ValueType, UML::Actor, UML::Property, SysML::Dimension, SysML::FlowSpecification, SysML::PartProperty, SysML::Block, SysML::FlowPort">
+ </method>
+ </object>
+ <context
+ elements="elementtype.node"
+ viewClass="org.eclipse.gmf.runtime.notation.Node">
+ </context>
+ <object id="elementtype.edge"
+ class="org.eclipse.papyrus.gmf.diagram.common.commands.ISemanticHintAdapter(org.eclipse.papyrus.sysml.diagram.common)">
+ <method
+ name="getSemanticHint()"
+ value="SysML::AssociationNone, UML::Dependency, SysML::Association, UML::InterfaceRealization, UML::Generalization, SysML::AssociationSharedDirected, SysML::AssociationCompositeDirected, SysML::AssociationComposite, UML::Usage, SysML::AssociationNoneDirected, SysML::AssociationShared">
+ </method>
+ </object>
+ <context
+ elements="elementtype.edge"
+ viewClass="org.eclipse.gmf.runtime.notation.Edge">
+ </context>
+
<!-- Additional descriptors provided in case the semantic hint is is not provided -->
<!-- "uml.Actor" -->
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/ISemanticHintAdapter.java b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/ISemanticHintAdapter.java
new file mode 100644
index 00000000000..ca2558e0e23
--- /dev/null
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/ISemanticHintAdapter.java
@@ -0,0 +1,27 @@
+/*****************************************************************************
+ * 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.gmf.diagram.common.commands;
+
+
+/**
+ * Interface for an adapter that can give a semantic hint
+ */
+public interface ISemanticHintAdapter {
+
+ /**
+ * Returns the semantic hint for this adapter
+ * @return the semantic hint for this adapter
+ */
+ public String getSemanticHint();
+}
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/SemanticElementAdapter.java b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/SemanticElementAdapter.java
index 3032bb7497b..c757f64ffae 100644
--- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/SemanticElementAdapter.java
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.common/src-common-gmf/org/eclipse/papyrus/gmf/diagram/common/commands/SemanticElementAdapter.java
@@ -15,13 +15,14 @@ package org.eclipse.papyrus.gmf.diagram.common.commands;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.emf.type.core.IHintedType;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.papyrus.uml.diagram.common.commands.SemanticAdapter;
/**
* An adapter for {@link IElementType}, {@link EObject} or {@link View}.
*/
-public class SemanticElementAdapter extends SemanticAdapter {
+public class SemanticElementAdapter extends SemanticAdapter implements ISemanticHintAdapter {
/** The elementType. */
private Object elementType;
@@ -50,9 +51,22 @@ public class SemanticElementAdapter extends SemanticAdapter {
@SuppressWarnings("rawtypes")
@Override
public Object getAdapter(Class adapter) {
+ if(adapter.equals(IHintedType.class)) {
+ if(elementType instanceof IHintedType) {
+ return (IHintedType)elementType;
+ }
+ }
if(adapter.equals(IElementType.class)) {
return elementType;
}
return super.getAdapter(adapter);
}
+
+ public String getSemanticHint() {
+ if(elementType instanceof IHintedType) {
+ return ((IHintedType)elementType).getSemanticHint();
+ }
+ return null;
+ }
+
}
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/plugin.xml b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/plugin.xml
index 361afaca758..416feb9a300 100644
--- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/plugin.xml
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/plugin.xml
@@ -186,31 +186,58 @@
<object id="uml.Class" class="org.eclipse.gmf.runtime.emf.core.util.IProxyEObject(org.eclipse.gmf.runtime.emf.core)">
<method name="getProxyClassID()" value="uml.Class"></method>
</object>
- <context viewClass="org.eclipse.gmf.runtime.notation.Node" semanticHints="uml.Class"></context>
+ <context
+ elements="uml.Class"
+ viewClass="org.eclipse.gmf.runtime.notation.Node"></context>
<!-- "uml.Port" -->
<object id="uml.Port" class="org.eclipse.gmf.runtime.emf.core.util.IProxyEObject(org.eclipse.gmf.runtime.emf.core)">
<method name="getProxyClassID()" value="uml.Port"></method>
</object>
- <context viewClass="org.eclipse.gmf.runtime.notation.Node" semanticHints="uml.Port"></context>
+ <context viewClass="org.eclipse.gmf.runtime.notation.Node" elements="uml.Port"></context>
<!-- "uml.Property" -->
<object id="uml.Property" class="org.eclipse.gmf.runtime.emf.core.util.IProxyEObject(org.eclipse.gmf.runtime.emf.core)">
<method name="getProxyClassID()" value="uml.Property"></method>
</object>
- <context viewClass="org.eclipse.gmf.runtime.notation.Node" semanticHints="uml.Property"></context>
+ <context viewClass="org.eclipse.gmf.runtime.notation.Node" elements="uml.Property"></context>
<!-- "uml.Connector" -->
<object id="uml.Connector" class="org.eclipse.gmf.runtime.emf.core.util.IProxyEObject(org.eclipse.gmf.runtime.emf.core)">
<method name="getProxyClassID()" value="uml.Connector"></method>
</object>
- <context viewClass="org.eclipse.gmf.runtime.notation.Edge" semanticHints="uml.Connector"></context>
+ <context viewClass="org.eclipse.gmf.runtime.notation.Edge" elements="uml.Connector"></context>
<!-- "uml.Dependency" -->
<object id="uml.Dependency" class="org.eclipse.gmf.runtime.emf.core.util.IProxyEObject(org.eclipse.gmf.runtime.emf.core)">
<method name="getProxyClassID()" value="uml.Dependency"></method>
</object>
- <context viewClass="org.eclipse.gmf.runtime.notation.Edge" semanticHints="uml.Dependency"></context>
+ <context viewClass="org.eclipse.gmf.runtime.notation.Edge" elements="uml.Dependency"></context>
+
+
+ <object id="elementtype.node"
+ class="org.eclipse.papyrus.gmf.diagram.common.commands.ISemanticHintAdapter(org.eclipse.papyrus.sysml.diagram.common)">
+
+ <method
+ name="getSemanticHint()"
+ value="UML::Property, SysML::ActorPartProperty, SysML::ValueProperty, SysML::ReferenceProperty, SysML::FlowPort_In, UML::Port, SysML::FlowPort_Out, SysML::PartProperty, SysML::FlowPort_InOut, SysML::FlowPort, SysML::Block, SysML::FlowPort_NA">
+ </method>
+ </object>
+ <context
+ elements="elementtype.node"
+ viewClass="org.eclipse.gmf.runtime.notation.Node">
+ </context>
+ <object id="elementtype.edge"
+ class="org.eclipse.papyrus.gmf.diagram.common.commands.ISemanticHintAdapter(org.eclipse.papyrus.sysml.diagram.common)">
+ <method
+ name="getSemanticHint()"
+ value="UML::Dependency, UML::Connector">
+ </method>
+ </object>
+ <context
+ elements="elementtype.edge"
+ viewClass="org.eclipse.gmf.runtime.notation.Edge">
+ </context>
</viewProvider>
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/BlockDropHelper.java b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/BlockDropHelper.java
index ba2194d983c..25b35621f7b 100644
--- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/BlockDropHelper.java
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/BlockDropHelper.java
@@ -105,7 +105,7 @@ public class BlockDropHelper extends ElementHelper {
IAdaptable createElementRequestAdapter = new CreateElementRequestAdapter(createElementRequest);
// 2. Prepare the drop command
- ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
+ ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, /* explicit semantic hint is mandatory */ null, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
CreateViewRequest createViewRequest = new CreateViewRequest(descriptor);
createViewRequest.setLocation(request.getLocation().getCopy());
Command viewCreateCommand = host.getCommand(createViewRequest);
@@ -154,7 +154,7 @@ public class BlockDropHelper extends ElementHelper {
IAdaptable createElementRequestAdapter = new CreateElementRequestAdapter(createElementRequest);
// 2. Prepare the drop command
- ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
+ ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, /* explicit semantic hint is mandatory */ null, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
CreateViewRequest createViewRequest = new CreateViewRequest(descriptor);
createViewRequest.setLocation(request.getLocation().getCopy());
Command viewCreateCommand = host.getCommand(createViewRequest);
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PartDropHelper.java b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PartDropHelper.java
index 101c0cea8fe..ffb8ea0522d 100644
--- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PartDropHelper.java
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PartDropHelper.java
@@ -49,7 +49,7 @@ public class PartDropHelper extends ElementHelper {
}
// Prepare the view creation command
- ViewDescriptor descriptor = new ViewDescriptor(new SemanticAdapter((EObject)droppedEObject, null), Node.class, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
+ ViewDescriptor descriptor = new ViewDescriptor(new SemanticAdapter((EObject)droppedEObject, null), Node.class, /* explicit semantic hint is mandatory */ null, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
CreateViewRequest createViewRequest = new CreateViewRequest(descriptor);
createViewRequest.setLocation(request.getLocation().getCopy());
Command viewCreateCommand = host.getCommand(createViewRequest);
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PortDropHelper.java b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PortDropHelper.java
index 2882fd4608c..8ca6b3d02ed 100644
--- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PortDropHelper.java
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/PortDropHelper.java
@@ -58,7 +58,7 @@ public class PortDropHelper extends ElementHelper {
}
// Prepare the view creation command
- ViewDescriptor descriptor = new ViewDescriptor(new SemanticAdapter((EObject)droppedPort, null), Node.class, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
+ ViewDescriptor descriptor = new ViewDescriptor(new SemanticAdapter((EObject)droppedPort, null), Node.class, /* explicit semantic hint is mandatory */ null, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
CreateViewRequest createViewRequest = new CreateViewRequest(descriptor);
createViewRequest.setLocation(location);
Command viewCreateCommand = host.getCommand(createViewRequest);
diff --git a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/TypeDropHelper.java b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/TypeDropHelper.java
index fdb12c77775..83abde4b265 100644
--- a/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/TypeDropHelper.java
+++ b/plugins/sysml/diagram/org.eclipse.papyrus.sysml.diagram.internalblock/src/org/eclipse/papyrus/sysml/diagram/internalblock/utils/TypeDropHelper.java
@@ -106,7 +106,7 @@ public class TypeDropHelper extends ElementHelper {
IAdaptable createElementRequestAdapter = new CreateElementRequestAdapter(createElementRequest);
// 2. Prepare the drop command
- ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
+ ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, /* explicit semantic hint is mandatory */ null, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
CreateViewRequest createViewRequest = new CreateViewRequest(descriptor);
createViewRequest.setLocation(request.getLocation().getCopy());
Command viewCreateCommand = host.getCommand(createViewRequest);
@@ -151,7 +151,7 @@ public class TypeDropHelper extends ElementHelper {
IAdaptable createElementRequestAdapter = new CreateElementRequestAdapter(createElementRequest);
// 2. Prepare the drop command
- ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
+ ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, /* explicit semantic hint is mandatory */ null, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
CreateViewRequest createViewRequest = new CreateViewRequest(descriptor);
createViewRequest.setLocation(request.getLocation().getCopy());
Command viewCreateCommand = host.getCommand(createViewRequest);
@@ -184,7 +184,7 @@ public class TypeDropHelper extends ElementHelper {
IAdaptable createElementRequestAdapter = new CreateElementRequestAdapter(createElementRequest);
// 2. Prepare the drop command
- ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
+ ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, /* explicit semantic hint is mandatory */ null, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
CreateViewRequest createViewRequest = new CreateViewRequest(descriptor);
createViewRequest.setLocation(request.getLocation().getCopy());
Command viewCreateCommand = host.getCommand(createViewRequest);
@@ -229,7 +229,7 @@ public class TypeDropHelper extends ElementHelper {
IAdaptable createElementRequestAdapter = new CreateElementRequestAdapter(createElementRequest);
// 2. Prepare the drop command
- ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
+ ViewDescriptor descriptor = new ViewDescriptor(createElementRequestAdapter, Node.class, /* explicit semantic hint is mandatory */ null, ViewDescriptorUtil.PERSISTED, host.getDiagramPreferencesHint());
CreateViewRequest createViewRequest = new CreateViewRequest(descriptor);
createViewRequest.setLocation(request.getLocation().getCopy());
Command viewCreateCommand = host.getCommand(createViewRequest);

Back to the top