1 package org
.argeo
.slc
.akb
.ui
.commands
;
4 import javax
.jcr
.Repository
;
5 import javax
.jcr
.RepositoryException
;
6 import javax
.jcr
.Session
;
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
;
22 * Deletes one or more akb nodes also closing the corresponding editors if
25 public class DeleteAkbNodes
extends AbstractHandler
{
26 public final static String ID
= AkbUiPlugin
.PLUGIN_ID
+ ".deleteAkbNodes";
28 /* DEPENDENCY INJECTION */
29 private Repository repository
;
31 public final static String PARAM_NODE_JCR_ID
= "param.nodeJcrId";
33 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
35 String nodeJcrId
= event
.getParameter(PARAM_NODE_JCR_ID
);
37 Session session
= null;
39 session
= repository
.login();
41 // caches current Page
42 IWorkbenchPage currentPage
= HandlerUtil
.getActiveWorkbenchWindow(
43 event
).getActivePage();
45 session
= repository
.login();
48 if (nodeJcrId
!= null)
49 node
= session
.getNodeByIdentifier(nodeJcrId
);
51 // We must be in a template to delete nodes...
52 Node template
= AkbJcrUtils
.getCurrentTemplate(node
);
55 Boolean ok
= MessageDialog
.openConfirm(
56 HandlerUtil
.getActiveShell(event
), "Confirm deletion",
57 "Do you want to delete this item?");
60 IEditorPart currPart
= currentPage
61 .findEditor(new AkbNodeEditorInput(template
62 .getIdentifier(), nodeJcrId
));
64 currentPage
.closeEditor(currPart
, false);
70 } catch (RepositoryException e
) {
71 throw new AkbException("JCR error while deleting node" + nodeJcrId
74 JcrUtils
.logoutQuietly(session
);
79 /* DEPENDENCY INJECTION */
80 public void setRepository(Repository repository
) {
81 this.repository
= repository
;