X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fweb%2FCmsWebEntryPoint.java;fp=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fweb%2FCmsWebEntryPoint.java;h=186c988b1d1cacff17718800b32bad617ee20200;hb=d289fa62f9dadd0a5bd49ab5e3d499e87152525d;hp=351f771c141285e896bc45ec5f5cd385949d9f1f;hpb=dffc0df8766937ad0863d389883cba2ebac835d6;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/web/CmsWebEntryPoint.java b/org.argeo.cms.ui/src/org/argeo/cms/web/CmsWebEntryPoint.java index 351f771c1..186c988b1 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/web/CmsWebEntryPoint.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/web/CmsWebEntryPoint.java @@ -3,6 +3,8 @@ package org.argeo.cms.web; import static org.eclipse.rap.rwt.internal.service.ContextProvider.getApplicationContext; import java.security.PrivilegedAction; +import java.util.Map; +import java.util.UUID; import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; @@ -19,6 +21,8 @@ import org.argeo.cms.ui.CmsView; import org.argeo.cms.ui.UxContext; import org.argeo.cms.ui.dialogs.CmsFeedback; import org.argeo.cms.ui.util.CmsUiUtils; +import org.argeo.cms.ui.util.DefaultImageManager; +import org.argeo.cms.ui.util.SimpleUxContext; import org.argeo.eclipse.ui.specific.UiContext; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.application.EntryPoint; @@ -30,21 +34,29 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; +import org.osgi.service.event.Event; +import org.osgi.service.event.EventAdmin; /** The {@link CmsView} for a {@link CmsWebApp}. */ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationListener { private static final long serialVersionUID = 7733510691684570402L; private final static Log log = LogFactory.getLog(CmsWebEntryPoint.class); + private EventAdmin eventAdmin; + private final CmsWebApp cmsWebApp; private final String uiName; private LoginContext loginContext; private String state; private Throwable exception; + private UxContext uxContext; + private CmsImageManager imageManager; private Composite ui; + private String uid; + // Client services // private final JavaScriptExecutor jsExecutor; private final BrowserNavigation browserNavigation; @@ -57,6 +69,7 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL assert uiName != null; this.cmsWebApp = cmsWebApp; this.uiName = uiName; + uid = UUID.randomUUID().toString(); // Initial login LoginContext lc; @@ -85,6 +98,8 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL @Override public Void run() { try { + uxContext = new SimpleUxContext(); + imageManager = new DefaultImageManager(); ui = cmsWebApp.getCmsApp().initUi(parent); ui.setData(CmsApp.UI_NAME_PROPERTY, uiName); ui.setLayoutData(CmsUiUtils.fillAll()); @@ -168,8 +183,12 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL @Override public UxContext getUxContext() { - // TODO Auto-generated method stub - return null; + return uxContext; + } + + @Override + public String getUid() { + return uid; } @Override @@ -183,8 +202,7 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL @Override public CmsImageManager getImageManager() { - // TODO Auto-generated method stub - return null; + return imageManager; } @Override @@ -193,6 +211,15 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL doRefresh(); } + @Override + public void sendEvent(String topic, Map properties) { + if (properties.containsKey(CMS_VIEW_UID_PROPERTY) && !properties.get(CMS_VIEW_UID_PROPERTY).equals(uid)) + throw new IllegalArgumentException("Property " + CMS_VIEW_UID_PROPERTY + " is set to another CMS view uid (" + + properties.get(CMS_VIEW_UID_PROPERTY) + ") then " + uid); + properties.put(CMS_VIEW_UID_PROPERTY, uid); + eventAdmin.sendEvent(new Event(topic, properties)); + } + /* * EntryPoint IMPLEMENTATION */ @@ -234,4 +261,8 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL return shell; } + public void setEventAdmin(EventAdmin eventAdmin) { + this.eventAdmin = eventAdmin; + } + }