Introduce tabbed area.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / CmsView.java
index ce0acb89fd2b68c0c2c249b6f9df362310d0483c..9f5e4f7973f9e35f29b37dca5199ca9b88814e2d 100644 (file)
@@ -1,5 +1,8 @@
 package org.argeo.cms.ui;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import javax.security.auth.login.LoginContext;
 
 import org.eclipse.swt.widgets.Composite;
@@ -7,7 +10,10 @@ import org.eclipse.swt.widgets.Shell;
 
 /** Provides interaction with the CMS system. */
 public interface CmsView {
-       //String KEY = "org.argeo.cms.ui.view";
+       final static String CMS_VIEW_UID_PROPERTY = "argeo.cms.view.uid";
+       // String KEY = "org.argeo.cms.ui.view";
+
+       String getUid();
 
        UxContext getUxContext();
 
@@ -28,6 +34,24 @@ public interface CmsView {
 
        boolean isAnonymous();
 
+       /**
+        * Send an event to this topic. Does noothing 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) {
+
+       }
+
+       /**
+        * Convenience methods for when {@link #sendEvent(String, Map)} only requires
+        * one single parameter.
+        */
+       default void sendEvent(String topic, String param, Object value) {
+               Map<String, Object> properties = new HashMap<>();
+               properties.put(param, value);
+               sendEvent(topic, properties);
+       }
+
        static CmsView getCmsView(Composite parent) {
                // find parent shell
                Shell topShell = parent.getShell();
@@ -44,8 +68,7 @@ public interface CmsView {
                // check if already set
                if (topShell.getData(CmsView.class.getName()) != null) {
                        CmsView registeredView = (CmsView) topShell.getData(CmsView.class.getName());
-                       throw new IllegalArgumentException(
-                                       "Cms view " + registeredView + " already registered in this shell");
+                       throw new IllegalArgumentException("Cms view " + registeredView + " already registered in this shell");
                }
                shell.setData(CmsView.class.getName(), view);
        }