X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fweb%2FCmsWebEntryPoint.java;h=4bdc5a0aa4fd554c2581767ba64d6658c9925c06;hb=b7683883512d924a039a43c2e1102290aa49f64d;hp=1ad09d1022ba0cac6020782245de1dcb2e45b66e;hpb=8347fed7b1f7f7ca1a7f66945e2f1876e597f2ab;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java b/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java index 1ad09d102..4bdc5a0aa 100644 --- a/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java +++ b/org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java @@ -15,18 +15,20 @@ import javax.security.auth.login.LoginException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.api.NodeConstants; +import org.argeo.api.cms.CmsApp; +import org.argeo.api.cms.CmsImageManager; +import org.argeo.api.cms.CmsSession; +import org.argeo.api.cms.CmsUi; +import org.argeo.api.cms.CmsView; +import org.argeo.api.cms.UxContext; import org.argeo.cms.LocaleUtils; -import org.argeo.cms.auth.CmsSession; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.auth.HttpRequestCallbackHandler; -import org.argeo.cms.ui.CmsApp; -import org.argeo.cms.ui.CmsImageManager; -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.osgi.CmsOsgiUtils; +import org.argeo.cms.swt.CmsSwtUtils; +import org.argeo.cms.swt.SimpleSwtUxContext; +import org.argeo.cms.swt.dialogs.CmsFeedback; 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; @@ -59,7 +61,8 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL private UxContext uxContext; private CmsImageManager imageManager; - private Composite ui; + private Display display; + private CmsUi ui; private String uid; @@ -104,7 +107,7 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL @Override public Void run() { try { - uxContext = new SimpleUxContext(); + uxContext = new SimpleSwtUxContext(); imageManager = new DefaultImageManager(); CmsSession cmsSession = getCmsSession(); if (cmsSession != null) { @@ -114,9 +117,14 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL Locale rwtLocale = RWT.getUISession().getLocale(); LocaleUtils.setThreadLocale(rwtLocale); } + parent.setData(CmsApp.UI_NAME_PROPERTY, uiName); + display = parent.getDisplay(); ui = cmsWebApp.getCmsApp().initUi(parent); - ui.setData(CmsApp.UI_NAME_PROPERTY, uiName); - ui.setLayoutData(CmsUiUtils.fillAll()); + if (ui instanceof Composite) + ((Composite) ui).setLayoutData(CmsSwtUtils.fillAll()); + // we need ui to be set before refresh so that CmsView can store UI context data + // in it. + cmsWebApp.getCmsApp().refreshUi(ui, null); } catch (Exception e) { throw new IllegalStateException("Cannot create entrypoint contents", e); } @@ -175,7 +183,7 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL if (swtError.code == SWT.ERROR_FUNCTION_DISPOSED) return; } - ui.getDisplay().syncExec(() -> { + display.syncExec(() -> { // CmsFeedback.show("Unexpected exception in CMS", e); exception = e; // log.error("Unexpected exception in CMS", e); @@ -227,7 +235,6 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL browserNavigation.pushState(state, title); } - @Override public CmsImageManager getImageManager() { return imageManager; } @@ -256,10 +263,28 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL @Override public CmsSession getCmsSession() { - CmsSession cmsSession = CmsSession.getCmsSession(cmsWebApp.getBundleContext(), getSubject()); + CmsSession cmsSession = CmsOsgiUtils.getCmsSession(cmsWebApp.getBundleContext(), getSubject()); return cmsSession; } + @Override + public Object getData(String key) { + if (ui != null) { + return ui.getData(key); + } else { + throw new IllegalStateException("UI is not initialized"); + } + } + + @Override + public void setData(String key, Object value) { + if (ui != null) { + ui.setData(key, value); + } else { + throw new IllegalStateException("UI is not initialized"); + } + } + /* * EntryPoint IMPLEMENTATION */ @@ -268,8 +293,8 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL public int createUI() { Display display = new Display(); Shell shell = createShell(display); - shell.setLayout(CmsUiUtils.noSpaceGridLayout()); - CmsView.registerCmsView(shell, this); + shell.setLayout(CmsSwtUtils.noSpaceGridLayout()); + CmsSwtUtils.registerCmsView(shell, this); createContents(shell); shell.layout(); // if (shell.getMaximized()) {