- added context menu property testers for "Create new..." command
authorPatric Plitzner <p.plitzner@bgbm.org>
Tue, 15 Oct 2013 14:12:19 +0000 (14:12 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Tue, 15 Oct 2013 14:12:19 +0000 (14:12 +0000)
.gitattributes
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DescriptionsMenuPropertyTester.java

index 5c1f48b05f7404c3a22ebc7f2686aa49c082e768..e9d32f2b1f6ae79bbec79981b18cc47afcc739c4 100644 (file)
@@ -469,6 +469,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/c
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateLabelProvider.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDragListener.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDropAdapter.java -text
index f83d1f80159f15d593a2a1683ba56c4f6dd822e0..d6e629ead988fd33a8528adc591c5dd345cd59b7 100644 (file)
       </menuContribution>
       <menuContribution
             locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
-         <command
-               commandId="eu.etaxonomy.taxeditor.description.commands.adddescrip"
-               label="New DerivedUni"
-               style="push">
-         </command>
+         <menu
+               label="New">
+            <dynamic
+                  class="eu.etaxonomy.taxeditor.bulkeditor.command.DynamicNewObjectMenu"
+                  id="eu.etaxonomy.taxeditor.bulkeditor.dynamicNewMenu">
+            </dynamic>
+            <visibleWhen
+                  checkEnabled="true">
+               <or>
+                  <reference
+                        definitionId="isFieldUnit">
+                  </reference>
+                  <reference
+                        definitionId="isDerivedUnit">
+                  </reference>
+               </or>
+            </visibleWhen>
+         </menu>
          <separator
                name="eu.etaxonomy.taxeditor.editor.separator1"
                visible="true">
                class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"
                id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu">
          </dynamic>
-         <command
-               commandId="eu.etaxonomy.taxeditor.editor.command1"
-               label="bla"
-               style="push"
-               tooltip="bla">
-         </command>
       </menuContribution>
       
       
             </test>
          </with>
       </definition>
+      <definition
+            id="isFieldUnit">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isFieldUnit">
+            </test>
+         </with>
+      </definition>
+      <definition
+            id="isDerivedUnit">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isSpecimen">
+            </test>
+         </with>
+      </definition>
    </extension>
    <extension
          point="org.eclipse.core.expressions.propertyTesters">
             properties="isGroup"
             type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">
       </propertyTester>
+      <propertyTester
+            class="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
+            id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
+            namespace="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
+            properties="isFieldUnit,isSpecimen"
+            type="org.eclipse.jface.viewers.TreeSelection">
+      </propertyTester>
    </extension>
    <extension
          point="org.eclipse.ui.bindings">   
index cc19ff89135fbe39c632bd6d3be4c1faafb82cbc..273d2dc8fb1a491ef6aad53e852d66d916f43df1 100644 (file)
@@ -2,11 +2,17 @@ package eu.etaxonomy.taxeditor.editor.view.derivate;
 
 import org.eclipse.jface.action.ContributionItem;
 import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+
 public class CreateDerivateContextMenu extends CompoundContributionItem {
 
     /* (non-Javadoc)
@@ -18,9 +24,18 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                 new ContributionItem() {
                     @Override
                     public void fill(Menu menu, int index) {
+                        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+                        ISelection selection = window.getActivePage().getSelection();
                         MenuItem menuItem = new MenuItem(menu, SWT.None);
                         menuItem.setText("menuItem");
-                    };
+                        //selection is intance of TreeSelection
+                        if(selection instanceof FieldUnit){
+                            menuItem.setText("fieldUnit");
+                        }
+                        else if(selection instanceof DerivedUnit){
+                            menuItem.setText("derivedUnit");
+                        }
+                    }
                 }
         };
         return contributionItems;
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java
new file mode 100644 (file)
index 0000000..dd5617c
--- /dev/null
@@ -0,0 +1,69 @@
+/**
+ *
+ */
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import java.util.Arrays;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+
+/**
+ * Property tester used by the DerivateView tree menu.
+ *
+ */
+public class DerivateMenuPropertyTester extends PropertyTester {
+
+       private static final String IS_FIELD_UNIT = "isFieldUnit";
+       private static final String IS_SPECIMEN = "isSpecimen";
+
+       /* (non-Javadoc)
+        * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
+        */
+       /** {@inheritDoc} */
+       @Override
+    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+        System.out.println(receiver.toString() + receiver.getClass().toString());
+        System.out.println(property);
+        System.out.println(Arrays.asList(args));
+        System.out.println(expectedValue);
+
+               Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
+
+               if(selectedElements.length == 0){
+                       // nothing selected so all tests should fail
+                       return false;
+               }
+
+               if(IS_FIELD_UNIT.equals(property)){
+                       return isFieldUnit(selectedElements);
+               }
+               else if(IS_SPECIMEN.equals(property)){
+                       return isSpecimen(selectedElements);
+               }
+               else{
+                       return false;
+               }
+       }
+
+       private boolean isFieldUnit(Object[] selectedElements) {
+               for (Object object : selectedElements){
+                       if(!(object instanceof FieldUnit)){
+                               return false;
+                       }
+               }
+               return true;
+       }
+
+       private boolean isSpecimen(Object[] selectedElements) {
+           for (Object object : selectedElements){
+               if(!(object instanceof DerivedUnit)){
+                   return false;
+               }
+           }
+           return true;
+       }
+}
index 202308dbabbb2e1be77f9a9cc738a9b367efbff4..471cdf0e7bd9f5793b0c26220b63a5887657668b 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package eu.etaxonomy.taxeditor.editor.view.descriptive.handler;
 
@@ -19,28 +19,29 @@ import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
  * @version $Id: $
  */
 public class DescriptionsMenuPropertyTester extends PropertyTester {
-       
+
        private static final String MEDIA = "isMedia";
        private static final String FEATURE_NODE_CONTAINER = "isFeatureNodeContainer";
        private static final String DESCRIPTION = "isDescription";
        private static final String DESCRIPTION_ELEMENT = "isDescriptionElement";
        private static final String DELETABLE = "isDeletable";
        private static final String IMAGE_GALLERY = "isImageGallery";
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
         */
        /** {@inheritDoc} */
-       public boolean test(Object receiver, String property, Object[] args,
+       @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(MEDIA.equals(property)){
                        return isMedia(selectedElements);
                }
@@ -63,9 +64,9 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
                        return false;
                }
        }
-       
+
        private boolean isImageGallery(Object[] selectedElements) {
-               for (Object object : selectedElements){         
+               for (Object object : selectedElements){
                        if(!(object instanceof DescriptionBase) || !((DescriptionBase) object).isImageGallery()){
                                return false;
                        }
@@ -84,9 +85,9 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
 
        private boolean isDeletable(Object[] selectedElements) {
                boolean result = false;
-               
+
                for (Object object : selectedElements) {
-                       
+
                        if((object instanceof DescriptionBase)
                                || (object instanceof DescriptionElementBase)
                                || (object instanceof Media)
@@ -95,7 +96,7 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
                        }else{
                                return false;
                        }
-                       
+
                }
                return result;
        }