ref #8890: allow multiselect for open in dynamic menu
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / handler / defaultHandler / OpenBulkEditorForIdentifiableEntityE4.java
index a36791c55f38faa5e1c8d19628bd816aeb77d0f5..eceacdc9226afbdf4aa63c8904237c0990da05c1 100644 (file)
@@ -1,7 +1,6 @@
 package eu.etaxonomy.taxeditor.bulkeditor.handler.defaultHandler;
 
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
-import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
@@ -11,11 +10,12 @@ import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
 import eu.etaxonomy.taxeditor.handler.defaultHandler.e4.DefaultOpenHandlerBaseE4;
 
-public class OpenBulkEditorForIdentifiableEntityE4 extends DefaultOpenHandlerBaseE4<IdentifiableEntity>{
+public class OpenBulkEditorForIdentifiableEntityE4 extends DefaultOpenHandlerBaseE4<Object>{
 
     /**
      * {@inheritDoc}
@@ -29,8 +29,13 @@ public class OpenBulkEditorForIdentifiableEntityE4 extends DefaultOpenHandlerBas
      * {@inheritDoc}
      */
     @Override
-    protected void open(IdentifiableEntity entity, Shell shell, EPartService partService) {
-        AbstractBulkEditorInput input = AbstractBulkEditorInput.NewInstance(entity);
+    protected void open(Object entity, Shell shell, EPartService partService) {
+        AbstractBulkEditorInput input = null;
+        if (entity instanceof UuidAndTitleCache){
+            AbstractBulkEditorInput.NewInstance(((UuidAndTitleCache)entity).getClass(), ((UuidAndTitleCache)entity).getUuid());
+        }else if (entity instanceof IdentifiableEntity){
+            input = AbstractBulkEditorInput.NewInstance((IdentifiableEntity)entity);
+        }
         BulkEditorUtil.openBulkEditor(input, modelService, partService, application);
     }
 
@@ -38,15 +43,24 @@ public class OpenBulkEditorForIdentifiableEntityE4 extends DefaultOpenHandlerBas
      * {@inheritDoc}
      */
     @Override
-    protected boolean canExecute(IStructuredSelection entity) {
+    protected boolean canExecute(Object entity) {
+        if (entity instanceof UuidAndTitleCache){
+            return (TaxonName.class.isAssignableFrom(((UuidAndTitleCache)entity).getType())
+                    || AgentBase.class.isAssignableFrom(((UuidAndTitleCache)entity).getType())
+                    || SpecimenOrObservationBase.class.isAssignableFrom(((UuidAndTitleCache)entity).getType())
+                    || TaxonBase.class.isAssignableFrom(((UuidAndTitleCache)entity).getType())
+                    || Reference.class.isAssignableFrom(((UuidAndTitleCache)entity).getType()));
+        }
+
         return entity instanceof Reference
-                || entity instanceof TaxonName
-                || entity instanceof AgentBase
-                || entity instanceof SpecimenOrObservationBase
-                || entity instanceof TaxonBase
-                || entity instanceof Media
-                ;
-    }
+            || entity instanceof TaxonName
+            || entity instanceof AgentBase
+            || entity instanceof SpecimenOrObservationBase
+            || entity instanceof TaxonBase
+            || entity instanceof Media
+            ;
+
+   }
 
     @Override
     protected String getPartId() {