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 @@ + label="New Derivate"> + class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu" + id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"> - - - - - - + + - - - - @@ -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; } + }