[Layers] Add a new delete Properties menu
Change-Id: I79849c51b7ccd59085c7dcb6a5686d92be2b628b
Signed-off-by: Quentin Le Menez <quentin.lemenez@cea.fr>
diff --git a/layers/plugins/org.eclipse.papyrus.infra.gmfdiag.layers.ui/plugin.xml b/layers/plugins/org.eclipse.papyrus.infra.gmfdiag.layers.ui/plugin.xml
index 80084a9..01d7981 100755
--- a/layers/plugins/org.eclipse.papyrus.infra.gmfdiag.layers.ui/plugin.xml
+++ b/layers/plugins/org.eclipse.papyrus.infra.gmfdiag.layers.ui/plugin.xml
@@ -23,8 +23,12 @@
name="Detach LayerStack">
</command>
<command
- id="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.delete"
- name="Delete">
+ id="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.deleteLayer"
+ name="Delete Layer">
+ </command>
+ <command
+ id="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.deleteProperty"
+ name="Delete Property">
</command>
<command
id="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.createlayer"
@@ -60,7 +64,6 @@
</command>
</extension>
<extension
- name="Layers"
point="org.eclipse.ui.handlers">
<handler
class="org.eclipse.papyrus.internal.infra.gmfdiag.layers.ui.commands.AttachLayerStackCommand"
@@ -88,7 +91,11 @@
</handler>
<handler
class="org.eclipse.papyrus.internal.infra.gmfdiag.layers.ui.handlers.DeleteItemHandler"
- commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.delete">
+ commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.deleteLayer">
+ </handler>
+ <handler
+ class="org.eclipse.papyrus.internal.infra.gmfdiag.layers.ui.handlers.DeleteItemHandler"
+ commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.deleteProperty">
</handler>
<handler
class="org.eclipse.papyrus.internal.infra.gmfdiag.layers.ui.handlers.OpenLayerExplorerHandler"
@@ -114,10 +121,10 @@
<menu
label="Layers">
<command
- commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.attachLayerStack"
- label="Attach Layer Stack"
+ commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.openlayersexplorerview"
+ label="Open Layers Explorer"
style="push"
- tooltip="Attach a Layer Stack to the diagram">
+ tooltip="Open the Layers Explorer View">
</command>
<command
commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.detachLayerStack"
@@ -126,10 +133,10 @@
tooltip="Detach a Layer Stack to the diagram">
</command>
<command
- commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.openlayersexplorerview"
- label="Open Layers Explorer"
+ commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.attachLayerStack"
+ label="Attach Layer Stack"
style="push"
- tooltip="Open the Layers Explorer View">
+ tooltip="Attach a Layer Stack to the diagram">
</command>
</menu>
</menuContribution>
@@ -213,11 +220,11 @@
</visibleWhen>
</command>
<command
- commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.delete"
+ commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.deleteLayer"
icon="IMG_TOOL_DELETE"
- label="Delete"
+ label="Delete Layer"
style="push"
- tooltip="Delete Selected Item from the Layer Explorer">
+ tooltip="Delete Selected Layer from the Layer Explorer">
<visibleWhen
checkEnabled="false">
<and>
@@ -232,6 +239,26 @@
</and>
</visibleWhen>
</command>
+ <command
+ commandId="org.eclipse.papyrus.infra.gmfdiag.layers.ui.commands.deleteProperty"
+ icon="IMG_TOOL_DELETE"
+ label="Delete Property"
+ style="push"
+ tooltip="Delete Selected Property from the Layer Explorer">
+ <visibleWhen
+ checkEnabled="false">
+ <and>
+ <with
+ variable="selection">
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.papyrus.infra.gmfdiag.layers.ui.tester.canDeleteProperty"
+ value="true">
+ </test>
+ </with>
+ </and>
+ </visibleWhen>
+ </command>
<separator
name="endseparator"
visible="false">
@@ -275,7 +302,7 @@
class="org.eclipse.papyrus.internal.infra.gmfdiag.layers.ui.utils.LayersWidgetPropertyTester"
id="org.eclipse.papyrus.infra.gmfdiag.layers.ui.tester"
namespace="org.eclipse.papyrus.infra.gmfdiag.layers.ui.tester"
- properties="canCreateLayer, canAttachProperties, canAttachCSS, canAttachCSSHide, canAttachViews, canDeleteLayer"
+ properties="canCreateLayer, canAttachProperties, canAttachCSS, canAttachCSSHide, canAttachViews, canDeleteLayer, canDeleteProperty"
type="org.eclipse.jface.viewers.IStructuredSelection">
</propertyTester>
</extension>
diff --git a/layers/plugins/org.eclipse.papyrus.infra.gmfdiag.layers.ui/src/org/eclipse/papyrus/internal/infra/gmfdiag/layers/ui/utils/LayersWidgetPropertyTester.java b/layers/plugins/org.eclipse.papyrus.infra.gmfdiag.layers.ui/src/org/eclipse/papyrus/internal/infra/gmfdiag/layers/ui/utils/LayersWidgetPropertyTester.java
index e6a4ce6..b1c8186 100755
--- a/layers/plugins/org.eclipse.papyrus.infra.gmfdiag.layers.ui/src/org/eclipse/papyrus/internal/infra/gmfdiag/layers/ui/utils/LayersWidgetPropertyTester.java
+++ b/layers/plugins/org.eclipse.papyrus.infra.gmfdiag.layers.ui/src/org/eclipse/papyrus/internal/infra/gmfdiag/layers/ui/utils/LayersWidgetPropertyTester.java
@@ -17,6 +17,7 @@
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.papyrus.internal.infra.gmfdiag.layers.model.layers.Layer;
import org.eclipse.papyrus.internal.infra.gmfdiag.layers.model.layers.TopLayerOperator;
+import org.eclipse.papyrus.internal.infra.gmfdiag.layers.model.layers.TypeInstance;
/**
* @author Quentin Le Menez
@@ -30,6 +31,8 @@
private static final String CAN_ATTACH_PROPERTIES = "canAttachProperties"; //$NON-NLS-1$
+ private static final String CAN_DELETE_PROPERTY = "canDeleteProperty"; //$NON-NLS-1$
+
private static final String CAN_ATTACH_CSS = "canAttachCSS"; //$NON-NLS-1$
private static final String CAN_ATTACH_CSS_HIDE = "canAttachCSSHide"; //$NON-NLS-1$
@@ -50,7 +53,10 @@
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
// TODO these cases should be handled better, e.g. directly through the plugin.xml filters
- if (CAN_ATTACH_PROPERTIES.equals(property)) {
+ if (CAN_CREATE_LAYER.equals(property)) {
+ return stackMenu(receiver);
+ }
+ else if (CAN_ATTACH_PROPERTIES.equals(property)) {
return layerMenu(receiver);
} else if (CAN_ATTACH_CSS.equals(property)) {
return layerMenu(receiver);
@@ -58,10 +64,11 @@
return layerMenu(receiver);
} else if (CAN_ATTACH_VIEWS.equals(property)) {
return layerMenu(receiver);
- } else if (CAN_CREATE_LAYER.equals(property)) {
- return stackMenu(receiver);
- } else if (CAN_DELETE_LAYER.equals(property)) {
+ } else if (CAN_DELETE_LAYER.equals(property)) {
return layerMenu(receiver);
+ }
+ else if (CAN_DELETE_PROPERTY.equals(property)) {
+ return propertyMenu(receiver);
}
// the menu is not one of the above and should be added to the list if necessary
@@ -78,6 +85,16 @@
}
return false;
}
+
+ private boolean propertyMenu(Object receiver) {
+ if (receiver instanceof TreeSelection) {
+ TreeSelection ts = (TreeSelection) receiver;
+ if (ts.getFirstElement() instanceof TypeInstance) {
+ return true;
+ }
+ }
+ return false;
+ }
private boolean stackMenu(Object receiver) {
if (receiver instanceof TreeSelection) {