]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/text/DocumentPage.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
.ui
.CmsEditable
;
11 import org
.argeo
.cms
.ui
.CmsUiProvider
;
12 import org
.argeo
.cms
.util
.CmsLink
;
13 import org
.argeo
.cms
.util
.CmsUtils
;
14 import org
.argeo
.cms
.viewers
.JcrVersionCmsEditable
;
15 import org
.argeo
.cms
.widgets
.ScrolledPage
;
16 import org
.argeo
.jcr
.JcrUtils
;
17 import org
.argeo
.jcr
.docbook
.DocBookTypes
;
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
;
24 * Display the text of the context, and provide an editor if the user can edit.
26 public class DocumentPage
implements CmsUiProvider
{
28 public Control
createUi(Composite parent
, Node context
) throws RepositoryException
{
29 CmsEditable cmsEditable
= new JcrVersionCmsEditable(context
);
30 if (cmsEditable
.canEdit())
31 new TextEditorHeader(cmsEditable
, parent
, SWT
.NONE
).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(DocBookTypes
.ARTICLE
)) {
39 new DocumentTextEditor(page
, SWT
.NONE
, context
, cmsEditable
);
41 parent
.setBackgroundMode(SWT
.INHERIT_NONE
);
42 if (context
.getSession().hasPermission(context
.getPath(), Session
.ACTION_ADD_NODE
)) {
43 Node indexNode
= JcrUtils
.getOrAdd(context
, CmsNames
.CMS_INDEX
, DocBookTypes
.ARTICLE
);
44 new DocumentTextEditor(page
, SWT
.NONE
, indexNode
, cmsEditable
);
45 textGd
.heightHint
= 400;
47 for (NodeIterator ni
= context
.getNodes(); ni
.hasNext();) {
48 Node textNode
= ni
.nextNode();
49 if (textNode
.isNodeType(NodeType
.NT_FOLDER
))
50 new CmsLink(textNode
.getName() + "/", textNode
.getPath()).createUi(parent
, textNode
);
52 for (NodeIterator ni
= context
.getNodes(); ni
.hasNext();) {
53 Node textNode
= ni
.nextNode();
54 if (textNode
.isNodeType(DocBookTypes
.ARTICLE
) && !textNode
.getName().equals(CmsNames
.CMS_INDEX
))
55 new CmsLink(textNode
.getName(), textNode
.getPath()).createUi(parent
, textNode
);