X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Fdocbook%2FDocumentPage.java;fp=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Fdocbook%2FDocumentPage.java;h=8aba8b70e6d3a034a5e2d7e66910a7188a3ab2b3;hp=0000000000000000000000000000000000000000;hb=6e56ffa34cb02ab04d028423aea342e3dfed4358;hpb=c285180bece610b2c2921d44fe14b6dde2123efa diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/docbook/DocumentPage.java b/org.argeo.app.ui/src/org/argeo/app/ui/docbook/DocumentPage.java new file mode 100644 index 0000000..8aba8b7 --- /dev/null +++ b/org.argeo.app.ui/src/org/argeo/app/ui/docbook/DocumentPage.java @@ -0,0 +1,62 @@ +package org.argeo.app.ui.docbook; + +import javax.jcr.Node; +import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.nodetype.NodeType; + +import org.argeo.api.cms.CmsEditable; +import org.argeo.app.docbook.DbkType; +import org.argeo.cms.swt.CmsSwtUtils; +import org.argeo.cms.ui.CmsUiProvider; +import org.argeo.cms.ui.util.CmsLink; +import org.argeo.cms.ui.viewers.JcrVersionCmsEditable; +import org.argeo.cms.ui.widgets.ScrolledPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +/** + * Display the text of the context, and provide an editor if the user can edit. + */ +public class DocumentPage implements CmsUiProvider { + public final static String WWW = "www"; + + @Override + public Control createUi(Composite parent, Node context) throws RepositoryException { + + ScrolledPage page = new ScrolledPage(parent, SWT.NONE); + page.setLayout(CmsSwtUtils.noSpaceGridLayout()); + GridData textGd = CmsSwtUtils.fillAll(); + page.setLayoutData(textGd); + + if (context.isNodeType(DbkType.article.get())) { + CmsEditable cmsEditable = new JcrVersionCmsEditable(context); + if (cmsEditable.canEdit()) + new TextEditorHeader(cmsEditable, parent, SWT.NONE).setLayoutData(CmsSwtUtils.fillWidth()); + if (!cmsEditable.isEditing()) + cmsEditable.startEditing(); + new DocumentTextEditor(page, SWT.FLAT, context, cmsEditable); + } else { + parent.setBackgroundMode(SWT.INHERIT_NONE); + if (context.getSession().hasPermission(context.getPath(), Session.ACTION_ADD_NODE)) { +// new DocumentTextEditor(page, SWT.FLAT, indexNode, cmsEditable); +// textGd.heightHint = 400; + + for (NodeIterator ni = context.getNodes(); ni.hasNext();) { + Node textNode = ni.nextNode(); + if (textNode.isNodeType(NodeType.NT_FOLDER)) + new CmsLink(textNode.getName() + "/", textNode.getPath()).createUi(parent, textNode); + } + for (NodeIterator ni = context.getNodes(); ni.hasNext();) { + Node textNode = ni.nextNode(); + if (textNode.isNodeType(DbkType.article.get()) && !textNode.getName().equals(WWW)) + new CmsLink(textNode.getName(), textNode.getPath()).createUi(parent, textNode); + } + } + } + return page; + } +}