]>
git.argeo.org Git - gpl/argeo-suite.git/blob - publishing/org.argeo.publishing.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
.ui
.CmsEditable
;
10 import org
.argeo
.cms
.ui
.CmsUiProvider
;
11 import org
.argeo
.cms
.ui
.util
.CmsLink
;
12 import org
.argeo
.cms
.ui
.util
.CmsUiUtils
;
13 import org
.argeo
.cms
.ui
.viewers
.JcrVersionCmsEditable
;
14 import org
.argeo
.cms
.ui
.widgets
.ScrolledPage
;
15 import org
.argeo
.jcr
.JcrUtils
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.layout
.GridData
;
18 import org
.eclipse
.swt
.widgets
.Composite
;
19 import org
.eclipse
.swt
.widgets
.Control
;
21 /** Display the text of the context, and provide an editor if the user can edit. */
22 public class WikiPage
implements CmsUiProvider
, CmsNames
{
24 public Control
createUi(Composite parent
, Node context
)
25 throws RepositoryException
{
26 CmsEditable cmsEditable
= new JcrVersionCmsEditable(context
);
27 if (cmsEditable
.canEdit())
28 new TextEditorHeader(cmsEditable
, parent
, SWT
.NONE
)
29 .setLayoutData(CmsUiUtils
.fillWidth());
31 ScrolledPage page
= new ScrolledPage(parent
, SWT
.NONE
);
32 page
.setLayout(CmsUiUtils
.noSpaceGridLayout());
33 GridData textGd
= CmsUiUtils
.fillAll();
34 page
.setLayoutData(textGd
);
36 if (context
.isNodeType(CmsTypes
.CMS_TEXT
)) {
37 new StandardTextEditor(page
, SWT
.NONE
, context
, cmsEditable
);
38 } else if (context
.isNodeType(NodeType
.NT_FOLDER
)
39 || context
.getPath().equals("/")) {
40 parent
.setBackgroundMode(SWT
.INHERIT_NONE
);
41 if (context
.getSession().hasPermission(context
.getPath(),
42 Session
.ACTION_ADD_NODE
)) {
43 Node indexNode
= JcrUtils
.getOrAdd(context
, CMS_INDEX
,
45 new StandardTextEditor(page
, SWT
.NONE
, indexNode
, cmsEditable
);
46 textGd
.heightHint
= 400;
48 for (NodeIterator ni
= context
.getNodes(); ni
.hasNext();) {
49 Node textNode
= ni
.nextNode();
50 if (textNode
.isNodeType(NodeType
.NT_FOLDER
))
51 new CmsLink(textNode
.getName() + "/",
52 textNode
.getPath()).createUi(parent
, textNode
);
54 for (NodeIterator ni
= context
.getNodes(); ni
.hasNext();) {
55 Node textNode
= ni
.nextNode();
56 if (textNode
.isNodeType(CmsTypes
.CMS_TEXT
)
57 && !textNode
.getName().equals(CMS_INDEX
))
58 new CmsLink(textNode
.getName(), textNode
.getPath())
59 .createUi(parent
, textNode
);