]> git.argeo.org Git - gpl/argeo-suite.git/blob - docbook/DocumentPage.java
Prepare next development cycle
[gpl/argeo-suite.git] / docbook / DocumentPage.java
1 package org.argeo.app.ui.docbook;
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.api.cms.ux.CmsEditable;
10 import org.argeo.app.docbook.DbkType;
11 import org.argeo.cms.swt.CmsSwtUtils;
12 import org.argeo.cms.swt.widgets.ScrolledPage;
13 import org.argeo.cms.ui.CmsUiProvider;
14 import org.argeo.cms.ui.util.CmsLink;
15 import org.argeo.cms.ui.viewers.JcrVersionCmsEditable;
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;
20
21 /**
22 * Display the text of the context, and provide an editor if the user can edit.
23 */
24 public class DocumentPage implements CmsUiProvider {
25 public final static String WWW = "www";
26
27 @Override
28 public Control createUi(Composite parent, Node context) throws RepositoryException {
29
30 ScrolledPage page = new ScrolledPage(parent, SWT.NONE);
31 page.setLayout(CmsSwtUtils.noSpaceGridLayout());
32 GridData textGd = CmsSwtUtils.fillAll();
33 page.setLayoutData(textGd);
34
35 if (context.isNodeType(DbkType.article.get())) {
36 CmsEditable cmsEditable = new JcrVersionCmsEditable(context);
37 if (cmsEditable.canEdit())
38 new TextEditorHeader(cmsEditable, parent, SWT.NONE).setLayoutData(CmsSwtUtils.fillWidth());
39 if (!cmsEditable.isEditing())
40 cmsEditable.startEditing();
41 new DocumentTextEditor(page, SWT.FLAT, context, cmsEditable);
42 } else {
43 parent.setBackgroundMode(SWT.INHERIT_NONE);
44 if (context.getSession().hasPermission(context.getPath(), Session.ACTION_ADD_NODE)) {
45 // new DocumentTextEditor(page, SWT.FLAT, indexNode, cmsEditable);
46 // textGd.heightHint = 400;
47
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() + "/", textNode.getPath()).createUi(parent, textNode);
52 }
53 for (NodeIterator ni = context.getNodes(); ni.hasNext();) {
54 Node textNode = ni.nextNode();
55 if (textNode.isNodeType(DbkType.article.get()) && !textNode.getName().equals(WWW))
56 new CmsLink(textNode.getName(), textNode.getPath()).createUi(parent, textNode);
57 }
58 }
59 }
60 return page;
61 }
62 }