Implement handler for creating (non-)taxon associated FieldUnits
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 27 Oct 2015 09:45:04 +0000 (10:45 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 27 Oct 2015 09:45:04 +0000 (10:45 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/CreateFieldUnitHandler.java

index 6e3c42201319baa4c2a44e77458bdd1188ab3aa9..f63569495046fc8e457fc53a4ccc93993c11607e 100644 (file)
@@ -431,7 +431,7 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas
         return true;
     }
 
         return true;
     }
 
-    public void addHierarchy(FieldUnit fieldUnit) {
+    public void addFieldUnit(FieldUnit fieldUnit) {
         rootElements.add(fieldUnit);
         derivateToRootEntityMap.put(fieldUnit, fieldUnit);
     }
         rootElements.add(fieldUnit);
         derivateToRootEntityMap.put(fieldUnit, fieldUnit);
     }
@@ -465,10 +465,10 @@ public class DerivateView extends AbstractCdmViewPart implements IPartContentHas
                 }
                 updateRootEntities(uuids);
             }
                 }
                 updateRootEntities(uuids);
             }
-        }
-        if(part instanceof MultiPageTaxonEditor){
-            Taxon taxon = ((MultiPageTaxonEditor) part).getTaxon();
-            derivateSearchCompositeController.setTaxon(taxon);
+            if(part instanceof MultiPageTaxonEditor){
+                Taxon taxon = ((MultiPageTaxonEditor) part).getTaxon();
+                derivateSearchCompositeController.setTaxon(taxon);
+            }
         }
     }
 
         }
     }
 
index 21b73208929868c52471a17eaa1eb5cc3cad4fab..589869ab44f37098ede72b244374fb0586d85a94 100644 (file)
@@ -2,28 +2,24 @@ package eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu;
 
 import org.eclipse.jface.action.ContributionItem;
 import org.eclipse.jface.action.IContributionItem;
 
 import org.eclipse.jface.action.ContributionItem;
 import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.util.LocalSelectionTransfer;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.TreeNode;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 
-import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.molecular.Sequence;
-import eu.etaxonomy.cdm.model.molecular.SingleRead;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.Messages;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -34,10 +30,8 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class CreateFieldUnitContextMenu extends CompoundContributionItem {
 
  */
 public class CreateFieldUnitContextMenu extends CompoundContributionItem {
 
-    private enum CommandType{
-        COPY_TO_CLIPBOARD,
-        REMOVE_FROM_SEQUENCE,
-        ADD_TO_SEQUENCE
+    private enum CommandType {
+        COPY_TO_CLIPBOARD, REMOVE_FROM_SEQUENCE, ADD_TO_SEQUENCE
     }
 
     @Override
     }
 
     @Override
@@ -49,40 +43,57 @@ public class CreateFieldUnitContextMenu extends CompoundContributionItem {
                         final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
                         IWorkbenchPart activePart = window.getActivePage().getActivePart();
                         if(activePart instanceof DerivateView){
                         final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
                         IWorkbenchPart activePart = window.getActivePage().getActivePart();
                         if(activePart instanceof DerivateView){
-                            MenuItem item = new MenuItem(menu, SWT.NONE);
-                            item.setText("Create FieldUnit");
-                            if(((DerivateView) activePart).isListenToSelectionChange()){
-                                Object selectionInput = ((DerivateView) activePart).getSelectionInput();
+                            final DerivateView derivateView = (DerivateView) activePart;
+                            if(derivateView.isListenToSelectionChange()){
+                                Object selectionInput = derivateView.getSelectionInput();
                                 if(selectionInput instanceof CdmBase && ((CdmBase) selectionInput).isInstanceOf(Taxon.class)){
                                 if(selectionInput instanceof CdmBase && ((CdmBase) selectionInput).isInstanceOf(Taxon.class)){
-                                    Taxon taxon = HibernateProxyHelper.deproxy(selectionInput, Taxon.class);
+                                    final Taxon taxon = HibernateProxyHelper.deproxy(selectionInput, Taxon.class);
+                                    MenuItem item = new MenuItem(menu, SWT.NONE);
                                     item.setText("Create FieldUnit (attach to "+taxon.getTitleCache()+")");
                                     item.setText("Create FieldUnit (attach to "+taxon.getTitleCache()+")");
-                                }
-                            }
-                            item.addSelectionListener(new WidgetSelectionListener(CommandType.ADD_TO_SEQUENCE));
-                        }
+                                    item.addSelectionListener(new SelectionAdapter() {
+                                        @Override
+                                        public void widgetSelected(SelectionEvent e) {
+                                            if(derivateView.isDirty()){
+                                                MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
+                                                return;
+                                            }
+                                            FieldUnit fieldUnit = FieldUnit.NewInstance();
+                                            fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class);
+                                            IndividualsAssociation association = IndividualsAssociation.NewInstance(fieldUnit);
+                                            association.setFeature(Feature.SPECIMEN());
+                                            TaxonDescription description;
+                                            if(!taxon.getDescriptions().isEmpty()){
+                                                description = taxon.getDescriptions().iterator().next();
+                                            }
+                                            else{
+                                                description = TaxonDescription.NewInstance(taxon);
+                                            }
+                                            description.addElement(IndividualsAssociation.NewInstance(fieldUnit));
 
 
-
-                        final ISelection selection = window.getActivePage().getSelection();
-                        TreeNode selectedTreeNode = EditorUtil.getTreeNodeOfSelection(selection);
-                        TreeNode clipboardNode = EditorUtil.getTreeNodeOfSelection(LocalSelectionTransfer.getTransfer().getSelection());
-                        if(selectedTreeNode!=null){
-                            //context menu for Sequence
-                            if(selectedTreeNode.getValue() instanceof Sequence
-                                    && clipboardNode!=null && clipboardNode.getValue() instanceof SingleRead){
-                                MenuItem item = new MenuItem(menu, SWT.NONE);
-                                item.setText(Messages.SingleReadSequenceContextMenu_REUSE_SINGLE_READ_HERE);
-                                item.addSelectionListener(new WidgetSelectionListener(CommandType.ADD_TO_SEQUENCE));
+                                            derivateView.getConversationHolder().commit();
+                                            derivateView.addFieldUnit(fieldUnit);
+                                            derivateView.refreshTree();
+                                        }
+                                    });
+                                }
                             }
                             }
-                            else if(selectedTreeNode.getValue() instanceof SingleRead){
+                            else{
                                 MenuItem item = new MenuItem(menu, SWT.NONE);
                                 MenuItem item = new MenuItem(menu, SWT.NONE);
-                                item.setText(Messages.SingleReadSequenceContextMenu_REUSE_FOR_SEQUENCE);
-                                item.addSelectionListener(new WidgetSelectionListener(CommandType.COPY_TO_CLIPBOARD));
-                                if(activePart instanceof DerivateView
-                                        && ((DerivateView) activePart).getMultiLinkSingleReads().contains(selectedTreeNode.getValue())){
-                                    MenuItem unlinkItem = new MenuItem(menu, SWT.NONE);
-                                    unlinkItem.setText(Messages.SingleReadSequenceContextMenu_REMOVE_FROM_SEQUENCE);
-                                    unlinkItem.addSelectionListener(new WidgetSelectionListener(CommandType.REMOVE_FROM_SEQUENCE));
-                                }
+                                item.setText("Create FieldUnit");
+                                item.addSelectionListener(new SelectionAdapter() {
+                                    @Override
+                                    public void widgetSelected(SelectionEvent e) {
+                                        if(derivateView.isDirty()){
+                                            MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
+                                            return;
+                                        }
+                                        FieldUnit fieldUnit = FieldUnit.NewInstance();
+                                        fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class);
+                                        derivateView.getConversationHolder().commit();
+                                        derivateView.addFieldUnit(fieldUnit);
+                                        derivateView.refreshTree();
+                                    }
+                                });
                             }
                         }
                     }
                             }
                         }
                     }
@@ -90,68 +101,5 @@ public class CreateFieldUnitContextMenu extends CompoundContributionItem {
         };
         return contributionItems;
     }
         };
         return contributionItems;
     }
-
-    private class WidgetSelectionListener extends SelectionAdapter{
-        private final CommandType commandType;
-
-        /**
-         * @param selectedTreeNode
-         * @param clipboardNode
-         * @param commandType
-         */
-        public WidgetSelectionListener(CommandType commandType) {
-            this.commandType = commandType;
-        }
-
-        @Override
-        public void widgetSelected(SelectionEvent e) {
-            IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
-            ISelection clipBoardSelection = LocalSelectionTransfer.getTransfer().getSelection();
-            final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getSelection();
-            TreeNode clipBoardTreeNode = EditorUtil.getTreeNodeOfSelection(clipBoardSelection);
-            TreeNode selectedTreeNode = EditorUtil.getTreeNodeOfSelection(selection);
-            switch (commandType) {
-            case REMOVE_FROM_SEQUENCE:
-                if(activeEditor.isDirty()){
-                    MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
-                    return;
-                }
-                if(selectedTreeNode!=null && selectedTreeNode.getParent()!=null &&
-                        selectedTreeNode.getValue() instanceof SingleRead && selectedTreeNode.getParent().getValue() instanceof Sequence) {
-                    Sequence sequence = (Sequence) selectedTreeNode.getParent().getValue();
-                    sequence.removeSingleRead((SingleRead) selectedTreeNode.getValue());
-                    CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence);
-                    if(activeEditor instanceof DerivateView) {
-                        DerivateView derivateView = (DerivateView)activeEditor;
-                        derivateView.getConversationHolder().commit();
-                        derivateView.refreshTree();
-                    }
-                }
-
-                break;
-            case ADD_TO_SEQUENCE:
-                if(activeEditor.isDirty()){
-                    MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
-                    return;
-                }
-                if(clipBoardTreeNode!=null && clipBoardTreeNode.getValue() instanceof SingleRead
-                        && selectedTreeNode!=null && selectedTreeNode.getValue() instanceof Sequence){
-                    SingleRead singleRead = (SingleRead)clipBoardTreeNode.getValue();
-                    Sequence sequence = (Sequence)selectedTreeNode.getValue();
-                    sequence.addSingleRead(singleRead);
-                    CdmStore.getService(ISequenceService.class).saveOrUpdate(sequence);
-                    if(activeEditor instanceof DerivateView) {
-                        DerivateView derivateView = (DerivateView)activeEditor;
-                        derivateView.getConversationHolder().commit();
-                        derivateView.refreshTree();
-                        LocalSelectionTransfer.getTransfer().setSelection(null);
-                    }
-                }
-                break;
-            case COPY_TO_CLIPBOARD:
-                LocalSelectionTransfer.getTransfer().setSelection(selection);
-                break;
-            }
-        }
-    }
 }
 }
+
index 7f99057423628ad0002cb6b3f5219de12d63c9cd..21e9f678053ab07df1645757b33c0d7459164d58 100644 (file)
@@ -25,7 +25,7 @@ public class CreateFieldUnitHandler extends AbstractHandler {
             FieldUnit fieldUnit = FieldUnit.NewInstance();
             fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class);
             derivateView.getConversationHolder().commit();
             FieldUnit fieldUnit = FieldUnit.NewInstance();
             fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class);
             derivateView.getConversationHolder().commit();
-            derivateView.addHierarchy(fieldUnit);
+            derivateView.addFieldUnit(fieldUnit);
             derivateView.refreshTree();
         }
         return null;
             derivateView.refreshTree();
         }
         return null;