]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/text/DocumentPage.java
Add JGit to client.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / text / DocumentPage.java
1 package org.argeo.cms.text;
2
3 import javax.jcr.Node;
4 import javax.jcr.NodeIterator;
5 import javax.jcr.RepositoryException;
6 import javax.jcr.Session;
7 import javax.jcr.nodetype.NodeType;
8
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;
22
23 /**
24 * Display the text of the context, and provide an editor if the user can edit.
25 */
26 public class DocumentPage implements CmsUiProvider {
27 @Override
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());
32
33 ScrolledPage page = new ScrolledPage(parent, SWT.NONE);
34 page.setLayout(CmsUtils.noSpaceGridLayout());
35 GridData textGd = CmsUtils.fillAll();
36 page.setLayoutData(textGd);
37
38 if (context.isNodeType(DocBookTypes.ARTICLE)) {
39 new DocumentTextEditor(page, SWT.NONE, context, cmsEditable);
40 } else {
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;
46
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);
51 }
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);
56 }
57 }
58 }
59 return page;
60 }
61 }