ref #9172: check for dirty name editor before open taxon node wizard
authorKatja Luther <k.luther@bgbm.org>
Mon, 3 Aug 2020 11:51:31 +0000 (13:51 +0200)
committerKatja Luther <k.luther@bgbm.org>
Mon, 3 Aug 2020 11:51:31 +0000 (13:51 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/e4/DefaultOpenTaxonNodeWizardHandlerE4.java

index 39a7d5d59573d0c410654a5f72dc5e3a151dc143..35c7a98db734e9f84de136b5f875660b2844d4a8 100644 (file)
@@ -8,8 +8,12 @@
 */
 package eu.etaxonomy.taxeditor.handler.defaultHandler.e4;
 
+import java.util.Collection;
+
 import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.widgets.Shell;
@@ -17,6 +21,7 @@ import org.eclipse.swt.widgets.Shell;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
 import eu.etaxonomy.taxeditor.event.EventUtility;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -37,6 +42,24 @@ public class DefaultOpenTaxonNodeWizardHandlerE4 extends DefaultOpenHandlerBaseE
 
     @Override
     protected void open(TaxonNodeDto entity, Shell shell, EPartService partService) {
+        Collection<MPart> dirtyParts = partService.getDirtyParts();
+        if (!dirtyParts.isEmpty()){
+
+            for (MPart dirtyPart: dirtyParts){
+                if (dirtyPart.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")  && ((ITaxonEditor)dirtyPart.getObject()).getTaxonNode().getUuid().equals(entity.getUuid())){
+                    boolean doSave = MessageDialog
+                            .openConfirm(shell, "The taxonnode is in an unsaved mode",
+                                    "Do you want to save?");
+
+                    if (!doSave) {
+                        return ;
+                    }
+
+                    partService.savePart(dirtyPart, false);
+                }
+
+            }
+        }
         EditTaxonNodeWizard taxonNodeWizard = ContextInjectionFactory.make(EditTaxonNodeWizard.class, context);
         taxonNodeWizard.init(null, null);
         taxonNodeWizard.setEntity(CdmStore.getService(ITaxonNodeService.class).load(entity.getUuid()));
@@ -54,4 +77,6 @@ public class DefaultOpenTaxonNodeWizardHandlerE4 extends DefaultOpenHandlerBaseE
         return false;
     }
 
+
+
 }
\ No newline at end of file