Add text() utility to CMS utils.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / util / CmsUtils.java
index 415008966dfe927654daf2e0885f5b93974502fc..f4004e493123c75426e3a82b10289ef7491dc516 100644 (file)
@@ -1,5 +1,6 @@
 package org.argeo.cms.util;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -8,7 +9,6 @@ import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.commons.io.IOUtils;
 import org.argeo.cms.CmsException;
 import org.argeo.cms.ui.CmsConstants;
 import org.argeo.cms.ui.CmsView;
@@ -25,10 +25,13 @@ import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowData;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.Widget;
 
 /** Static utilities for the CMS framework. */
@@ -84,6 +87,10 @@ public class CmsUtils implements CmsConstants {
                return noSpaceGridLayout(new GridLayout());
        }
 
+       public static GridLayout noSpaceGridLayout(int columns) {
+               return noSpaceGridLayout(new GridLayout(columns, false));
+       }
+
        public static GridLayout noSpaceGridLayout(GridLayout layout) {
                layout.horizontalSpacing = 0;
                layout.verticalSpacing = 0;
@@ -112,13 +119,33 @@ public class CmsUtils implements CmsConstants {
        }
 
        /** Style widget */
-       public static void style(Widget widget, String style) {
+       public static <T extends Widget> T style(T widget, String style) {
                widget.setData(CmsConstants.STYLE, style);
+               return widget;
        }
 
        /** Enable markups on widget */
-       public static void markup(Widget widget) {
+       public static <T extends Widget> T markup(T widget) {
                widget.setData(CmsConstants.MARKUP, true);
+               return widget;
+       }
+
+       /**
+        * Apply markup and set text on {@link Label}, {@link Button}, {@link Text}.
+        * 
+        * @see #markup(Widget)
+        */
+       public static <T extends Widget> T text(T widget, String txt) {
+               markup(widget);
+               if (widget instanceof Label)
+                       ((Label) widget).setText(txt);
+               else if (widget instanceof Button)
+                       ((Button) widget).setText(txt);
+               else if (widget instanceof Text)
+                       ((Text) widget).setText(txt);
+               else
+                       throw new IllegalArgumentException("Unsupported widget type " + widget.getClass());
+               return widget;
        }
 
        public static void setItemHeight(Table table, int height) {
@@ -194,10 +221,15 @@ public class CmsUtils implements CmsConstants {
                        Image image = new Image(Display.getCurrent(), scaled);
                        return image;
                } finally {
-                       IOUtils.closeQuietly(in);
+                       try {
+                               in.close();
+                       } catch (IOException e) {
+                               // silent
+                       }
                }
        }
 
+       /** Lorem ipsum text to be used during development. */
        public final static String LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
                        + " Etiam eleifend hendrerit sem, ac ultricies massa ornare ac."
                        + " Cras aliquam sodales risus, vitae varius lacus molestie quis."
@@ -210,6 +242,7 @@ public class CmsUtils implements CmsConstants {
                        + " Duis vitae turpis eros. Sed tincidunt lacinia rutrum."
                        + " Aliquam velit velit, rutrum ut augue sed, condimentum lacinia augue.";
 
+       /** Singleton. */
        private CmsUtils() {
        }
 }