Merge branch 'release/4.3.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / contextMenu / CreateDerivateContextMenu.java
index a491a7abfcbab933ae08c9684d0719cbfe129526..cbdd50c782dbedc1c2ef97249e53a95fc7503e2f 100644 (file)
@@ -68,36 +68,38 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                                 new MenuItem(addMenu, SWT.SEPARATOR);
                                 createMenuItem(addMenu, TISSUE_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.TissueSample, DerivationEventType.PREPARATION());
                                 createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
-                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, DerivationEventType.ACCESSIONING());
+                                return;
                             }
                             //context menu for Specimen
                             else if(selectedTreeNode.getValue() instanceof DerivedUnit && ((DerivedUnit)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
 
                                 createMenuItem(addMenu, TISSUE_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.TissueSample, DerivationEventType.PREPARATION());
                                 createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
-                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, DerivationEventType.ACCESSIONING());
+                                return;
                             }
                             //context menu for TissueSample
                             else if(selectedTreeNode.getValue() instanceof DnaSample && ((DnaSample)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.TissueSample){
                                createMenuItem(addMenu, DNA_SAMPLE, selectedTreeNode, DnaSample.class, SpecimenOrObservationType.DnaSample, DerivationEventType.DNA_EXTRACTION());
-                               createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                               createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, DerivationEventType.ACCESSIONING());
+                                return;
                             }
                             //context menu for DnaSample
                             else if(selectedTreeNode.getValue() instanceof DnaSample && ((DnaSample)selectedTreeNode.getValue()).getRecordBasis()==SpecimenOrObservationType.DnaSample){
                                 createMenuItem(addMenu, CONSENSUS_SEQUENCE, selectedTreeNode, Sequence.class, null, null);
-                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.Media, DerivationEventType.ACCESSIONING());
+                                createMenuItem(addMenu, MEDIA_SPECIMEN, selectedTreeNode, MediaSpecimen.class, SpecimenOrObservationType.StillImage, DerivationEventType.ACCESSIONING());
+                                return;
                             }
                             //context menu for Sequence
                             else if(selectedTreeNode.getValue() instanceof Sequence){
                                 createMenuItem(addMenu, SINGLE_READ, selectedTreeNode, SingleRead.class, null, null);
-                            }
-                            //default
-                            else{
-                                MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
-                                menuItem.setText(Messages.CreateDerivateContextMenu_NO_CHILD_DERIVATE);
-                                menuItem.setEnabled(false);
+                                return;
                             }
                         }
+                        MenuItem menuItem = new MenuItem(addMenu, SWT.NONE);
+                        menuItem.setText(Messages.CreateDerivateContextMenu_NO_CHILD_DERIVATE);
+                        menuItem.setEnabled(false);
                     }
 
 
@@ -107,7 +109,7 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
     }
 
     private void createMenuItem(Menu menu, String menuLabel, final TreeNode selectedNode, Class<?> childClass, final SpecimenOrObservationType specimenType, final DerivationEventType derivationEventType) {
-        if(specimenType!=null && specimenType.equals(SpecimenOrObservationType.Media)){
+        if(specimenType!=null && specimenType.equals(SpecimenOrObservationType.StillImage)){
             //media submenu
             MenuItem mediaItem = new MenuItem(menu, SWT.CASCADE);
             mediaItem.setText(Messages.CreateDerivateContextMenu_MEDIA);
@@ -127,29 +129,32 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                 public void widgetSelected(SelectionEvent e) {
                     //select media
                     Media media = MediaSelectionDialog.select(AbstractUtility.getShell(), null, null);
-                    //create MediaSpecimen
-                    MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specimenType);
-                    mediaSpecimen.setMediaSpecimen(media);
-
-                    //attach to parent
-                    if(selectedNode.getValue() instanceof SpecimenOrObservationBase){
-                        SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedNode.getValue();
-
-                        specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, mediaSpecimen, derivationEventType));
-                        mediaSpecimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
-                        mediaSpecimen.getTitleCache(); //update title cache
-                        CdmStore.getService(IOccurrenceService.class).merge(specimenOrObservationBase);
-                    }
+                    if(media!=null){
+                        //create MediaSpecimen
+                        MediaSpecimen mediaSpecimen = MediaSpecimen.NewInstance(specimenType);
+                        mediaSpecimen.setMediaSpecimen(media);
+
+                        //attach to parent
+                        if(selectedNode.getValue() instanceof SpecimenOrObservationBase){
+                            SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedNode.getValue();
+
+                            specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, mediaSpecimen, derivationEventType));
+                            mediaSpecimen.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
+                            mediaSpecimen.getTitleCache(); //update title cache
+                            CdmStore.getService(IOccurrenceService.class).merge(specimenOrObservationBase, true);
+                           
+                        }
 
-                    //refresh view
-                    DerivateView derivateView = null;
-                    if(AbstractUtility.getActivePart() instanceof DerivateView){
-                        derivateView = (DerivateView) AbstractUtility.getActivePart();
-                    }
-                    if(derivateView!=null){
+                        //refresh view
+                        DerivateView derivateView = null;
+                        if(AbstractUtility.getActivePart() instanceof DerivateView){
+                            derivateView = (DerivateView) AbstractUtility.getActivePart();
+                        }
+                        if(derivateView!=null){
 
-                        derivateView.getConversationHolder().commit();
-                        derivateView.refreshTree(mediaSpecimen);
+                            derivateView.getConversationHolder().commit();
+                            derivateView.refreshTree(mediaSpecimen);
+                        }
                     }
                 }
             });
@@ -202,15 +207,15 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                     Sequence newInstance = Sequence.NewInstance(dnaSample, "", 0); //$NON-NLS-1$
                     createdElement = newInstance;
                 }
-                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate);
-            }
-            else if(selectedDerivate instanceof Sequence){
+                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate, true);
+            } else if(selectedDerivate instanceof Sequence){
                 SingleRead newInstance = SingleRead.NewInstance();
                 ((Sequence) selectedDerivate).addSingleRead(newInstance);
                 createdElement = newInstance;
-                CdmApplicationState.getCurrentAppConfig().getSequenceService().merge((Sequence)selectedDerivate);
+                CdmApplicationState.getCurrentAppConfig().getSequenceService().merge((Sequence)selectedDerivate, true);
+                
             }
-            else if(selectedDerivate instanceof SpecimenOrObservationBase && DerivedUnit.class.isAssignableFrom(childClass)){
+            if(selectedDerivate instanceof SpecimenOrObservationBase && DerivedUnit.class.isAssignableFrom(childClass)){
                 SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedDerivate;
                 DerivedUnit derivedUnit;
                 if(childClass.equals(DnaSample.class)){
@@ -234,12 +239,12 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                 derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
                 derivedUnit.getTitleCache(); //update title cache
                 createdElement = derivedUnit;
-                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate);
+                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate, true);
+                
             }
 
             //refresh view
             if(derivateView!=null){
-                //CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate);
                 derivateView.getConversationHolder().commit();
                 derivateView.refreshTree(createdElement);
             }