Introduce CMS App concept.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / util / CmsUiUtils.java
index 316e7859f92d796104e2b58665254cf370e870fe..3669db3fdb35ad9061f7ef993a5cf3415dae2fb5 100644 (file)
@@ -72,7 +72,7 @@ public class CmsUiUtils implements CmsConstants {
 
        /** A path in the node repository */
        public static String getDataPath(Node node) throws RepositoryException {
-               return getDataPath(NodeConstants.NODE, node);
+               return getDataPath(NodeConstants.EGO_REPOSITORY, node);
        }
 
        public static String getDataPath(String cn, Node node) throws RepositoryException {
@@ -102,18 +102,26 @@ public class CmsUiUtils implements CmsConstants {
        //
        // GRID DATA
        //
-       public static GridData fillWidth() {
-               return grabWidth(SWT.FILL, SWT.FILL);
-       }
-
        public static GridData fillAll() {
                return new GridData(SWT.FILL, SWT.FILL, true, true);
        }
 
+       public static GridData fillWidth() {
+               return grabWidth(SWT.FILL, SWT.FILL);
+       }
+
        public static GridData grabWidth(int horizontalAlignment, int verticalAlignment) {
                return new GridData(horizontalAlignment, horizontalAlignment, true, false);
        }
 
+       public static GridData fillHeight() {
+               return grabHeight(SWT.FILL, SWT.FILL);
+       }
+
+       public static GridData grabHeight(int horizontalAlignment, int verticalAlignment) {
+               return new GridData(horizontalAlignment, horizontalAlignment, false, true);
+       }
+
        public static RowData rowData16px() {
                return new RowData(16, 16);
        }
@@ -124,6 +132,12 @@ public class CmsUiUtils implements CmsConstants {
                return widget;
        }
 
+       /** Style widget */
+       public static <T extends Widget> T style(T widget, CmsStyle style) {
+               widget.setData(CmsConstants.STYLE, style.toStyleClass());
+               return widget;
+       }
+
        /** Enable markups on widget */
        public static <T extends Widget> T markup(T widget) {
                widget.setData(CmsConstants.MARKUP, true);
@@ -133,21 +147,39 @@ public class CmsUiUtils implements CmsConstants {
        /**
         * Apply markup and set text on {@link Label}, {@link Button}, {@link Text}.
         * 
+        * @param widget the widget to style and to use in order to display text
+        * @param txt    the object to display via its <code>toString()</code> method.
+        *               This argument should not be null, but if it is null and
+        *               assertions are disabled "<null>" is displayed instead; if
+        *               assertions are enabled the call will fail.
+        * 
         * @see #markup(Widget)
         */
-       public static <T extends Widget> T text(T widget, String txt) {
+       public static <T extends Widget> T text(T widget, Object txt) {
+               assert txt != null;
+               String str = txt != null ? txt.toString() : "<null>";
                markup(widget);
                if (widget instanceof Label)
-                       ((Label) widget).setText(txt);
+                       ((Label) widget).setText(str);
                else if (widget instanceof Button)
-                       ((Button) widget).setText(txt);
+                       ((Button) widget).setText(str);
                else if (widget instanceof Text)
-                       ((Text) widget).setText(txt);
+                       ((Text) widget).setText(str);
                else
                        throw new IllegalArgumentException("Unsupported widget type " + widget.getClass());
                return widget;
        }
 
+       /** A {@link Label} with markup activated. */
+       public static Label lbl(Composite parent, Object txt) {
+               return text(new Label(parent, SWT.NONE), txt);
+       }
+
+       /** A read-only {@link Text} whose content can be copy/pasted. */
+       public static Text txt(Composite parent, Object txt) {
+               return text(new Text(parent, SWT.NONE), txt);
+       }
+
        public static void setItemHeight(Table table, int height) {
                table.setData(CmsConstants.ITEM_HEIGHT, height);
        }