Improve Argeo Suite theming.
[gpl/argeo-suite.git] / org.argeo.suite.ui / src / org / argeo / suite / ui / ArgeoSuiteApp.java
index 7aebdc20fde6a1df5918009f31acb2610746b6a1..b669d45aa7078563f56065741428f986466381b4 100644 (file)
@@ -9,24 +9,39 @@ import javax.jcr.Node;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.argeo.cms.ui.CmsApp;
+import org.argeo.cms.ui.AbstractCmsApp;
+import org.argeo.cms.ui.CmsTheme;
 import org.argeo.cms.ui.CmsUiProvider;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.osgi.framework.Constants;
 
-public class ArgeoSuiteApp implements CmsApp {
+/** The Argeo Suite App. */
+public class ArgeoSuiteApp extends AbstractCmsApp {
        private final static Log log = LogFactory.getLog(ArgeoSuiteApp.class);
+
        public final static String PID_PREFIX = "argeo.work.";
        public final static String HEADER_PID = PID_PREFIX + "header";
        public final static String LEAD_PANE_PID = PID_PREFIX + "leadPane";
 
        private final static String DEFAULT_UI_NAME = "work";
+       private final static String DEFAULT_THEME_ID = "org.argeo.suite.theme.default";
 
        private ArgeoSuiteUi argeoSuiteUi;
 
        private Map<String, CmsUiProvider> uiProviders = new TreeMap<>();
 
+       public void init(Map<String, String> properties) {
+               if (log.isDebugEnabled())
+                       log.info("Argeo Suite App started");
+       }
+
+       public void destroy(Map<String, String> properties) {
+               if (log.isDebugEnabled())
+                       log.info("Argeo Suite App stopped");
+
+       }
+
        @Override
        public Set<String> getUiNames() {
                HashSet<String> uiNames = new HashSet<>();
@@ -37,12 +52,21 @@ public class ArgeoSuiteApp implements CmsApp {
        @Override
        public void initUi(String uiName, Composite parent) {
                if (DEFAULT_UI_NAME.equals(uiName)) {
+                       CmsTheme theme = getTheme(uiName);
+                       if (theme != null)
+                               CmsTheme.registerCmsTheme(parent.getShell(), theme);
                        argeoSuiteUi = new ArgeoSuiteUi(parent, SWT.NONE);
                        refresh(uiName);
                }
 
        }
 
+       @Override
+       public String getThemeId(String uiName) {
+               // TODO make it configurable
+               return DEFAULT_THEME_ID;
+       }
+
        public void refresh(String uiName) {
                if (DEFAULT_UI_NAME.equals(uiName)) {
                        Node context = null;
@@ -57,6 +81,8 @@ public class ArgeoSuiteApp implements CmsApp {
                        log.error("No service pid found for " + uiProvider.getClass() + ", " + properties);
                } else {
                        uiProviders.put(servicePid, uiProvider);
+                       if (log.isDebugEnabled())
+                               log.debug("Added UI provider " + servicePid + " to CMS app.");
                }
 
        }