]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/commands/DeleteAkbNodes.java
fix a few post refactoring UI Bugs
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / commands / DeleteAkbNodes.java
1 package org.argeo.slc.akb.ui.commands;
2
3 import javax.jcr.Node;
4 import javax.jcr.Repository;
5 import javax.jcr.RepositoryException;
6 import javax.jcr.Session;
7
8 import org.argeo.jcr.JcrUtils;
9 import org.argeo.slc.akb.AkbException;
10 import org.argeo.slc.akb.ui.AkbUiPlugin;
11 import org.argeo.slc.akb.ui.editors.AkbNodeEditorInput;
12 import org.argeo.slc.akb.utils.AkbJcrUtils;
13 import org.eclipse.core.commands.AbstractHandler;
14 import org.eclipse.core.commands.ExecutionEvent;
15 import org.eclipse.core.commands.ExecutionException;
16 import org.eclipse.jface.dialogs.MessageDialog;
17 import org.eclipse.ui.IEditorPart;
18 import org.eclipse.ui.IWorkbenchPage;
19 import org.eclipse.ui.handlers.HandlerUtil;
20
21 /**
22 * Deletes one or more akb nodes also closing the corresponding editors if
23 * needed
24 */
25 public class DeleteAkbNodes extends AbstractHandler {
26 public final static String ID = AkbUiPlugin.PLUGIN_ID + ".deleteAkbNodes";
27
28 /* DEPENDENCY INJECTION */
29 private Repository repository;
30
31 public final static String PARAM_NODE_JCR_ID = "param.nodeJcrId";
32
33 public Object execute(ExecutionEvent event) throws ExecutionException {
34
35 String nodeJcrId = event.getParameter(PARAM_NODE_JCR_ID);
36
37 Session session = null;
38 try {
39 session = repository.login();
40
41 // caches current Page
42 IWorkbenchPage currentPage = HandlerUtil.getActiveWorkbenchWindow(
43 event).getActivePage();
44
45 session = repository.login();
46 Node node = null;
47
48 if (nodeJcrId != null)
49 node = session.getNodeByIdentifier(nodeJcrId);
50
51 // We must be in a template to delete nodes...
52 Node template = AkbJcrUtils.getCurrentTemplate(node);
53
54 IEditorPart currPart = currentPage
55 .findEditor(new AkbNodeEditorInput(
56 template.getIdentifier(), nodeJcrId));
57 if (currPart != null)
58 currPart.dispose();
59
60 if (node != null) {
61 Boolean ok = MessageDialog.openConfirm(
62 HandlerUtil.getActiveShell(event), "Confirm deletion",
63 "Do you want to delete this item?");
64
65 if (ok) {
66 node.remove();
67 session.save();
68 }
69 }
70 } catch (RepositoryException e) {
71 throw new AkbException("JCR error while deleting node" + nodeJcrId
72 + " editor", e);
73 } finally {
74 JcrUtils.logoutQuietly(session);
75 }
76 return null;
77 }
78
79 /* DEPENDENCY INJECTION */
80 public void setRepository(Repository repository) {
81 this.repository = repository;
82 }
83 }