ref #6806 Disable export context menu for feature nodes
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 30 Jan 2019 07:28:24 +0000 (08:28 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 30 Jan 2019 07:28:24 +0000 (08:28 +0100)
eu.etaxonomy.taxeditor.store/fragment.e4xmi
eu.etaxonomy.taxeditor.store/plugin.xml
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreePropertyTester.java [new file with mode: 0644]

index ec32a996bad1fb22b287d1807c813f9163742bb9..907b66c8d63fb8696b9f047b7cfe02d937216eb4 100644 (file)
@@ -24,6 +24,7 @@
         <children xsi:type="menu:HandledMenuItem" xmi:id="_QXkWYNjyEeidDMMI9xTsbQ" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.copy" label="%handledmenuitem.label.13" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.store/icons/copy_edit.png" command="_cMyQ4NjyEeidDMMI9xTsbQ"/>
         <children xsi:type="menu:MenuSeparator" xmi:id="_So5f0NjyEeidDMMI9xTsbQ" elementId="eu.etaxonomy.taxeditor.store.menuseparator.7"/>
         <children xsi:type="menu:Menu" xmi:id="_jPawUPhmEei8uPv-H2wqnw" elementId="eu.etaxonomy.taxeditor.store.menu.export" label="%menu.label.4">
+          <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_QGF5kCRZEemBIp_HwXtqoA" coreExpressionId="isFeatureTree"/>
           <children xsi:type="menu:HandledMenuItem" xmi:id="_7vaEcGcqEee0qLTtA2ZpVQ" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.exportFeatureTreeOwl" label="%handledmenuitem.label.14" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.store/icons/export.gif" command="_xyZ4oPhmEei8uPv-H2wqnw">
             <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_-91IQGcqEee0qLTtA2ZpVQ" coreExpressionId="isShowExperimentalFeatures"/>
           </children>
index f2989764a8f269ecdac92df8627ce58ad6038663..48160be9fd6083eb9b07f271a56b5a0809548b0e 100755 (executable)
         properties="hasPermissions, hasRoles"
         type="org.eclipse.jface.viewers.IStructuredSelection">
    </propertyTester>
+   <propertyTester
+         class="eu.etaxonomy.taxeditor.featuretree.FeatureTreePropertyTester"
+         id="eu.etaxonomy.taxeditor.featuretree.FeatureTreePropertyTester"
+         namespace="eu.etaxonomy.taxeditor.featuretree.FeatureTreePropertyTester"
+         properties="isFeatureTree"
+         type="org.eclipse.jface.viewers.IStructuredSelection">
+   </propertyTester>
 </extension>
 <extension
       point="org.eclipse.core.expressions.definitions">
                property="eu.etaxonomy.taxeditor.preference.PreferencePropertyTester.isChecklistEditorEnabled">
          </test>
       </definition>
+      <definition
+            id="isFeatureTree">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.featuretree.FeatureTreePropertyTester.isFeatureTree">
+            </test>
+         </with>
+      </definition>
 </extension>
 <extension
       point="org.eclipse.ui.activities">
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreePropertyTester.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreePropertyTester.java
new file mode 100644 (file)
index 0000000..40b8fa2
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ *
+ */
+package eu.etaxonomy.taxeditor.featuretree;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import eu.etaxonomy.cdm.model.description.FeatureTree;
+
+/**
+ * Property tester used by the feature tree menu.
+ *
+ * @author pplitzner
+ * @since Jan 30, 2019
+ *
+ */
+public class FeatureTreePropertyTester extends PropertyTester {
+
+       private static final String FEATURE_TREE= "isFeatureTree"; //$NON-NLS-1$
+
+       @Override
+    public boolean test(Object receiver, String property, Object[] args,
+                       Object expectedValue) {
+
+           Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
+
+           if(selectedElements.length == 0){
+                       // nothing selected so all tests should fail
+                       return false;
+               }
+
+               if(FEATURE_TREE.equals(property)){
+                   return isFeatureTree(selectedElements);
+               }
+               else{
+                       return false;
+               }
+       }
+
+       private boolean isFeatureTree(Object[] selectedElements) {
+           for (Object object : selectedElements){
+               if(!(object instanceof FeatureTree)){
+                   return false;
+               }
+           }
+           return true;
+       }
+
+}