]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix for #2294 - Sanity check for setComponentAlignment
authorArtur Signell <artur.signell@itmill.com>
Mon, 8 Dec 2008 13:43:03 +0000 (13:43 +0000)
committerArtur Signell <artur.signell@itmill.com>
Mon, 8 Dec 2008 13:43:03 +0000 (13:43 +0000)
svn changeset:6120/svn branch:trunk

src/com/itmill/toolkit/tests/tickets/Ticket2294.java [new file with mode: 0644]
src/com/itmill/toolkit/ui/AbstractOrderedLayout.java

diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket2294.java b/src/com/itmill/toolkit/tests/tickets/Ticket2294.java
new file mode 100644 (file)
index 0000000..c77ee15
--- /dev/null
@@ -0,0 +1,61 @@
+package com.itmill.toolkit.tests.tickets;
+
+import com.itmill.toolkit.Application;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.OrderedLayout;
+import com.itmill.toolkit.ui.Window;
+import com.itmill.toolkit.ui.Layout.AlignmentHandler;
+
+public class Ticket2294 extends Application {
+
+    public void init() {
+        Window w = new Window(getClass().getSimpleName());
+        setMainWindow(w);
+        // setTheme("tests-tickets");
+        createUI((OrderedLayout) w.getLayout());
+    }
+
+    private void createUI(OrderedLayout layout) {
+        Label label1 = new Label();
+        Label label2 = null;
+        Label label3 = new Label();
+        String result1 = "";
+        String result2 = "";
+        String result3 = "";
+
+        layout.addComponent(label1);
+        try {
+            layout.setComponentAlignment(label1,
+                    AlignmentHandler.ALIGNMENT_LEFT,
+                    AlignmentHandler.ALIGNMENT_BOTTOM);
+            result1 = "OK";
+        } catch (Exception e) {
+            result1 = "FAILED: " + e.getMessage();
+        }
+
+        try {
+            layout.setComponentAlignment(label2,
+                    AlignmentHandler.ALIGNMENT_LEFT,
+                    AlignmentHandler.ALIGNMENT_BOTTOM);
+            result2 = "FAILED, no exception";
+        } catch (IllegalArgumentException e) {
+            result2 = "OK";
+        } catch (Exception e) {
+            result2 = "FAILED: " + e.getMessage();
+        }
+
+        try {
+            layout.setComponentAlignment(label3,
+                    AlignmentHandler.ALIGNMENT_LEFT,
+                    AlignmentHandler.ALIGNMENT_BOTTOM);
+            result3 = "FAILED, no exception";
+        } catch (IllegalArgumentException e) {
+            result3 = "OK";
+        } catch (Exception e) {
+            result3 = "FAILED: " + e.getMessage();
+        }
+
+        label1.setValue("Result 1: " + result1 + ", result 2: " + result2
+                + ", result 3: " + result3);
+    }
+}
index cb3d277222ad596e1aa9f2f84350566153ae2777..fe9d897d7120225b3469118746fc259fed2d2338 100644 (file)
@@ -235,9 +235,14 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
      */
     public void setComponentAlignment(Component childComponent,
             int horizontalAlignment, int verticalAlignment) {
-        componentToAlignment.put(childComponent, new Integer(
-                horizontalAlignment + verticalAlignment));
-        requestRepaint();
+        if (components.contains(childComponent)) {
+            componentToAlignment.put(childComponent, new Integer(
+                    horizontalAlignment + verticalAlignment));
+            requestRepaint();
+        } else {
+            throw new IllegalArgumentException(
+                    "Component must be added to layout before using setComponentAlignment()");
+        }
     }
 
     /*