Store UI context data in CMS View.
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 1 Feb 2021 16:15:25 +0000 (17:15 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 1 Feb 2021 16:15:25 +0000 (17:15 +0100)
org.argeo.cms.ui.rap/src/org/argeo/cms/web/CmsWebEntryPoint.java
org.argeo.cms.ui/src/org/argeo/cms/ui/CmsView.java

index 1ad09d1022ba0cac6020782245de1dcb2e45b66e..288069bd9de464400c934da1aab14d68a51bd760 100644 (file)
@@ -117,6 +117,9 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL
                                        ui = cmsWebApp.getCmsApp().initUi(parent);
                                        ui.setData(CmsApp.UI_NAME_PROPERTY, uiName);
                                        ui.setLayoutData(CmsUiUtils.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);
                                }
@@ -260,6 +263,24 @@ public class CmsWebEntryPoint implements EntryPoint, CmsView, BrowserNavigationL
                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
         */
index e18d4b4330d3098a6c8178fa71f1cda29382497b..44e2837ec177e5a0cead77028865df32e5b946c4 100644 (file)
@@ -37,7 +37,7 @@ public interface CmsView {
        boolean isAnonymous();
 
        /**
-        * Send an event to this topic. Does noothing by default., but if implemented it
+        * Send an event to this topic. Does nothing by default., but if implemented it
         * MUST set the {@link #CMS_VIEW_UID_PROPERTY} in the properties.
         */
        default void sendEvent(String topic, Map<String, Object> properties) {
@@ -81,6 +81,14 @@ public interface CmsView {
                throw new UnsupportedOperationException();
        }
 
+       default Object getData(String key) {
+               throw new UnsupportedOperationException();
+       }
+
+       default void setData(String key, Object value) {
+               throw new UnsupportedOperationException();
+       }
+
        static CmsView getCmsView(Control parent) {
                // find parent shell
                Shell topShell = parent.getShell();