cleanup
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / e4 / BulkEditor.java
index 082aa3f69d7503f89625c447c929a68c4b4d6d8b..fb9a1f739e5f9f0e5505e52d3f21a81bb5aad25b 100644 (file)
@@ -52,6 +52,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
@@ -64,6 +65,7 @@ import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
 import eu.etaxonomy.taxeditor.bulkeditor.input.GroupEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.input.MediaEditorInput;
 import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.IBulkEditor;
 import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
@@ -108,7 +110,7 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
     private BulkEditorQuery lastQuery = null;
 
     private BulkEditorComposite bulkEditorComposite;
-    
+
     private Set<AbstractPostOperation> operations = new HashSet<>();
 
     @Inject
@@ -136,6 +138,7 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
        }
 
     public void save(IProgressMonitor monitor, boolean resetMerge) {
+       IStructuredSelection selection = getLastSelection();
        for(AbstractPostOperation<?> entry:operations){
             IStatus status = Status.CANCEL_STATUS;
             final IAdaptable uiInfoAdapter = WorkspaceUndoUtil
@@ -143,7 +146,7 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
             String operationlabel = entry.getLabel();
             try {
                 entry.addContext(IOperationHistory.GLOBAL_UNDO_CONTEXT);
-                
+
                 status = entry.execute(new NullProgressMonitor(), uiInfoAdapter);
             } catch (ExecutionException e) {
                 MessagingUtils.operationDialog(AbstractUtility.class, e, TaxeditorStorePlugin.PLUGIN_ID, operationlabel, null);
@@ -164,7 +167,7 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
         }
         input.saveModel(resetMerge);
 
-        IStructuredSelection selection = getSelection();
+//       IStructuredSelection selection = getSelection();
 
         dirty.setDirty(false);
         input.dispose();
@@ -174,10 +177,16 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
         if (lastQuery != null){
             bulkEditorComposite.performSearch(lastQuery, selection);
         }
+
     }
 
 
-       @Focus
+       private IStructuredSelection getLastSelection() {
+               return new StructuredSelection(this.bulkEditorComposite.getLastSelectedObject());
+       }
+
+       @Override
+    @Focus
        public void setFocus() {
         //make sure to bind again if maybe in another view the conversation was unbound
         if(conversation!=null && !conversation.isBound()){
@@ -232,6 +241,7 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
         return bulkEditorComposite.getCellSelection();
     }
 
+    @Override
     public void setSelection(IStructuredSelection selection){
         bulkEditorComposite.setSelection(selection);
     }
@@ -321,7 +331,10 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
                     getEditorInput().addSaveCandidate(changedSpecimen);
                     input.replaceInModel(changedSpecimen);
                 }
-            }else if (element instanceof Media){
+            }else if (element instanceof Media && input instanceof MediaEditorInput){
+               getEditorInput().addSaveCandidate((Media)element);
+                input.replaceInModel((Media)element);
+            }else if (element instanceof Media ) {
                 IStructuredSelection sel = getSelection();
                 Object firstElement = sel.getFirstElement();
                 if (firstElement instanceof TaxonBase){
@@ -332,9 +345,6 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
                     SpecimenOrObservationBase changedSpecimen = (SpecimenOrObservationBase)sel.getFirstElement();
                     getEditorInput().addSaveCandidate(changedSpecimen);
                     input.replaceInModel(changedSpecimen);
-                } else if (firstElement instanceof Media){
-                    getEditorInput().addSaveCandidate((Media)element);
-                    input.replaceInModel((Media)element);
                 }
             }else if(element instanceof Group){
                  Group oldGroup = ((GroupEditorInput)input).getEntityFromModel((Group)element);
@@ -350,7 +360,25 @@ public class BulkEditor implements IPartContentHasDetails, IConversationEnabled,
 
                 getEditorInput().addSaveCandidate(taxonBase);
                 input.replaceInModel( taxonBase);
-            }else{
+            }else if(element instanceof TypeDesignationBase ){
+                IStructuredSelection sel = this.getSelection();
+                TaxonName name = null;
+                TaxonBase taxon = null;
+                if (sel.getFirstElement() instanceof TaxonName){
+                    name = HibernateProxyHelper.deproxy(sel.getFirstElement(), TaxonName.class);
+                }else if (sel.getFirstElement() instanceof TaxonBase) {
+                       taxon = HibernateProxyHelper.deproxy(sel.getFirstElement(), TaxonBase.class);
+                }
+                if (name != null) {
+                       getEditorInput().addSaveCandidate(name);
+                       input.replaceInModel( name);
+                }else {
+                       getEditorInput().addSaveCandidate(taxon);
+                       input.replaceInModel(taxon);
+                }
+
+            }
+            else{
                 getEditorInput().addSaveCandidate((CdmBase)element);
                 input.replaceInModel((CdmBase) element);
             }