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;
-import org.argeo.cms.ui.CmsApp;
-import org.argeo.cms.ui.CmsAppListener;
-import org.argeo.cms.ui.CmsTheme;
-import org.argeo.cms.ui.CmsView;
+import org.argeo.api.cms.CmsApp;
+import org.argeo.api.cms.CmsAppListener;
+import org.argeo.api.cms.CmsTheme;
+import org.argeo.api.cms.CmsView;
+import org.argeo.cms.swt.CmsSwtUtils;
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;
private final static String CONTEXT_NAME = "contextName";
private String contextName;
+ private final static String FAVICON_PNG = "favicon.png";
+
public void init(BundleContext bundleContext, Map<String, String> properties) {
this.bundleContext = bundleContext;
contextName = properties.get(CONTEXT_NAME);
public void handleException(Throwable throwable) {
Display display = Display.getCurrent();
if (display != null && !display.isDisposed()) {
- CmsView cmsView = CmsView.getCmsView(display.getActiveShell());
+ CmsView cmsView = CmsSwtUtils.getCmsView(display.getActiveShell());
cmsView.exception(throwable);
} else {
log.error("Unexpected exception outside an UI thread", throwable);
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<String> imagePaths = theme.getImagesPaths();
+ if (imagePaths.contains(FAVICON_PNG)) {
+ properties.put(WebClient.FAVICON, FAVICON_PNG);
+ }
} else {
properties.put(WebClient.THEME_ID, RWT.DEFAULT_THEME_ID);
}