fix #9264: use eventbus for updating link with taxon
authorKatja Luther <k.luther@bgbm.org>
Fri, 18 Dec 2020 09:17:37 +0000 (10:17 +0100)
committerKatja Luther <k.luther@bgbm.org>
Fri, 18 Dec 2020 09:18:27 +0000 (10:18 +0100)
eu.etaxonomy.taxeditor.navigation/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/TaxonNavigatorE4.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/LinkWithTaxonHandlerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/event/WorkbenchEventConstants.java

index b4c57ba15af6410494f2cf5562100072b230b0f5..0267ad36eef71269e40b4b067c0b1e0445bdff72 100644 (file)
@@ -36,6 +36,7 @@ Import-Package: javax.inject;version="1.0.0",
  org.eclipse.core.resources,
  org.eclipse.core.runtime,
  org.eclipse.core.runtime.jobs,
+ org.eclipse.e4.core.services.events,
  org.eclipse.equinox.app,
  org.eclipse.osgi.util;version="1.1.0",
  org.eclipse.ui.forms.widgets,
index fefc881fc79510e7b68ba690bfbe57403910a019..07ac8d69c12bf29d5accd2744fa5c524ff4965a4 100644 (file)
@@ -78,6 +78,7 @@ import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDtoNaturalComparator;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
 import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
+import eu.etaxonomy.taxeditor.event.EventUtility;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.DataChangeBridge;
@@ -319,6 +320,16 @@ public class TaxonNavigatorE4 implements
            }
        }
 
+       @Inject
+    @Optional
+    public void updateLinkWithTaxon(@UIEventTopic(WorkbenchEventConstants.UPDATE_LINK_WITH_TAXON) boolean isLinkWithTaxon){
+           this.linkWithTaxon = !linkWithTaxon;
+
+        if(this.isLinkWithTaxon()){
+            this.updateCurrentTaxon(EventUtility.getTaxonEditor());
+        }
+       }
+
     public void setLinkWithTaxon(boolean linkWithTaxon) {
         this.linkWithTaxon = linkWithTaxon;
     }
index 2cc5985189a4e2196d86fd74fbfef86adb6d2801..0cc66483f7bbb0d72ddb13995afa9cea78dc91bd 100644 (file)
@@ -8,15 +8,17 @@
 */
 package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
 
+import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.eclipse.e4.core.di.annotations.CanExecute;
 import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
 
-import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.navigation.navigator.e4.TaxonNavigatorE4;
 
 /**
@@ -26,16 +28,12 @@ import eu.etaxonomy.taxeditor.navigation.navigator.e4.TaxonNavigatorE4;
  *
  */
 public class LinkWithTaxonHandlerE4 {
+    @Inject
+    private IEventBroker eventBroker;
 
     @Execute
     public void execute(@Named(IServiceConstants.ACTIVE_PART)MPart activePart) {
-       if (activePart!=null && activePart.getObject() instanceof TaxonNavigatorE4) {
-               TaxonNavigatorE4 taxonNavigator = (TaxonNavigatorE4) activePart.getObject();
-               taxonNavigator.setLinkWithTaxon(!taxonNavigator.isLinkWithTaxon());
-               if(taxonNavigator.isLinkWithTaxon()){
-                   taxonNavigator.updateCurrentTaxon(EventUtility.getTaxonEditor());
-               }
-       }
+        eventBroker.post(WorkbenchEventConstants.UPDATE_LINK_WITH_TAXON, true);
        }
 
     @CanExecute
index 27b53e68ba8b04a0ebce5e576c763c62508a13b7..f71748e52f736ee0736e70a1b18a22184031948f 100644 (file)
@@ -52,4 +52,6 @@ public interface WorkbenchEventConstants {
     public static final String ADD_SAVE_CANDIDATE = "ADD/SAVE/CANDIDATE";
     public static final String ADD_SAVE_CHARACTER = "ADD/SAVE/CHARACTER";
 
+    public static final String UPDATE_LINK_WITH_TAXON = "UPDATE/LINK_WITH_TAXON";
+
 }