]> git.argeo.org Git - gpl/argeo-suite.git/blob - publishing/ui/PublishingApp.java
Prepare next development cycle
[gpl/argeo-suite.git] / publishing / ui / PublishingApp.java
1 package org.argeo.publishing.ui;
2
3 import java.util.HashSet;
4 import java.util.Map;
5 import java.util.Set;
6
7 import javax.jcr.Node;
8 import javax.jcr.RepositoryException;
9 import javax.jcr.Session;
10
11 import org.apache.commons.logging.Log;
12 import org.apache.commons.logging.LogFactory;
13 import org.argeo.api.NodeUtils;
14 import org.argeo.cms.ui.AbstractCmsApp;
15 import org.argeo.cms.ui.CmsApp;
16 import org.argeo.cms.ui.CmsUiProvider;
17 import org.argeo.docbook.ui.DocBookTypes;
18 import org.argeo.docbook.ui.DocumentPage;
19 import org.argeo.jcr.Jcr;
20 import org.argeo.jcr.JcrUtils;
21 import org.eclipse.swt.layout.GridLayout;
22 import org.eclipse.swt.widgets.Composite;
23 import org.eclipse.swt.widgets.Control;
24 import org.osgi.framework.Constants;
25
26 /**
27 * A {@link CmsApp} dedicated to publishing, typically a public or internal web
28 * site.
29 */
30 public class PublishingApp extends AbstractCmsApp {
31 private final static Log log = LogFactory.getLog(PublishingApp.class);
32
33 private String pid;
34 private String defaultThemeId;
35
36 private CmsUiProvider landingPage;
37
38 public void init(Map<String, String> properties) {
39 defaultThemeId = properties.get("defaultThemeId");
40 pid = properties.get(Constants.SERVICE_PID);
41 if (log.isDebugEnabled())
42 log.info("Publishing App " + pid + " started");
43 }
44
45 public void destroy(Map<String, String> properties) {
46 if (log.isDebugEnabled())
47 log.info("Publishing App " + pid + " stopped");
48
49 }
50
51 @Override
52 public Set<String> getUiNames() {
53 Set<String> uiNames = new HashSet<>();
54 uiNames.add("");
55 return uiNames;
56 }
57
58 @Override
59 public Composite initUi(Composite parent) {
60 Session adminSession = NodeUtils.openDataAdminSession(getRepository(), null);
61 parent.setLayout(new GridLayout());
62 Node indexNode;
63 try {
64 indexNode = JcrUtils.getOrAdd(Jcr.getRootNode(adminSession), DocumentPage.WWW, DocBookTypes.ARTICLE);
65 adminSession.save();
66 } catch (RepositoryException e) {
67 throw new IllegalStateException(e);
68 }
69
70 Control page;
71 if (landingPage != null) {
72 page = landingPage.createUiPart(parent, indexNode);
73 } else {
74 page = new DocumentPage().createUiPart(parent, indexNode);
75 }
76 return (Composite) page;
77 }
78
79 @Override
80 public void refreshUi(Composite parent, String state) {
81 parent.setLayout(new GridLayout());
82 new DocumentPage().createUiPart(parent, null);
83 }
84
85 @Override
86 public void setState(Composite parent, String state) {
87
88 }
89
90 @Override
91 protected String getThemeId(String uiName) {
92 return defaultThemeId;
93 }
94
95 public void setLandingPage(CmsUiProvider landingPage) {
96 this.landingPage = landingPage;
97 }
98
99 }