merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / key / polytomous / operation / DeleteNodeOperation.java
index d4cc5ddb466e6bd2772c81acedaeb14e4e919f0f..02097b6f25ee1bc53d71548259f45b7ea9d3bfe6 100644 (file)
@@ -8,52 +8,79 @@ import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.handlers.HandlerUtil;
 
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.cdm.api.application.CdmApplicationController;
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * @author n.hoffmann
- *
+ * 
  */
-public class DeleteNodeOperation extends AbstractPostOperation {
+public class DeleteNodeOperation extends AbstractPostTaxonOperation {
 
-       private PolytomousKeyNode node;
-       private PolytomousKey key;
+       private final PolytomousKeyNode parent;
+       private final PolytomousKeyNode node;
 
-       public DeleteNodeOperation(String label,
-                       IUndoContext undoContext, PolytomousKeyNode node, IPostOperationEnabled postOperationEnabled) {
+       public DeleteNodeOperation(String label, IUndoContext undoContext,
+                       PolytomousKeyNode node, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, postOperationEnabled);
                this.node = node;
+               this.parent = node.getParent();
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse
+        * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
                
-               key = node.getKey();
+               //parent.removeChild(node);
+               CdmApplicationController controller;
                
+               controller = (CdmApplicationController) 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);
+                       }
+               } else{
+                       service.delete(node, true);
+               }
                return postExecute(null);
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse
+        * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
        @Override
        public IStatus redo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               // TODO Auto-generated method stub
-               return null;
+               return execute(monitor, info);
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse
+        * .core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)