X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=publishing%2Forg.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fpublishing%2Fui%2FPublishingApp.java;fp=publishing%2Forg.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fpublishing%2Fui%2FPublishingApp.java;h=00deae94af9ddc38ce3e044c5d48a5af987ad3a3;hb=147ada7da5bf6292569f17a53a77fca04c97f707;hp=0000000000000000000000000000000000000000;hpb=5431f941fd6161e89f495a330c2ecddaf4f6bfb1;p=gpl%2Fargeo-suite.git diff --git a/publishing/org.argeo.publishing.ui/src/org/argeo/publishing/ui/PublishingApp.java b/publishing/org.argeo.publishing.ui/src/org/argeo/publishing/ui/PublishingApp.java new file mode 100644 index 0000000..00deae9 --- /dev/null +++ b/publishing/org.argeo.publishing.ui/src/org/argeo/publishing/ui/PublishingApp.java @@ -0,0 +1,85 @@ +package org.argeo.publishing.ui; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.api.NodeUtils; +import org.argeo.cms.ui.AbstractCmsApp; +import org.argeo.cms.ui.CmsApp; +import org.argeo.docbook.ui.DocBookTypes; +import org.argeo.docbook.ui.DocumentPage; +import org.argeo.jcr.Jcr; +import org.argeo.jcr.JcrUtils; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.osgi.framework.Constants; + +/** + * A {@link CmsApp} dedicated to publishing, typically a public or internal web + * site. + */ +public class PublishingApp extends AbstractCmsApp { + private final static Log log = LogFactory.getLog(PublishingApp.class); + + private String pid; + private String defaultThemeId; + + public void init(Map properties) { + defaultThemeId = properties.get("defaultThemeId"); + pid = properties.get(Constants.SERVICE_PID); + if (log.isDebugEnabled()) + log.info("Publishing App " + pid + " started"); + } + + public void destroy(Map properties) { + if (log.isDebugEnabled()) + log.info("Publishing App " + pid + " stopped"); + + } + + @Override + public Set getUiNames() { + Set uiNames = new HashSet<>(); + uiNames.add(""); + return uiNames; + } + + @Override + public Composite initUi(Composite parent) { + Session adminSession = NodeUtils.openDataAdminSession(getRepository(), null); + parent.setLayout(new GridLayout()); + Node indexNode; + try { + indexNode = JcrUtils.getOrAdd(Jcr.getRootNode(adminSession), DocumentPage.WWW, DocBookTypes.ARTICLE); + adminSession.save(); + } catch (RepositoryException e) { + throw new IllegalStateException(e); + } + Control page = new DocumentPage().createUiPart(parent, indexNode); + return (Composite) page; + } + + @Override + public void refreshUi(Composite parent, String state) { + parent.setLayout(new GridLayout()); + new DocumentPage().createUiPart(parent, null); + } + + @Override + public void setState(Composite parent, String state) { + + } + + @Override + protected String getThemeId(String uiName) { + return defaultThemeId; + } +}