]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/DeleteNodes.java
Add dep folder
[lgpl/argeo-commons.git] / server / plugins / org.argeo.jcr.ui.explorer / src / main / java / org / argeo / jcr / ui / explorer / commands / DeleteNodes.java
index 125511da749aa116c7d883d26026bab542f24982..26d4cdd4323f85ed7f58df47cf952f96d9169d97 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2012 Mathieu Baudier
+ * Copyright (C) 2007-2012 Argeo GmbH
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,12 +23,13 @@ import javax.jcr.RepositoryException;
 import org.argeo.ArgeoException;
 import org.argeo.eclipse.ui.ErrorFeedback;
 import org.argeo.eclipse.ui.TreeParent;
-import org.argeo.jcr.ui.explorer.model.SingleJcrNode;
-import org.argeo.jcr.ui.explorer.model.WorkspaceNode;
+import org.argeo.jcr.ui.explorer.model.SingleJcrNodeElem;
+import org.argeo.jcr.ui.explorer.model.WorkspaceElem;
 import org.argeo.jcr.ui.explorer.views.GenericJcrBrowser;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.handlers.HandlerUtil;
@@ -46,21 +47,36 @@ public class DeleteNodes extends AbstractHandler {
        public Object execute(ExecutionEvent event) throws ExecutionException {
                ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
                                .getActivePage().getSelection();
+               if (selection == null || !(selection instanceof IStructuredSelection))
+                       return null;
+
                GenericJcrBrowser view = (GenericJcrBrowser) HandlerUtil
                                .getActiveWorkbenchWindow(event).getActivePage()
                                .findView(HandlerUtil.getActivePartId(event));
 
-               if (selection != null && selection instanceof IStructuredSelection) {
+               // confirmation
+               StringBuffer buf = new StringBuffer("");
+               Iterator<?> lst = ((IStructuredSelection) selection).iterator();
+               while (lst.hasNext()) {
+                       SingleJcrNodeElem sjn = ((SingleJcrNodeElem) lst.next());
+                       buf.append(sjn.getName()).append(' ');
+               }
+               Boolean ok = MessageDialog.openConfirm(
+                               HandlerUtil.getActiveShell(event), "Confirm deletion",
+                               "Do you want to delete " + buf + "?");
+
+               // operation
+               if (ok) {
                        Iterator<?> it = ((IStructuredSelection) selection).iterator();
                        Object obj = null;
-                       SingleJcrNode ancestor = null;
-                       WorkspaceNode rootAncestor = null;
+                       SingleJcrNodeElem ancestor = null;
+                       WorkspaceElem rootAncestor = null;
                        try {
                                while (it.hasNext()) {
                                        obj = it.next();
-                                       if (obj instanceof SingleJcrNode) {
+                                       if (obj instanceof SingleJcrNodeElem) {
                                                // Cache objects
-                                               SingleJcrNode sjn = (SingleJcrNode) obj;
+                                               SingleJcrNodeElem sjn = (SingleJcrNodeElem) obj;
                                                TreeParent tp = (TreeParent) sjn.getParent();
                                                Node node = sjn.getNode();
 
@@ -71,10 +87,10 @@ public class DeleteNodes extends AbstractHandler {
                                                tp.removeChild(sjn);
 
                                                // Check if the parent is the root node
-                                               if (tp instanceof WorkspaceNode)
-                                                       rootAncestor = (WorkspaceNode) tp;
+                                               if (tp instanceof WorkspaceElem)
+                                                       rootAncestor = (WorkspaceElem) tp;
                                                else
-                                                       ancestor = getOlder(ancestor, (SingleJcrNode) tp);
+                                                       ancestor = getOlder(ancestor, (SingleJcrNodeElem) tp);
                                        }
                                }
                                if (rootAncestor != null)
@@ -88,7 +104,7 @@ public class DeleteNodes extends AbstractHandler {
                return null;
        }
 
-       private SingleJcrNode getOlder(SingleJcrNode A, SingleJcrNode B) {
+       private SingleJcrNodeElem getOlder(SingleJcrNodeElem A, SingleJcrNodeElem B) {
                try {
                        if (A == null)
                                return B == null ? null : B;