- implemented context menu functionality (create specimen)
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / CreateDerivateContextMenu.java
index 273d2dc8fb1a491ef6aad53e852d66d916f43df1..9ac5d0eafbd180c7d6b6379a4ea3d6cc26e1b370 100644 (file)
@@ -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);
+                            }
                         }
                     }
                 }