]> source.dussan.org Git - vaadin-framework.git/commitdiff
#8019 Table's column alignment constants to enum.
authorJens Jansson <peppe@vaadin.com>
Fri, 20 Jan 2012 09:05:43 +0000 (11:05 +0200)
committerJens Jansson <peppe@vaadin.com>
Fri, 20 Jan 2012 09:05:43 +0000 (11:05 +0200)
src/com/vaadin/ui/Table.java
tests/server-side/com/vaadin/tests/server/component/table/TableColumnAlignments.java
tests/testbench/com/vaadin/tests/components/table/Tables.java

index ccc68e06b014c5668a0377261a93aa6d434827f5..bfd1bb4c5d123ff19e5a8baba8a520a2e06b3e48 100644 (file)
@@ -115,20 +115,66 @@ public class Table extends AbstractSelect implements Action.Container,
 
     protected static final int CELL_FIRSTCOL = 5;
 
+    public enum Align {
+        /**
+         * Left column alignment. <b>This is the default behaviour. </b>
+         */
+        LEFT("b"),
+
+        /**
+         * Center column alignment.
+         */
+        CENTER("c"),
+
+        /**
+         * Right column alignment.
+         */
+        RIGHT("e");
+
+        private String alignment;
+
+        private Align(String alignment) {
+            this.alignment = alignment;
+        }
+
+        @Override
+        public String toString() {
+            return alignment;
+        }
+
+        public Align convertStringToAlign(String string) {
+            if (string == null) {
+                return null;
+            }
+            if (string.equals("b")) {
+                return Align.LEFT;
+            } else if (string.equals("c")) {
+                return Align.CENTER;
+            } else if (string.equals("e")) {
+                return Align.RIGHT;
+            } else {
+                return null;
+            }
+        }
+    }
+
     /**
-     * Left column alignment. <b>This is the default behaviour. </b>
+     * @deprecated from 7.0, use {@link Align#LEFT} instead
      */
-    public static final String ALIGN_LEFT = "b";
+    @Deprecated
+    public static final Align ALIGN_LEFT = Align.LEFT;
 
     /**
-     * Center column alignment.
+     * @deprecated from 7.0, use {@link Align#CENTER} instead
      */
-    public static final String ALIGN_CENTER = "c";
+    @Deprecated
+    public static final Align ALIGN_CENTER = Align.CENTER;
 
     /**
-     * Right column alignment.
+     * @deprecated from 7.0, use {@link Align#RIGHT} instead
      */
-    public static final String ALIGN_RIGHT = "e";
+    @Deprecated
+    public static final Align ALIGN_RIGHT = Align.RIGHT;
 
     public enum ColumnHeaderMode {
         /**
@@ -278,7 +324,7 @@ public class Table extends AbstractSelect implements Action.Container,
     /**
      * Holds alignments for visible columns (by propertyId).
      */
-    private HashMap<Object, String> columnAlignments = new HashMap<Object, String>();
+    private HashMap<Object, Align> columnAlignments = new HashMap<Object, Align>();
 
     /**
      * Holds column widths in pixels (Integer) or expand ratios (Float) for
@@ -536,7 +582,7 @@ public class Table extends AbstractSelect implements Action.Container,
                     final Object col = i.next();
                     if (!newVC.contains(col)) {
                         setColumnHeader(col, null);
-                        setColumnAlignment(col, null);
+                        setColumnAlignment(col, (Align) null);
                         setColumnIcon(col, null);
                     }
                 }
@@ -680,21 +726,21 @@ public class Table extends AbstractSelect implements Action.Container,
      * {@link #getVisibleColumns()}. The possible values for the alignments
      * include:
      * <ul>
-     * <li>{@link #ALIGN_LEFT}: Left alignment</li>
-     * <li>{@link #ALIGN_CENTER}: Centered</li>
-     * <li>{@link #ALIGN_RIGHT}: Right alignment</li>
+     * <li>{@link Align#LEFT}: Left alignment</li>
+     * <li>{@link Align#CENTER}: Centered</li>
+     * <li>{@link Align#RIGHT}: Right alignment</li>
      * </ul>
-     * The alignments default to {@link #ALIGN_LEFT}: any null values are
+     * The alignments default to {@link Align#LEFT}: any null values are
      * rendered as align lefts.
      * </p>
      * 
      * @return the Column alignments array.
      */
-    public String[] getColumnAlignments() {
+    public Align[] getColumnAlignments() {
         if (columnAlignments == null) {
             return null;
         }
-        final String[] alignments = new String[visibleColumns.size()];
+        final Align[] alignments = new Align[visibleColumns.size()];
         int i = 0;
         for (final Iterator<Object> it = visibleColumns.iterator(); it
                 .hasNext(); i++) {
@@ -708,39 +754,29 @@ public class Table extends AbstractSelect implements Action.Container,
      * Sets the column alignments.
      * 
      * <p>
-     * The items in the array must match the properties identified by
-     * {@link #getVisibleColumns()}. The possible values for the alignments
-     * include:
+     * The amount of items in the array must match the amount of properties
+     * identified by {@link #getVisibleColumns()}. The possible values for the
+     * alignments include:
      * <ul>
-     * <li>{@link #ALIGN_LEFT}: Left alignment</li>
-     * <li>{@link #ALIGN_CENTER}: Centered</li>
-     * <li>{@link #ALIGN_RIGHT}: Right alignment</li>
+     * <li>{@link Align#LEFT}: Left alignment</li>
+     * <li>{@link Align#CENTER}: Centered</li>
+     * <li>{@link Align#RIGHT}: Right alignment</li>
      * </ul>
-     * The alignments default to {@link #ALIGN_LEFT}
+     * The alignments default to {@link Align#LEFT}
      * </p>
      * 
      * @param columnAlignments
      *            the Column alignments array.
      */
-    public void setColumnAlignments(String[] columnAlignments) {
+    public void setColumnAlignments(Align... columnAlignments) {
 
         if (columnAlignments.length != visibleColumns.size()) {
             throw new IllegalArgumentException(
                     "The length of the alignments array must match the number of visible columns");
         }
 
-        // Checks all alignments
-        for (int i = 0; i < columnAlignments.length; i++) {
-            final String a = columnAlignments[i];
-            if (a != null && !a.equals(ALIGN_LEFT) && !a.equals(ALIGN_CENTER)
-                    && !a.equals(ALIGN_RIGHT)) {
-                throw new IllegalArgumentException("Column " + i
-                        + " aligment '" + a + "' is invalid");
-            }
-        }
-
         // Resets the alignments
-        final HashMap<Object, String> newCA = new HashMap<Object, String>();
+        final HashMap<Object, Align> newCA = new HashMap<Object, Align>();
         int i = 0;
         for (final Iterator<Object> it = visibleColumns.iterator(); it
                 .hasNext() && i < columnAlignments.length; i++) {
@@ -1097,9 +1133,9 @@ public class Table extends AbstractSelect implements Action.Container,
      *            the propertyID identifying the column.
      * @return the specified column's alignment if it as one; null otherwise.
      */
-    public String getColumnAlignment(Object propertyId) {
-        final String a = columnAlignments.get(propertyId);
-        return a == null ? ALIGN_LEFT : a;
+    public Align getColumnAlignment(Object propertyId) {
+        final Align a = columnAlignments.get(propertyId);
+        return a == null ? Align.LEFT : a;
     }
 
     /**
@@ -1107,8 +1143,8 @@ public class Table extends AbstractSelect implements Action.Container,
      * 
      * <p>
      * Throws IllegalArgumentException if the alignment is not one of the
-     * following: {@link #ALIGN_LEFT}, {@link #ALIGN_CENTER} or
-     * {@link #ALIGN_RIGHT}
+     * following: {@link Align#LEFT}, {@link Align#CENTER} or
+     * {@link Align#RIGHT}
      * </p>
      * 
      * @param propertyId
@@ -1116,17 +1152,8 @@ public class Table extends AbstractSelect implements Action.Container,
      * @param alignment
      *            the desired alignment.
      */
-    public void setColumnAlignment(Object propertyId, String alignment) {
-
-        // Checks for valid alignments
-        if (alignment != null && !alignment.equals(ALIGN_LEFT)
-                && !alignment.equals(ALIGN_CENTER)
-                && !alignment.equals(ALIGN_RIGHT)) {
-            throw new IllegalArgumentException("Column alignment '" + alignment
-                    + "' is not supported.");
-        }
-
-        if (alignment == null || alignment.equals(ALIGN_LEFT)) {
+    public void setColumnAlignment(Object propertyId, Align alignment) {
+        if (alignment == null || alignment == Align.LEFT) {
             columnAlignments.remove(propertyId);
         } else {
             columnAlignments.put(propertyId, alignment);
@@ -1432,8 +1459,9 @@ public class Table extends AbstractSelect implements Action.Container,
      *            the New value of property columnHeaderMode.
      */
     public void setColumnHeaderMode(ColumnHeaderMode columnHeaderMode) {
-        if(columnHeaderMode == null){
-            throw new IllegalArgumentException("Column header mode can not be null");
+        if (columnHeaderMode == null) {
+            throw new IllegalArgumentException(
+                    "Column header mode can not be null");
         }
         if (columnHeaderMode != this.columnHeaderMode) {
             this.columnHeaderMode = columnHeaderMode;
@@ -2984,8 +3012,9 @@ public class Table extends AbstractSelect implements Action.Container,
                         target.addAttribute("sortable", true);
                     }
                 }
-                if (!ALIGN_LEFT.equals(getColumnAlignment(colId))) {
-                    target.addAttribute("align", getColumnAlignment(colId));
+                if (!Align.LEFT.equals(getColumnAlignment(colId))) {
+                    target.addAttribute("align", getColumnAlignment(colId)
+                            .toString());
                 }
                 paintColumnWidth(target, colId);
                 target.endTag("column");
@@ -3746,7 +3775,7 @@ public class Table extends AbstractSelect implements Action.Container,
      */
     public boolean addContainerProperty(Object propertyId, Class<?> type,
             Object defaultValue, String columnHeader, Resource columnIcon,
-            String columnAlignment) throws UnsupportedOperationException {
+            Align columnAlignment) throws UnsupportedOperationException {
         if (!this.addContainerProperty(propertyId, type, defaultValue)) {
             return false;
         }
index 04f436f5c4823d5c6ae6f0542c7392aba7425bf2..299f9c79d4984b33590d7240af26e34fc27eedf3 100644 (file)
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertArrayEquals;
 import org.junit.Test;
 
 import com.vaadin.ui.Table;
+import com.vaadin.ui.Table.Align;
 
 public class TableColumnAlignments {
 
@@ -15,7 +16,7 @@ public class TableColumnAlignments {
                     properties, 10);
             Object[] expected = new Object[properties];
             for (int i = 0; i < properties; i++) {
-                expected[i] = Table.ALIGN_LEFT;
+                expected[i] = Align.LEFT;
             }
             org.junit.Assert.assertArrayEquals("getColumnAlignments", expected,
                     t.getColumnAlignments());
@@ -27,9 +28,8 @@ public class TableColumnAlignments {
         int properties = 5;
         Table t = TableGenerator
                 .createTableWithDefaultContainer(properties, 10);
-        String[] explicitAlignments = new String[] { Table.ALIGN_CENTER,
-                Table.ALIGN_LEFT, Table.ALIGN_RIGHT, Table.ALIGN_RIGHT,
-                Table.ALIGN_LEFT };
+        Align[] explicitAlignments = new Align[] { Align.CENTER, Align.LEFT,
+                Align.RIGHT, Align.RIGHT, Align.LEFT };
 
         t.setColumnAlignments(explicitAlignments);
 
@@ -40,28 +40,10 @@ public class TableColumnAlignments {
     @Test
     public void invalidColumnAlignmentStrings() {
         Table t = TableGenerator.createTableWithDefaultContainer(3, 7);
-        String[] defaultAlignments = new String[] { Table.ALIGN_LEFT,
-                Table.ALIGN_LEFT, Table.ALIGN_LEFT };
+        Align[] defaultAlignments = new Align[] { Align.LEFT, Align.LEFT,
+                Align.LEFT };
         try {
-            t.setColumnAlignments(new String[] { "a", "b", "c" });
-            junit.framework.Assert
-                    .fail("No exception thrown for invalid array length");
-        } catch (IllegalArgumentException e) {
-            // Ok, expected
-        }
-
-        assertArrayEquals("Invalid change affected alignments",
-                defaultAlignments, t.getColumnAlignments());
-
-    }
-
-    @Test
-    public void invalidColumnAlignmentString() {
-        Table t = TableGenerator.createTableWithDefaultContainer(3, 7);
-        String[] defaultAlignments = new String[] { Table.ALIGN_LEFT,
-                Table.ALIGN_LEFT, Table.ALIGN_LEFT };
-        try {
-            t.setColumnAlignment("Property 1", "a");
+            t.setColumnAlignments(new Align[] { Align.RIGHT, Align.RIGHT });
             junit.framework.Assert
                     .fail("No exception thrown for invalid array length");
         } catch (IllegalArgumentException e) {
@@ -76,10 +58,10 @@ public class TableColumnAlignments {
     @Test
     public void columnAlignmentForPropertyNotInContainer() {
         Table t = TableGenerator.createTableWithDefaultContainer(3, 7);
-        String[] defaultAlignments = new String[] { Table.ALIGN_LEFT,
-                Table.ALIGN_LEFT, Table.ALIGN_LEFT };
+        Align[] defaultAlignments = new Align[] { Align.LEFT, Align.LEFT,
+                Align.LEFT };
         try {
-            t.setColumnAlignment("Property 1200", Table.ALIGN_LEFT);
+            t.setColumnAlignment("Property 1200", Align.LEFT);
             // FIXME: Uncomment as there should be an exception (#6475)
             // junit.framework.Assert
             // .fail("No exception thrown for property not in container");
@@ -100,12 +82,11 @@ public class TableColumnAlignments {
     @Test
     public void invalidColumnAlignmentsLength() {
         Table t = TableGenerator.createTableWithDefaultContainer(7, 7);
-        String[] defaultAlignments = new String[] { Table.ALIGN_LEFT,
-                Table.ALIGN_LEFT, Table.ALIGN_LEFT, Table.ALIGN_LEFT,
-                Table.ALIGN_LEFT, Table.ALIGN_LEFT, Table.ALIGN_LEFT };
+        Align[] defaultAlignments = new Align[] { Align.LEFT, Align.LEFT,
+                Align.LEFT, Align.LEFT, Align.LEFT, Align.LEFT, Align.LEFT };
 
         try {
-            t.setColumnAlignments(new String[] { Table.ALIGN_LEFT });
+            t.setColumnAlignments(new Align[] { Align.LEFT });
             junit.framework.Assert
                     .fail("No exception thrown for invalid array length");
         } catch (IllegalArgumentException e) {
@@ -115,7 +96,7 @@ public class TableColumnAlignments {
                 defaultAlignments, t.getColumnAlignments());
 
         try {
-            t.setColumnAlignments(new String[] {});
+            t.setColumnAlignments(new Align[] {});
             junit.framework.Assert
                     .fail("No exception thrown for invalid array length");
         } catch (IllegalArgumentException e) {
@@ -125,10 +106,9 @@ public class TableColumnAlignments {
                 defaultAlignments, t.getColumnAlignments());
 
         try {
-            t.setColumnAlignments(new String[] { Table.ALIGN_LEFT,
-                    Table.ALIGN_LEFT, Table.ALIGN_LEFT, Table.ALIGN_LEFT,
-                    Table.ALIGN_LEFT, Table.ALIGN_LEFT, Table.ALIGN_LEFT,
-                    Table.ALIGN_LEFT });
+            t.setColumnAlignments(new Align[] { Align.LEFT, Align.LEFT,
+                    Align.LEFT, Align.LEFT, Align.LEFT, Align.LEFT, Align.LEFT,
+                    Align.LEFT });
             junit.framework.Assert
                     .fail("No exception thrown for invalid array length");
         } catch (IllegalArgumentException e) {
@@ -144,13 +124,11 @@ public class TableColumnAlignments {
         int properties = 5;
         Table t = TableGenerator
                 .createTableWithDefaultContainer(properties, 10);
-        String[] explicitAlignments = new String[] { Table.ALIGN_CENTER,
-                Table.ALIGN_LEFT, Table.ALIGN_RIGHT, Table.ALIGN_RIGHT,
-                Table.ALIGN_LEFT };
+        Align[] explicitAlignments = new Align[] { Align.CENTER, Align.LEFT,
+                Align.RIGHT, Align.RIGHT, Align.LEFT };
 
-        String[] currentAlignments = new String[] { Table.ALIGN_LEFT,
-                Table.ALIGN_LEFT, Table.ALIGN_LEFT, Table.ALIGN_LEFT,
-                Table.ALIGN_LEFT };
+        Align[] currentAlignments = new Align[] { Align.LEFT, Align.LEFT,
+                Align.LEFT, Align.LEFT, Align.LEFT };
 
         for (int i = 0; i < properties; i++) {
             t.setColumnAlignment("Property " + i, explicitAlignments[i]);
index 2675479e36c484f13b6419a4e9efff9d08e07243..7fae10b24e8b44cda4456a033484399db047164c 100644 (file)
@@ -15,6 +15,7 @@ import com.vaadin.ui.Button;
 import com.vaadin.ui.Label;\r
 import com.vaadin.ui.Label.ContentMode;\r
 import com.vaadin.ui.Table;\r
+import com.vaadin.ui.Table.Align;\r
 import com.vaadin.ui.Table.CellStyleGenerator;\r
 import com.vaadin.ui.Table.ColumnGenerator;\r
 import com.vaadin.ui.Table.ColumnHeaderMode;\r
@@ -43,9 +44,9 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T>
     }\r
 \r
     /* COMMANDS */\r
-    private Command<T, String> columnAlignmentCommand = new Command<T, String>() {\r
+    private Command<T, Align> columnAlignmentCommand = new Command<T, Align>() {\r
 \r
-        public void execute(T c, String alignment, Object propertyId) {\r
+        public void execute(T c, Align alignment, Object propertyId) {\r
             c.setColumnAlignment(propertyId, alignment);\r
         }\r
 \r
@@ -136,7 +137,7 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T>
     protected Command<T, Object> alignColumnLeftCommand = new Command<T, Object>() {\r
 \r
         public void execute(T c, Object propertyId, Object data) {\r
-            c.setColumnAlignment(propertyId, (String) data);\r
+            c.setColumnAlignment(propertyId, (Align) data);\r
         }\r
     };\r
 \r
@@ -603,10 +604,10 @@ public class Tables<T extends Table> extends AbstractSelectTestCase<T>
         createBooleanAction("Collapsed", category, false, columnCollapsed,\r
                 propertyId);\r
         t.log("Collapsed");\r
-        LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();\r
-        options.put("Left", Table.ALIGN_LEFT);\r
-        options.put("Center", Table.ALIGN_CENTER);\r
-        options.put("Right", Table.ALIGN_RIGHT);\r
+        LinkedHashMap<String, Align> options = new LinkedHashMap<String, Align>();\r
+        options.put("Left", Align.LEFT);\r
+        options.put("Center", Align.CENTER);\r
+        options.put("Right", Align.RIGHT);\r
 \r
         createSelectAction("Alignment", category, options, "Left",\r
                 columnAlignmentCommand, propertyId);\r