From: Katja Luther Date: Tue, 2 Jun 2015 09:43:50 +0000 (+0000) Subject: fix for #3998 X-Git-Tag: 3.6.0~19 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/12df9e0e0bf82ce08deb61540fd7160657b9a525 fix for #3998 --- diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java index f65f3fdc4..4fc42da01 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/DeleteNodeHandler.java @@ -20,6 +20,9 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.handlers.HandlerUtil; +import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; +import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService; +import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.description.PolytomousKeyNode; import eu.etaxonomy.taxeditor.editor.EditorUtil; import eu.etaxonomy.taxeditor.editor.key.KeyEditor; @@ -27,6 +30,7 @@ import eu.etaxonomy.taxeditor.editor.key.polytomous.IPolytomousKeyEditorPage; import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.DeleteNodeOperation; import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; +import eu.etaxonomy.taxeditor.store.CdmStore; /** * @author n.hoffmann @@ -46,6 +50,15 @@ public class DeleteNodeHandler extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { IEditorPart editor = HandlerUtil.getActiveEditor(event); + if (editor.isDirty()){ + boolean proceed = MessageDialog.openQuestion(null, + "Save changes", "You have made changes that must be saved before you can delete the node. Would you like to proceed?"); + if (!proceed) { + return null; + }else{ + editor.doSave(EditorUtil.getMonitor()); + } + } if (editor instanceof KeyEditor) { IPolytomousKeyEditorPage editorPage = (IPolytomousKeyEditorPage) ((KeyEditor) editor) .getActiveEditor(); @@ -59,8 +72,8 @@ public class DeleteNodeHandler extends AbstractHandler { IUndoContext undoContext = EditorUtil.getUndoContext(); for (Object element : selection.toArray()) { - PolytomousKeyNode keyNode = (PolytomousKeyNode) element; - + PolytomousKeyNode keyNode = HibernateProxyHelper.deproxy(element, PolytomousKeyNode.class); + AbstractPostOperation operation = new DeleteNodeOperation( label, undoContext, keyNode, editorPage); EditorUtil.executeOperation(operation); diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java index c55cff77a..3b4ae0d7a 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java @@ -52,14 +52,15 @@ public class DeleteNodeOperation extends AbstractPostTaxonOperation { controller = (ICdmApplicationConfiguration) CdmStore.getCurrentApplicationConfiguration(); IPolytomousKeyNodeService service = controller.getPolytomousKeyNodeService(); + if (node.getChildren().size()>0){ if(! MessageDialog.openQuestion(null, "Confirm deletion of children", "The selected node has children, do you want to delete them, too?")) { - service.delete(node, false); + service.delete(node.getUuid(), false); } else{ - service.delete(node, true); + service.delete(node.getUuid(), true); } } else{ - service.delete(node, true); + service.delete(node.getUuid(), true); } return postExecute(null); }