<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>
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">
--- /dev/null
+/**
+ *
+ */
+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;
+ }
+
+}