X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.akb.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fakb%2Fui%2Fcommands%2FDeleteAkbNodes.java;h=3a3e9a0a9e0804ba112e284f07467775bf93f2f5;hb=0df0d1a404a545baf2fe1e90d67f8235f6c6b47b;hp=abc41382da84502d40c29add5f2e710d7b0fae7e;hpb=cce1ca8a555b41f6ca0a77ab549a5e1461f2bb15;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/commands/DeleteAkbNodes.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/commands/DeleteAkbNodes.java index abc41382d..3a3e9a0a9 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/commands/DeleteAkbNodes.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/commands/DeleteAkbNodes.java @@ -7,11 +7,14 @@ import javax.jcr.Session; import org.argeo.jcr.JcrUtils; import org.argeo.slc.akb.AkbException; +import org.argeo.slc.akb.AkbTypes; import org.argeo.slc.akb.ui.AkbUiPlugin; import org.argeo.slc.akb.ui.editors.AkbNodeEditorInput; +import org.argeo.slc.akb.utils.AkbJcrUtils; 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.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.handlers.HandlerUtil; @@ -28,15 +31,14 @@ public class DeleteAkbNodes extends AbstractHandler { public final static String PARAM_NODE_JCR_ID = "param.nodeJcrId"; - // public final static String PARAM_NODE_TYPE = "param.nodeType"; - public Object execute(ExecutionEvent event) throws ExecutionException { - // String nodeType = event.getParameter(PARAM_NODE_TYPE); String nodeJcrId = event.getParameter(PARAM_NODE_JCR_ID); Session session = null; try { + session = repository.login(); + // caches current Page IWorkbenchPage currentPage = HandlerUtil.getActiveWorkbenchWindow( event).getActivePage(); @@ -47,14 +49,27 @@ public class DeleteAkbNodes extends AbstractHandler { if (nodeJcrId != null) node = session.getNodeByIdentifier(nodeJcrId); - // no node has been found or created, return silently - if (node == null) - return null; + // We must be in a template or on the root of an env instance to + // delete nodes. + Node template = node.isNodeType(AkbTypes.AKB_ENV) ? node + : AkbJcrUtils.getCurrentTemplate(node); + + if (node != null) { + Boolean ok = MessageDialog.openConfirm( + HandlerUtil.getActiveShell(event), "Confirm deletion", + "Do you want to delete this item?"); + + if (ok) { + IEditorPart currPart = currentPage + .findEditor(new AkbNodeEditorInput(template + .getIdentifier(), nodeJcrId)); + if (currPart != null) + currentPage.closeEditor(currPart, false); - IEditorPart currPart = currentPage - .findEditor(new AkbNodeEditorInput(nodeJcrId)); - if (currPart != null) - currPart.dispose(); + node.remove(); + session.save(); + } + } } catch (RepositoryException e) { throw new AkbException("JCR error while deleting node" + nodeJcrId + " editor", e);