]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/text/WikiPage.java
1 package org
.argeo
.cms
.text
;
4 import javax
.jcr
.NodeIterator
;
5 import javax
.jcr
.RepositoryException
;
6 import javax
.jcr
.Session
;
7 import javax
.jcr
.nodetype
.NodeType
;
9 import org
.argeo
.cms
.CmsNames
;
10 import org
.argeo
.cms
.CmsTypes
;
11 import org
.argeo
.cms
.ui
.CmsEditable
;
12 import org
.argeo
.cms
.ui
.CmsUiProvider
;
13 import org
.argeo
.cms
.util
.CmsLink
;
14 import org
.argeo
.cms
.util
.CmsUtils
;
15 import org
.argeo
.cms
.viewers
.JcrVersionCmsEditable
;
16 import org
.argeo
.cms
.widgets
.ScrolledPage
;
17 import org
.argeo
.jcr
.JcrUtils
;
18 import org
.eclipse
.swt
.SWT
;
19 import org
.eclipse
.swt
.layout
.GridData
;
20 import org
.eclipse
.swt
.widgets
.Composite
;
21 import org
.eclipse
.swt
.widgets
.Control
;
23 /** Display the text of the context, and provide an editor if the user can edit. */
24 public class WikiPage
implements CmsUiProvider
, CmsNames
{
26 public Control
createUi(Composite parent
, Node context
)
27 throws RepositoryException
{
28 CmsEditable cmsEditable
= new JcrVersionCmsEditable(context
);
29 if (cmsEditable
.canEdit())
30 new TextEditorHeader(cmsEditable
, parent
, SWT
.NONE
)
31 .setLayoutData(CmsUtils
.fillWidth());
33 ScrolledPage page
= new ScrolledPage(parent
, SWT
.NONE
);
34 page
.setLayout(CmsUtils
.noSpaceGridLayout());
35 GridData textGd
= CmsUtils
.fillAll();
36 page
.setLayoutData(textGd
);
38 if (context
.isNodeType(CmsTypes
.CMS_TEXT
)) {
39 new StandardTextEditor(page
, SWT
.NONE
, context
, cmsEditable
);
40 } else if (context
.isNodeType(NodeType
.NT_FOLDER
)
41 || context
.getPath().equals("/")) {
42 parent
.setBackgroundMode(SWT
.INHERIT_NONE
);
43 if (context
.getSession().hasPermission(context
.getPath(),
44 Session
.ACTION_ADD_NODE
)) {
45 Node indexNode
= JcrUtils
.getOrAdd(context
, CMS_INDEX
,
47 new StandardTextEditor(page
, SWT
.NONE
, indexNode
, cmsEditable
);
48 textGd
.heightHint
= 400;
50 for (NodeIterator ni
= context
.getNodes(); ni
.hasNext();) {
51 Node textNode
= ni
.nextNode();
52 if (textNode
.isNodeType(NodeType
.NT_FOLDER
))
53 new CmsLink(textNode
.getName() + "/",
54 textNode
.getPath()).createUi(parent
, textNode
);
56 for (NodeIterator ni
= context
.getNodes(); ni
.hasNext();) {
57 Node textNode
= ni
.nextNode();
58 if (textNode
.isNodeType(CmsTypes
.CMS_TEXT
)
59 && !textNode
.getName().equals(CMS_INDEX
))
60 new CmsLink(textNode
.getName(), textNode
.getPath())
61 .createUi(parent
, textNode
);