Simplify CMS app deployment.
[gpl/argeo-suite.git] / org.argeo.app.ui / src / org / argeo / app / ui / SuiteApp.java
index a8121ca353eb16af5c89d51121f362c8b97b3f16..f6770dbac1302d30915f1bdb04bd22a721273fe4 100644 (file)
@@ -70,10 +70,13 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler {
        private String adminLeadPanePid;
        private String loginScreenPid;
 
-       private String defaultLayerPid = "argeo.app.ui.dashboardLayer";
-
        private String defaultUiName = "app";
        private String adminUiName = "admin";
+
+       // FIXME such default names make refactoring more dangerous
+       @Deprecated
+       private String defaultLayerPid = "argeo.suite.ui.dashboardLayer";
+       @Deprecated
        private String defaultThemeId = "org.argeo.app.theme.default";
 
        private Map<String, RankedObject<CmsUiProvider>> uiProvidersByPid = Collections.synchronizedMap(new HashMap<>());
@@ -88,7 +91,6 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler {
 
        private Repository repository;
 
-
        public void init(Map<String, Object> properties) {
                if (log.isDebugEnabled())
                        log.info("Argeo Suite App started");
@@ -120,8 +122,9 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler {
 
        public void destroy(Map<String, Object> properties) {
                for (SuiteUi ui : managedUis.values())
-                       if (!ui.isDisposed())
-                               ui.dispose();
+                       if (!ui.isDisposed()) {
+                               ui.getDisplay().syncExec(() -> ui.dispose());
+                       }
                if (log.isDebugEnabled())
                        log.info("Argeo Suite App stopped");
 
@@ -137,8 +140,9 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler {
 
        @Override
        public CmsUi initUi(Object parent) {
-               Composite uiParent =(Composite) parent;
-               String uiName = uiParent.getData(UI_NAME_PROPERTY) != null ? uiParent.getData(UI_NAME_PROPERTY).toString() : null;
+               Composite uiParent = (Composite) parent;
+               String uiName = uiParent.getData(UI_NAME_PROPERTY) != null ? uiParent.getData(UI_NAME_PROPERTY).toString()
+                               : null;
                CmsView cmsView = CmsSwtUtils.getCmsView(uiParent);
                if (cmsView == null)
                        throw new IllegalStateException("No CMS view is registered.");
@@ -158,6 +162,9 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler {
 
        @Override
        public String getThemeId(String uiName) {
+               String themeId = System.getProperty("org.argeo.app.theme.default");
+               if (themeId != null)
+                       return themeId;
                return defaultThemeId;
        }
 
@@ -633,5 +640,4 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler {
                this.repository = repository;
        }
 
-       
 }