From 6d460ad2685f59a997b68a7bd525617613aab164 Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Tue, 15 Oct 2013 14:12:19 +0000 Subject: [PATCH] - added context menu property testers for "Create new..." command --- .gitattributes | 1 + eu.etaxonomy.taxeditor.editor/plugin.xml | 54 ++++++++++++--- .../derivate/CreateDerivateContextMenu.java | 17 ++++- .../derivate/DerivateMenuPropertyTester.java | 69 +++++++++++++++++++ .../DescriptionsMenuPropertyTester.java | 23 ++++--- 5 files changed, 141 insertions(+), 23 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java diff --git a/.gitattributes b/.gitattributes index 5c1f48b05..e9d32f2b1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index f83d1f801..d6e629ead 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -544,11 +544,24 @@ - - + + + + + + + + + + + + @@ -557,12 +570,6 @@ class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu" id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"> - - @@ -1207,6 +1214,24 @@ + + + + + + + + + + + + @@ -1231,6 +1256,13 @@ properties="isGroup" type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor"> + + diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java index cc19ff891..273d2dc8f 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java @@ -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 index 000000000..dd5617c5d --- /dev/null +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java @@ -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; + } +} diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DescriptionsMenuPropertyTester.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DescriptionsMenuPropertyTester.java index 202308dba..471cdf0e7 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DescriptionsMenuPropertyTester.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DescriptionsMenuPropertyTester.java @@ -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; } -- 2.34.1