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;
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;
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;
assert uiName != null;
this.cmsWebApp = cmsWebApp;
this.uiName = uiName;
+ uid = UUID.randomUUID().toString();
// Initial login
LoginContext lc;
@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());
@Override
public UxContext getUxContext() {
- // TODO Auto-generated method stub
- return null;
+ return uxContext;
+ }
+
+ @Override
+ public String getUid() {
+ return uid;
}
@Override
@Override
public CmsImageManager getImageManager() {
- // TODO Auto-generated method stub
- return null;
+ return imageManager;
}
@Override
doRefresh();
}
+ @Override
+ public void sendEvent(String topic, Map<String, Object> 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
*/
return shell;
}
+ public void setEventAdmin(EventAdmin eventAdmin) {
+ this.eventAdmin = eventAdmin;
+ }
+
}