1 package org
.argeo
.app
.ui
.publish
;
3 import static org
.argeo
.app
.ui
.SuiteApp
.DEFAULT_THEME_ID_PROPERTY
;
4 import static org
.argeo
.app
.ui
.SuiteApp
.DEFAULT_UI_NAME_PROPERTY
;
6 import java
.util
.HashSet
;
10 import javax
.jcr
.Node
;
11 import javax
.jcr
.Repository
;
12 import javax
.jcr
.Session
;
14 import org
.argeo
.api
.cms
.CmsApp
;
15 import org
.argeo
.app
.ui
.SuiteApp
;
16 import org
.argeo
.api
.cms
.CmsLog
;
17 import org
.argeo
.api
.cms
.ux
.CmsUi
;
18 import org
.argeo
.cms
.AbstractCmsApp
;
19 import org
.argeo
.cms
.ui
.CmsUiProvider
;
20 import org
.argeo
.jcr
.Jcr
;
21 import org
.argeo
.util
.LangUtils
;
22 import org
.eclipse
.swt
.layout
.GridLayout
;
23 import org
.eclipse
.swt
.widgets
.Composite
;
24 import org
.eclipse
.swt
.widgets
.Control
;
25 import org
.osgi
.framework
.Constants
;
26 import org
.osgi
.service
.event
.Event
;
27 import org
.osgi
.service
.event
.EventHandler
;
30 * A {@link CmsApp} dedicated to publishing, typically a public or internal web
33 public class PublishingApp
extends AbstractCmsApp
implements EventHandler
{
34 private final static CmsLog log
= CmsLog
.getLog(PublishingApp
.class);
37 private String defaultThemeId
;
38 private String defaultUiName
= "";
40 private String publicBasePath
= null;
42 private CmsUiProvider landingPage
;
43 private CmsUiProvider defaultProvider
= new DocumentUiProvider();
45 private Repository repository
;
47 public void init(Map
<String
, String
> properties
) {
48 if (properties
.containsKey(DEFAULT_UI_NAME_PROPERTY
))
49 defaultUiName
= LangUtils
.get(properties
, DEFAULT_UI_NAME_PROPERTY
);
50 if (properties
.containsKey(DEFAULT_THEME_ID_PROPERTY
))
51 defaultThemeId
= LangUtils
.get(properties
, DEFAULT_THEME_ID_PROPERTY
);
52 publicBasePath
= LangUtils
.get(properties
, SuiteApp
.PUBLIC_BASE_PATH_PROPERTY
);
53 pid
= properties
.get(Constants
.SERVICE_PID
);
55 if (log
.isDebugEnabled())
56 log
.info("Publishing App " + pid
+ " started");
59 public void destroy(Map
<String
, String
> properties
) {
60 if (log
.isDebugEnabled())
61 log
.info("Publishing App " + pid
+ " stopped");
66 public Set
<String
> getUiNames() {
67 Set
<String
> uiNames
= new HashSet
<>();
68 uiNames
.add(defaultUiName
);
73 public CmsUi
initUi(Object uiParent
) {
74 Composite parent
= (Composite
) uiParent
;
75 // Session adminSession = NodeUtils.openDataAdminSession(getRepository(), null);
76 Session session
= Jcr
.login(getRepository(), null);
77 parent
.setLayout(new GridLayout());
78 Node indexNode
= Jcr
.getNode(session
, publicBasePath
+ "/index");
80 // indexNode = JcrUtils.getOrAdd(Jcr.getRootNode(adminSession), DocumentPage.WWW, DbkType.article.get());
81 // adminSession.save();
82 // } catch (RepositoryException e) {
83 // throw new IllegalStateException(e);
87 if (landingPage
!= null) {
88 page
= landingPage
.createUiPart(parent
, indexNode
);
90 page
= defaultProvider
.createUiPart(parent
, indexNode
);
96 public void refreshUi(CmsUi cmsUi
, String state
) {
97 Composite parent
= (Composite
) cmsUi
;
98 parent
.setLayout(new GridLayout());
99 if (landingPage
!= null)
100 landingPage
.createUiPart(parent
, (Node
) null);
102 defaultProvider
.createUiPart(parent
, (Node
) null);
106 public void setState(CmsUi cmsUi
, String state
) {
111 protected String
getThemeId(String uiName
) {
112 return defaultThemeId
;
115 public void setLandingPage(CmsUiProvider landingPage
) {
116 this.landingPage
= landingPage
;
120 public void handleEvent(Event event
) {
121 // TODO listen to some events
125 public Repository
getRepository() {
129 public void setRepository(Repository repository
) {
130 this.repository
= repository
;