1 package org
.argeo
.cms
.ui
.workbench
.jcr
;
3 import java
.util
.ArrayList
;
7 import javax
.jcr
.RepositoryException
;
8 import javax
.jcr
.nodetype
.NodeType
;
9 import javax
.jcr
.security
.AccessControlManager
;
10 import javax
.jcr
.security
.Privilege
;
12 import org
.argeo
.cms
.ui
.workbench
.WorkbenchUiPlugin
;
13 import org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.parts
.ChildNodesPage
;
14 import org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.parts
.GenericNodeEditorInput
;
15 import org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.parts
.GenericNodePage
;
16 import org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.parts
.GenericPropertyPage
;
17 import org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.parts
.NodePrivilegesPage
;
18 import org
.argeo
.cms
.ui
.workbench
.internal
.jcr
.parts
.NodeVersionHistoryPage
;
19 import org
.argeo
.eclipse
.ui
.EclipseUiException
;
20 import org
.argeo
.jcr
.JcrUtils
;
21 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
22 import org
.eclipse
.ui
.IEditorInput
;
23 import org
.eclipse
.ui
.IEditorSite
;
24 import org
.eclipse
.ui
.PartInitException
;
25 import org
.eclipse
.ui
.forms
.editor
.FormEditor
;
27 /** Default form editor for a Jcr {@link Node} */
28 public class DefaultNodeEditor
extends FormEditor
{
29 private static final long serialVersionUID
= 8322127770921612239L;
31 // private final static Log log =
32 // LogFactory.getLog(GenericNodeEditor.class);
33 public final static String ID
= WorkbenchUiPlugin
.PLUGIN_ID
34 + ".defaultNodeEditor";
36 private Node currentNode
;
38 private GenericNodePage genericNodePage
;
39 private GenericPropertyPage genericPropertyPage
;
40 private ChildNodesPage childNodesPage
;
41 private NodePrivilegesPage nodeRightsManagementPage
;
42 private NodeVersionHistoryPage nodeVersionHistoryPage
;
44 public void init(IEditorSite site
, IEditorInput input
)
45 throws PartInitException
{
46 super.init(site
, input
);
47 GenericNodeEditorInput nei
= (GenericNodeEditorInput
) getEditorInput();
48 currentNode
= nei
.getCurrentNode();
49 this.setPartName(JcrUtils
.lastPathElement(nei
.getPath()));
53 protected void addPages() {
55 genericPropertyPage
= new GenericPropertyPage(this,
56 WorkbenchUiPlugin
.getMessage("genericNodePageTitle"),
58 addPage(genericPropertyPage
);
60 childNodesPage
= new ChildNodesPage(this,
61 WorkbenchUiPlugin
.getMessage("childNodesPageTitle"),
63 addPage(childNodesPage
);
65 AccessControlManager accessControlManager
= currentNode
66 .getSession().getAccessControlManager();
67 List
<Privilege
> privileges
= new ArrayList
<Privilege
>();
68 privileges
.add(accessControlManager
69 .privilegeFromName(Privilege
.JCR_READ_ACCESS_CONTROL
));
70 if (accessControlManager
.hasPrivileges(currentNode
.getPath(),
71 privileges
.toArray(new Privilege
[0]))) {
72 nodeRightsManagementPage
= new NodePrivilegesPage(this,
74 .getMessage("nodeRightsManagementPageTitle"),
76 addPage(nodeRightsManagementPage
);
78 if (currentNode
.isNodeType(NodeType
.MIX_VERSIONABLE
)) {
79 nodeVersionHistoryPage
= new NodeVersionHistoryPage(this,
81 .getMessage("nodeVersionHistoryPageTitle"),
83 addPage(nodeVersionHistoryPage
);
86 privileges
= new ArrayList
<Privilege
>();
87 privileges
.add(accessControlManager
88 .privilegeFromName(Privilege
.JCR_ALL
));
89 if (accessControlManager
.hasPrivileges(currentNode
.getPath(),
90 privileges
.toArray(new Privilege
[0]))) {
91 genericNodePage
= new GenericNodePage(
93 WorkbenchUiPlugin
.getMessage("propertyEditorPageTitle"),
95 addPage(genericNodePage
);
98 } catch (RepositoryException e
) {
99 throw new EclipseUiException("Cannot get node info for "
101 } catch (PartInitException e
) {
102 throw new EclipseUiException("Cannot add page "
103 + "on node editor for " + currentNode
, e
);
108 public void doSaveAs() {
109 // unused compulsory method
113 public void doSave(IProgressMonitor monitor
) {
115 // Automatically commit all pages of the editor
117 firePropertyChange(PROP_DIRTY
);
118 } catch (Exception e
) {
119 throw new EclipseUiException("Error while saving node", e
);
125 public boolean isSaveAsAllowed() {
129 Node
getCurrentNode() {