package org.argeo.cms.web; import static org.argeo.cms.ui.util.BundleCmsTheme.CMS_THEME_BUNDLE_PROPERTY; import java.util.HashMap; import java.util.Map; import org.argeo.cms.ui.util.BundleCmsTheme; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.application.Application; import org.eclipse.rap.rwt.application.ApplicationConfiguration; import org.eclipse.rap.rwt.client.WebClient; import org.osgi.framework.BundleContext; /** Lightweight web app using only RWT and not the whole Eclipse platform. */ public class MinimalWebApp implements ApplicationConfiguration { private BundleCmsTheme theme; public void init(BundleContext bundleContext, Map properties) { if (properties.containsKey(CMS_THEME_BUNDLE_PROPERTY)) { String cmsThemeBundle = properties.get(CMS_THEME_BUNDLE_PROPERTY).toString(); theme = new BundleCmsTheme(bundleContext, cmsThemeBundle); } } public void destroy() { } /** To be overridden. Does nothing by default. */ protected void addEntryPoints(Application application, Map properties) { } @Override public void configure(Application application) { if (theme != null) WebThemeUtils.apply(application, theme); Map properties = new HashMap<>(); if (theme != null) { properties.put(WebClient.THEME_ID, theme.getThemeId()); properties.put(WebClient.HEAD_HTML, theme.getHtmlHeaders()); } else { properties.put(WebClient.THEME_ID, RWT.DEFAULT_THEME_ID); } addEntryPoints(application, properties); } public void setTheme(BundleCmsTheme theme) { this.theme = theme; } }