ref #8890: handle dynamic menu for ref objects view and taxonnode wizard correctly
authorKatja Luther <k.luther@bgbm.org>
Mon, 16 Mar 2020 08:52:35 +0000 (09:52 +0100)
committerKatja Luther <k.luther@bgbm.org>
Mon, 16 Mar 2020 08:52:35 +0000 (09:52 +0100)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/e4/ReferencingObjectsViewE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/OpenReferencingObjectsViewHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/e4/DefaultOpenTaxonNodeWizardHandlerE4.java

index 270f08afd265615df3fee09d76c81881ea44981e..0d5838faacca45f2148ef36d1fe9d05fc43a48e8 100644 (file)
@@ -63,9 +63,7 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.EventBase;
-import eu.etaxonomy.cdm.model.permission.Group;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
-import eu.etaxonomy.cdm.model.permission.User;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
@@ -74,6 +72,8 @@ import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.permission.Group;
+import eu.etaxonomy.cdm.model.permission.User;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
@@ -82,6 +82,7 @@ import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsContentProvider;
 import eu.etaxonomy.taxeditor.bulkeditor.referencingobjects.ReferencingObjectsLabelProvider;
+import eu.etaxonomy.taxeditor.editor.IReferencingObjectsView;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.DescriptionHelper;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -93,7 +94,7 @@ import eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPartE4;
  * @since Aug 16, 2017
  *
  */
-public class ReferencingObjectsViewE4 extends AbstractCdmEditorPartE4 {
+public class ReferencingObjectsViewE4 extends AbstractCdmEditorPartE4 implements IReferencingObjectsView{
 
     private static final Logger logger = Logger
                        .getLogger(ReferencingObjectsViewE4.class);
@@ -191,7 +192,8 @@ public class ReferencingObjectsViewE4 extends AbstractCdmEditorPartE4 {
                viewer.setColumnProperties(titles);
        }
 
-       public void updateReferencingObjects(final UUID entityUUID, final Class objectClass) {
+       @Override
+    public void updateReferencingObjects(final UUID entityUUID, final Class objectClass) {
            if (actualUuid == entityUUID){
                return ;
            }
index 7c88b71977bf7c9480e8e52da65fbfceb0a39074..0371f411d48f99545f1926ea04e4917399306e71 100644 (file)
@@ -1,5 +1,7 @@
 package eu.etaxonomy.taxeditor.handler.defaultHandler;
 
+import java.util.UUID;
+
 import javax.inject.Named;
 
 import org.eclipse.e4.core.di.annotations.CanExecute;
@@ -9,15 +11,40 @@ import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
+import org.eclipse.jface.viewers.IStructuredSelection;
 
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.bulkeditor.AppModelId;
+import eu.etaxonomy.taxeditor.editor.IReferencingObjectsView;
 
 public class OpenReferencingObjectsViewHandler {
 
+    Object selectedObject;
     @Execute
     public void execute(EPartService partService) {
         MPart part = partService.createPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_BULKEDITOR_REFERENCINGOBJECTS_E4_REFERENCINGOBJECTSVIEWE4);
         part = partService.showPart(part, PartState.ACTIVATE);
+        IReferencingObjectsView view = (IReferencingObjectsView)part.getObject();
+        UUID uuid = null;
+        Class clazz = null;
+
+        if (selectedObject instanceof IStructuredSelection){
+            selectedObject = ((IStructuredSelection)selectedObject).getFirstElement();
+        }
+        if (selectedObject instanceof CdmBase){
+            uuid = ((CdmBase)selectedObject).getUuid();
+            clazz = selectedObject.getClass();
+        } else if (selectedObject instanceof UuidAndTitleCache){
+            uuid = ((UuidAndTitleCache)selectedObject).getUuid();
+            clazz = ((UuidAndTitleCache)selectedObject).getType();
+        }
+        if (uuid != null && clazz != null){
+            view.updateReferencingObjects(uuid, clazz);
+        }
+
+
+
     }
 
     @CanExecute
@@ -27,6 +54,15 @@ public class OpenReferencingObjectsViewHandler {
         boolean canExecute = false;
         MPart part = partService.findPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_BULKEDITOR_REFERENCINGOBJECTS_E4_REFERENCINGOBJECTSVIEWE4);
         canExecute = !part.equals(activePart);
+
+
+        if (canExecute){
+            String commandId = menuItem.getCommand().getElementId();
+            selectedObject = menuItem.getTransientData().get(commandId+".uuid");
+            if (selectedObject instanceof IStructuredSelection){
+                canExecute = ((IStructuredSelection)selectedObject).size() == 1;
+            }
+        }
         menuItem.setVisible(canExecute);
         return canExecute;
     }
index 2fab61ce0260592be7c49f88932dabf92a056790..39a7d5d59573d0c410654a5f72dc5e3a151dc143 100644 (file)
@@ -48,7 +48,7 @@ public class DefaultOpenTaxonNodeWizardHandlerE4 extends DefaultOpenHandlerBaseE
 
     @Override
     public boolean canExecute(Object selection) {
-        if (((IStructuredSelection)selection).getFirstElement() instanceof TaxonNodeDto){
+        if (((IStructuredSelection)selection).getFirstElement() instanceof TaxonNodeDto && ((IStructuredSelection)selection).size() == 1){
             return ((TaxonNodeDto)((IStructuredSelection)selection).getFirstElement()).getTaxonUuid()!=null && PreferencesUtil.getBooleanValue(PreferencePredicate.ShowTaxonNodeWizard.getKey());
         }
         return false;