]> git.argeo.org Git - gpl/argeo-suite.git/blob - publish/DocumentUiProvider.java
Prepare next development cycle
[gpl/argeo-suite.git] / publish / DocumentUiProvider.java
1 package org.argeo.app.ui.publish;
2
3 import javax.jcr.Node;
4 import javax.jcr.RepositoryException;
5 import javax.jcr.nodetype.NodeType;
6
7 import org.argeo.api.cms.ux.CmsEditable;
8 import org.argeo.api.cms.ux.CmsView;
9 import org.argeo.app.docbook.DbkType;
10 import org.argeo.app.ui.docbook.AbstractDbkViewer;
11 import org.argeo.app.ui.docbook.DocumentTextEditor;
12 import org.argeo.cms.swt.CmsSwtUtils;
13 import org.argeo.cms.swt.widgets.ScrolledPage;
14 import org.argeo.cms.ui.CmsUiProvider;
15 import org.argeo.cms.ui.util.CmsLink;
16 import org.argeo.cms.ui.util.CmsUiUtils;
17 import org.argeo.cms.ui.viewers.JcrVersionCmsEditable;
18 import org.eclipse.swt.SWT;
19 import org.eclipse.swt.browser.Browser;
20 import org.eclipse.swt.layout.FillLayout;
21 import org.eclipse.swt.widgets.Composite;
22 import org.eclipse.swt.widgets.Control;
23
24 public class DocumentUiProvider implements CmsUiProvider {
25
26 @Override
27 public Control createUi(Composite parent, Node context) throws RepositoryException {
28 CmsView cmsView = CmsSwtUtils.getCmsView(parent);
29 CmsEditable cmsEditable = new JcrVersionCmsEditable(context);
30 if (context.hasNode(DbkType.article.get())) {
31 Node textNode = context.getNode(DbkType.article.get());
32 // Title
33 parent.setLayout(CmsSwtUtils.noSpaceGridLayout());
34
35 Composite links = new Composite(parent, SWT.NONE);
36 FillLayout linksLayout = new FillLayout();
37 linksLayout.spacing = 2;
38 links.setLayout(linksLayout);
39 CmsLink toHtml = new CmsLink("to HTML", "/html/dbk" + context.getPath() + "/index.html");
40 toHtml.createUiPart(links, context);
41 CmsLink toPdf = new CmsLink("to PDF", "/html/dbk" + context.getPath() + "/index.pdf");
42 toPdf.createUiPart(links, context);
43
44 ScrolledPage page = new ScrolledPage(parent, SWT.NONE);
45 page.setLayoutData(CmsSwtUtils.fillAll());
46 page.setLayout(CmsSwtUtils.noSpaceGridLayout());
47
48 cmsView.runAs(() -> {
49 AbstractDbkViewer dbkEditor = new DocumentTextEditor(page, SWT.NONE, textNode, cmsEditable);
50 dbkEditor.refresh();
51 });
52 return page;
53
54 } else if (context.isNodeType(NodeType.NT_FILE)) {
55 String fileName = context.getName();
56 if (fileName.endsWith(".pdf")) {
57 Browser browser = new Browser(parent, SWT.NONE);
58 String dataPath = CmsUiUtils.getDataPath(context);
59 browser.setUrl(dataPath);
60 browser.setLayoutData(CmsSwtUtils.fillAll());
61 return browser;
62 }
63 }
64 return null;
65 }
66
67 }