1 package org
.argeo
.publishing
.ui
;
3 import java
.util
.HashSet
;
8 import javax
.jcr
.RepositoryException
;
9 import javax
.jcr
.Session
;
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
;
27 * A {@link CmsApp} dedicated to publishing, typically a public or internal web
30 public class PublishingApp
extends AbstractCmsApp
{
31 private final static Log log
= LogFactory
.getLog(PublishingApp
.class);
34 private String defaultThemeId
;
36 private CmsUiProvider landingPage
;
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");
45 public void destroy(Map
<String
, String
> properties
) {
46 if (log
.isDebugEnabled())
47 log
.info("Publishing App " + pid
+ " stopped");
52 public Set
<String
> getUiNames() {
53 Set
<String
> uiNames
= new HashSet
<>();
59 public Composite
initUi(Composite parent
) {
60 Session adminSession
= NodeUtils
.openDataAdminSession(getRepository(), null);
61 parent
.setLayout(new GridLayout());
64 indexNode
= JcrUtils
.getOrAdd(Jcr
.getRootNode(adminSession
), DocumentPage
.WWW
, DocBookTypes
.ARTICLE
);
66 } catch (RepositoryException e
) {
67 throw new IllegalStateException(e
);
71 if (landingPage
!= null) {
72 page
= landingPage
.createUiPart(parent
, indexNode
);
74 page
= new DocumentPage().createUiPart(parent
, indexNode
);
76 return (Composite
) page
;
80 public void refreshUi(Composite parent
, String state
) {
81 parent
.setLayout(new GridLayout());
82 new DocumentPage().createUiPart(parent
, null);
86 public void setState(Composite parent
, String state
) {
91 protected String
getThemeId(String uiName
) {
92 return defaultThemeId
;
95 public void setLandingPage(CmsUiProvider landingPage
) {
96 this.landingPage
= landingPage
;