import javax.inject.Named;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.core.di.annotations.Optional;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionElementsOperation;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
}
newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
- Collection<MPart> targetEditors = EditorUtil.checkForChanges(targetTaxon.getUuid(), partService);
-
- if (targetEditors != null || this.editor.isDirty()){
- boolean proceed = MessageDialog.openQuestion(null,
- Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
- if( targetEditors.iterator().hasNext() ){
- MPart part = targetEditors.iterator().next();
- if (proceed) {
- if (part != null){
- if (part.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")){
- TaxonNameEditorE4 targetEditor = (TaxonNameEditorE4) WorkbenchUtility.getE4WrappedPart(part);
-
- targetEditor.save(AbstractUtility.getMonitor());
- }
- if (editor.isDirty()){
- editor.save(AbstractUtility.getMonitor());
- }
- } else {
- return;
- }
- }
+ Collection<IE4SavablePart> targetEditors = EditorUtil.checkForTaxonChanges(targetTaxon.getUuid(), partService);
+
+ if (!targetEditors.isEmpty() || this.editor.isDirty()){
+ if(MessageDialog.openQuestion(null,Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE)){
+ this.editor.save(new NullProgressMonitor());
+ targetEditors.forEach(editor->editor.save(new NullProgressMonitor()));
+ return;
+ }
+ else{
+ return;
}
}
-// if ((targetEditor != null && targetEditor.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")) || this.editor.isDirty()){
-// boolean proceed = MessageDialog.openQuestion(null,
-// Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
-// if (proceed) {
-// if (targetEditor != null){
-// e4WrappedPart = WorkbenchUtility.getE4WrappedPart(targetEditor);
-// ((TaxonNameEditorE4)e4WrappedPart).save(AbstractUtility.getMonitor());
-// }
-// if (editor.isDirty()){
-// editor.save(AbstractUtility.getMonitor());
-// }
-// } else {
-// return;
-// }
-// }
-
String moveMessage = String.format(Messages.MoveDescriptionElementsHandler_ELEMENTS_MOVED, editor.getTaxon());
AbstractPostTaxonOperation operation = new MoveDescriptionElementsOperation(