From: Patric Plitzner
Date: Wed, 16 Oct 2013 06:47:32 +0000 (+0000)
Subject: - implemented context menu functionality (create specimen)
X-Git-Tag: 3.6.0~841^2~78
X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/e44f328b7fbf677e53c6e6fe7057b60e23a5b7f7
- implemented context menu functionality (create specimen)
---
diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml
index d6e629ead..c76002c6b 100644
--- a/eu.etaxonomy.taxeditor.editor/plugin.xml
+++ b/eu.etaxonomy.taxeditor.editor/plugin.xml
@@ -545,31 +545,18 @@
-
-
-
@@ -1215,20 +1202,11 @@
-
-
-
-
-
-
+ id="isSpecimenOrObservation">
+ property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isSpecimenOrObservation">
@@ -1260,7 +1238,7 @@
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"
+ properties="isSpecimenOrObservation"
type="org.eclipse.jface.viewers.TreeSelection">
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 273d2dc8f..9ac5d0eaf 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
@@ -3,18 +3,31 @@ 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.jface.viewers.TreeSelection;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
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 org.eclipse.ui.handlers.IHandlerService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
public class CreateDerivateContextMenu extends CompoundContributionItem {
+ private final IHandlerService handlerService = (IHandlerService) EditorUtil.getService(IHandlerService.class);
+ private final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ private final ISelection selection = window.getActivePage().getSelection();
+
/* (non-Javadoc)
* @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
*/
@@ -24,16 +37,48 @@ 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");
+ if(selection instanceof TreeSelection){
+ final Object selectedElement = ((TreeSelection) selection).getFirstElement();
+ //context menu for FieldUnit
+ if(selectedElement instanceof FieldUnit){
+ MenuItem createSpecimen = new MenuItem(menu, SWT.None);
+ createSpecimen.setText("Specimen");
+ createSpecimen.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ FieldUnit fieldUnit = HibernateProxyHelper.deproxy(selectedElement, FieldUnit.class);
+ DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+ fieldUnit.addDerivationEvent(DerivationEvent.NewSimpleInstance(fieldUnit, specimen, DerivationEventType.GATHERING_IN_SITU()));
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+ MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
+ createLivingPlantPhoto.setText("Living Plant Photo");
+ }
+ //context menu for Specimen
+ else if(selectedElement instanceof DerivedUnit && ((DerivedUnit)selectedElement).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
+ MenuItem createTissueSample = new MenuItem(menu, SWT.None);
+ createTissueSample.setText("Tissue Sample");
+ MenuItem createDNASample = new MenuItem(menu, SWT.None);
+ createDNASample.setText("DNA Sample");
+ MenuItem createSpecimenScan = new MenuItem(menu, SWT.None);
+ createSpecimenScan.setText("Specimen Scan");
+ MenuItem createArtwork = new MenuItem(menu, SWT.None);
+ createArtwork.setText("Artwork");
+ MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
+ createLivingPlantPhoto.setText("Living Plant Photo");
+ }
+ else{
+ MenuItem menuItem = new MenuItem(menu, SWT.None);
+ menuItem.setText("No child derivates");
+ menuItem.setEnabled(false);
+ }
}
}
}
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
index dd5617c5d..6d30016cb 100644
--- 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
@@ -3,13 +3,10 @@
*/
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;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
/**
* Property tester used by the DerivateView tree menu.
@@ -17,8 +14,7 @@ import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
*/
public class DerivateMenuPropertyTester extends PropertyTester {
- private static final String IS_FIELD_UNIT = "isFieldUnit";
- private static final String IS_SPECIMEN = "isSpecimen";
+ private static final String IS_SPECIMEN_OR_OBSERVATION = "isSpecimenOrObservation";
/* (non-Javadoc)
* @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
@@ -26,44 +22,31 @@ public class DerivateMenuPropertyTester extends PropertyTester {
/** {@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);
+ //TODO: these simple instanceof-checks can be unified in one class because there are several
+ // PropertyTesters that do the same, that is just checking which class the selection is of
- Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
+ 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);
+ if(IS_SPECIMEN_OR_OBSERVATION.equals(property)){
+ return isSpecimenOrObservation(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) {
+ private boolean isSpecimenOrObservation(Object[] selectedElements) {
for (Object object : selectedElements){
- if(!(object instanceof DerivedUnit)){
+ if(!(object instanceof SpecimenOrObservationBase)){
return false;
}
}
return true;
}
+
}