X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fweb%2FCmsWebApp.java;h=c1bd3ad9893c279b0cb9c4f6b715fc6c95916bb5;hb=03f646fd0d7e7ce393694c836c779bc67a4eef55;hp=dda02646d973763af7619482a3a94266ea03b4f9;hpb=f24f4802611d08a8ef4df79a2939eacc161e6e40;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebApp.java b/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebApp.java index dda02646d..c1bd3ad98 100644 --- a/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebApp.java +++ b/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebApp.java @@ -3,6 +3,7 @@ package org.argeo.cms.web; import java.util.Dictionary; import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -13,12 +14,13 @@ import org.argeo.cms.ui.CmsView; import org.argeo.util.LangUtils; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.application.Application; +import org.eclipse.rap.rwt.application.Application.OperationMode; import org.eclipse.rap.rwt.application.ApplicationConfiguration; import org.eclipse.rap.rwt.application.ExceptionHandler; -import org.eclipse.rap.rwt.application.Application.OperationMode; import org.eclipse.rap.rwt.client.WebClient; import org.eclipse.swt.widgets.Display; import org.osgi.framework.BundleContext; +import org.osgi.framework.Constants; import org.osgi.framework.ServiceRegistration; import org.osgi.service.event.EventAdmin; @@ -28,6 +30,7 @@ public class CmsWebApp implements ApplicationConfiguration, ExceptionHandler, Cm private BundleContext bundleContext; private CmsApp cmsApp; + private String cmsAppId; private EventAdmin eventAdmin; private ServiceRegistration rwtAppReg; @@ -35,16 +38,22 @@ public class CmsWebApp implements ApplicationConfiguration, ExceptionHandler, Cm private final static String CONTEXT_NAME = "contextName"; private String contextName; + private final static String FAVICON_PNG = "favicon.png"; + public void init(BundleContext bundleContext, Map properties) { this.bundleContext = bundleContext; contextName = properties.get(CONTEXT_NAME); - if (cmsApp != null) - themingUpdated(); + if (cmsApp != null) { + if (cmsApp.allThemesAvailable()) + publishWebApp(); + } } public void destroy(BundleContext bundleContext, Map properties) { - if (cmsApp != null) + if (cmsApp != null) { cmsApp.removeCmsAppListener(this); + cmsApp = null; + } } @Override @@ -84,6 +93,11 @@ public class CmsWebApp implements ApplicationConfiguration, ExceptionHandler, Cm if (theme != null) { properties.put(WebClient.THEME_ID, theme.getThemeId()); properties.put(WebClient.HEAD_HTML, theme.getHtmlHeaders()); + properties.put(WebClient.BODY_HTML, theme.getBodyHtml()); + Set imagePaths = theme.getImagesPaths(); + if (imagePaths.contains(FAVICON_PNG)) { + properties.put(WebClient.FAVICON, FAVICON_PNG); + } } else { properties.put(WebClient.THEME_ID, RWT.DEFAULT_THEME_ID); } @@ -110,10 +124,17 @@ public class CmsWebApp implements ApplicationConfiguration, ExceptionHandler, Cm public void setCmsApp(CmsApp cmsApp, Map properties) { this.cmsApp = cmsApp; + this.cmsAppId = properties.get(Constants.SERVICE_PID); this.cmsApp.addCmsAppListener(this); } public void unsetCmsApp(CmsApp cmsApp, Map properties) { + String cmsAppId = properties.get(Constants.SERVICE_PID); + if (!cmsAppId.equals(this.cmsAppId)) + return; + if (this.cmsApp != null) { + this.cmsApp.removeCmsAppListener(this); + } if (rwtAppReg != null) rwtAppReg.unregister(); this.cmsApp = null; @@ -121,6 +142,11 @@ public class CmsWebApp implements ApplicationConfiguration, ExceptionHandler, Cm @Override public void themingUpdated() { + if (cmsApp != null && cmsApp.allThemesAvailable()) + publishWebApp(); + } + + protected void publishWebApp() { Dictionary regProps = LangUtils.dict(CONTEXT_NAME, contextName); if (rwtAppReg != null) rwtAppReg.unregister();