]> source.dussan.org Git - vaadin-framework.git/commitdiff
#1572 : test case and margins
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 5 Jun 2008 15:18:03 +0000 (15:18 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 5 Jun 2008 15:18:03 +0000 (15:18 +0000)
svn changeset:4767/svn branch:trunk

WebContent/ITMILL/themes/default/gridlayout/gridlayout.css [new file with mode: 0644]
WebContent/ITMILL/themes/default/styles.css
src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java
src/com/itmill/toolkit/tests/tickets/Ticket1572.java [new file with mode: 0644]

diff --git a/WebContent/ITMILL/themes/default/gridlayout/gridlayout.css b/WebContent/ITMILL/themes/default/gridlayout/gridlayout.css
new file mode 100644 (file)
index 0000000..a4634c1
--- /dev/null
@@ -0,0 +1,12 @@
+.i-gridlayout-margin-top {
+       padding-top: 15px;
+}
+.i-gridlayout-margin-bottom {
+       padding-bottom: 15px;
+}
+.i-gridlayout-margin-left {
+       padding-left: 18px;
+} 
+.i-gridlayout-margin-right {
+       padding-right: 18px;
+}
index 86b17c829f2eae2ce98a2e00853d093f342dcac6..92d2005ca32f3002332cddaface6edcd384c0cbf 100644 (file)
@@ -499,6 +499,18 @@ input.i-modified,
 * html .i-form-errormessage {
        height: 20px
 }
+.i-gridlayout-margin-top {
+       padding-top: 15px;
+}
+.i-gridlayout-margin-bottom {
+       padding-bottom: 15px;
+}
+.i-gridlayout-margin-left {
+       padding-left: 18px;
+} 
+.i-gridlayout-margin-right {
+       padding-right: 18px;
+}
 
 .i-Notification {
        font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif;
index f557ae5b5123c8545457609d3507dfb25c6fcb24..e238bbd6858f4f28758cf9423bf56d24b066e306 100644 (file)
@@ -9,9 +9,11 @@ import java.util.HashMap;
 import java.util.Iterator;
 
 import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import com.google.gwt.user.client.ui.HasVerticalAlignment;
+import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment.HorizontalAlignmentConstant;
 import com.google.gwt.user.client.ui.HasVerticalAlignment.VerticalAlignmentConstant;
@@ -19,18 +21,19 @@ import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
 import com.itmill.toolkit.terminal.gwt.client.CaptionWrapper;
 import com.itmill.toolkit.terminal.gwt.client.Container;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
+import com.itmill.toolkit.terminal.gwt.client.StyleConstants;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
 
-public class IGridLayout extends FlexTable implements Paintable, Container {
+public class IGridLayout extends SimplePanel implements Paintable, Container {
 
     public static final String CLASSNAME = "i-gridlayout";
 
-    /** Widget to captionwrapper map */
-    private final HashMap widgetToCaptionWrapper = new HashMap();
+    private Grid grid = new Grid();
 
     public IGridLayout() {
         super();
         setStyleName(CLASSNAME);
+        setWidget(grid);
     }
 
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
@@ -39,127 +42,171 @@ public class IGridLayout extends FlexTable implements Paintable, Container {
             return;
         }
 
-        if (uidl.hasAttribute("caption")) {
-            setTitle(uidl.getStringAttribute("caption"));
-        }
-        int row = 0, column = 0;
+        final MarginInfo margins = new MarginInfo(uidl
+                .getIntAttribute("margins"));
+
+        // 1572
+        Element margin = getElement();
+        setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_TOP,
+                margins.hasTop());
+        setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_RIGHT,
+                margins.hasRight());
+        setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_BOTTOM,
+                margins.hasBottom());
+        setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_LEFT,
+                margins.hasLeft());
+
+        grid.updateFromUIDL(uidl, client);
+    }
+
+    public boolean hasChildComponent(Widget component) {
+        return grid.hasChildComponent(component);
+    }
+
+    public void replaceChildComponent(Widget oldComponent, Widget newComponent) {
+        grid.replaceChildComponent(oldComponent, newComponent);
+    }
+
+    public void updateCaption(Paintable component, UIDL uidl) {
+        grid.updateCaption(component, uidl);
+    }
+
+    public class Grid extends FlexTable implements Paintable, Container {
 
-        final ArrayList oldWidgetWrappers = new ArrayList();
-        for (final Iterator iterator = iterator(); iterator.hasNext();) {
-            oldWidgetWrappers.add(iterator.next());
+        /** Widget to captionwrapper map */
+        private final HashMap widgetToCaptionWrapper = new HashMap();
+
+        public Grid() {
+            super();
+            setStyleName(CLASSNAME);
         }
-        clear();
-
-        final int[] alignments = uidl.getIntArrayAttribute("alignments");
-        int alignmentIndex = 0;
-
-        for (final Iterator i = uidl.getChildIterator(); i.hasNext();) {
-            final UIDL r = (UIDL) i.next();
-            if ("gr".equals(r.getTag())) {
-                column = 0;
-                for (final Iterator j = r.getChildIterator(); j.hasNext();) {
-                    final UIDL c = (UIDL) j.next();
-                    if ("gc".equals(c.getTag())) {
-                        prepareCell(row, column);
-
-                        // Set cell width
-                        int w;
-                        if (c.hasAttribute("w")) {
-                            w = c.getIntAttribute("w");
-                        } else {
-                            w = 1;
-                        }
-                        AlignmentInfo alignmentInfo = new AlignmentInfo(
-                                alignments[alignmentIndex++]);
-
-                        VerticalAlignmentConstant va;
-                        if (alignmentInfo.isBottom()) {
-                            va = HasVerticalAlignment.ALIGN_BOTTOM;
-                        } else if (alignmentInfo.isTop()) {
-                            va = HasVerticalAlignment.ALIGN_TOP;
-                        } else {
-                            va = HasVerticalAlignment.ALIGN_MIDDLE;
-                        }
 
-                        HorizontalAlignmentConstant ha;
+        public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
 
-                        if (alignmentInfo.isLeft()) {
-                            ha = HasHorizontalAlignment.ALIGN_LEFT;
-                        } else if (alignmentInfo.isHorizontalCenter()) {
-                            ha = HasHorizontalAlignment.ALIGN_CENTER;
-                        } else {
-                            ha = HasHorizontalAlignment.ALIGN_RIGHT;
-                        }
+            int row = 0, column = 0;
 
-                        getCellFormatter().setAlignment(row, column, ha, va);
+            final ArrayList oldWidgetWrappers = new ArrayList();
+            for (final Iterator iterator = iterator(); iterator.hasNext();) {
+                oldWidgetWrappers.add(iterator.next());
+            }
+            clear();
+
+            final int[] alignments = uidl.getIntArrayAttribute("alignments");
+            int alignmentIndex = 0;
+
+            for (final Iterator i = uidl.getChildIterator(); i.hasNext();) {
+                final UIDL r = (UIDL) i.next();
+                if ("gr".equals(r.getTag())) {
+                    column = 0;
+                    for (final Iterator j = r.getChildIterator(); j.hasNext();) {
+                        final UIDL c = (UIDL) j.next();
+                        if ("gc".equals(c.getTag())) {
+                            prepareCell(row, column);
+
+                            // Set cell width
+                            int w;
+                            if (c.hasAttribute("w")) {
+                                w = c.getIntAttribute("w");
+                            } else {
+                                w = 1;
+                            }
+                            AlignmentInfo alignmentInfo = new AlignmentInfo(
+                                    alignments[alignmentIndex++]);
+
+                            VerticalAlignmentConstant va;
+                            if (alignmentInfo.isBottom()) {
+                                va = HasVerticalAlignment.ALIGN_BOTTOM;
+                            } else if (alignmentInfo.isTop()) {
+                                va = HasVerticalAlignment.ALIGN_TOP;
+                            } else {
+                                va = HasVerticalAlignment.ALIGN_MIDDLE;
+                            }
 
-                        // set col span
-                        ((FlexCellFormatter) getCellFormatter()).setColSpan(
-                                row, column, w);
+                            HorizontalAlignmentConstant ha;
 
-                        // Set cell height
-                        int h;
-                        if (c.hasAttribute("h")) {
-                            h = c.getIntAttribute("h");
-                        } else {
-                            h = 1;
-                        }
-                        ((FlexCellFormatter) getCellFormatter()).setRowSpan(
-                                row, column, h);
-
-                        final UIDL u = c.getChildUIDL(0);
-                        if (u != null) {
-                            final Paintable child = client.getPaintable(u);
-                            CaptionWrapper wr;
-                            if (widgetToCaptionWrapper.containsKey(child)) {
-                                wr = (CaptionWrapper) widgetToCaptionWrapper
-                                        .get(child);
-                                oldWidgetWrappers.remove(wr);
+                            if (alignmentInfo.isLeft()) {
+                                ha = HasHorizontalAlignment.ALIGN_LEFT;
+                            } else if (alignmentInfo.isHorizontalCenter()) {
+                                ha = HasHorizontalAlignment.ALIGN_CENTER;
                             } else {
-                                wr = new CaptionWrapper(child, client);
-                                widgetToCaptionWrapper.put(child, wr);
+                                ha = HasHorizontalAlignment.ALIGN_RIGHT;
                             }
 
-                            setWidget(row, column, wr);
+                            getCellFormatter()
+                                    .setAlignment(row, column, ha, va);
 
-                            DOM.setStyleAttribute(wr.getElement(), "textAlign",
-                                    alignmentInfo.getHorizontalAlignment());
+                            // set col span
+                            ((FlexCellFormatter) getCellFormatter())
+                                    .setColSpan(row, column, w);
 
-                            if (!u.getBooleanAttribute("cached")) {
-                                child.updateFromUIDL(u, client);
+                            // Set cell height
+                            int h;
+                            if (c.hasAttribute("h")) {
+                                h = c.getIntAttribute("h");
+                            } else {
+                                h = 1;
                             }
+                            ((FlexCellFormatter) getCellFormatter())
+                                    .setRowSpan(row, column, h);
+
+                            final UIDL u = c.getChildUIDL(0);
+                            if (u != null) {
+                                final Paintable child = client.getPaintable(u);
+                                CaptionWrapper wr;
+                                if (widgetToCaptionWrapper.containsKey(child)) {
+                                    wr = (CaptionWrapper) widgetToCaptionWrapper
+                                            .get(child);
+                                    oldWidgetWrappers.remove(wr);
+                                } else {
+                                    wr = new CaptionWrapper(child, client);
+                                    widgetToCaptionWrapper.put(child, wr);
+                                }
+
+                                setWidget(row, column, wr);
+
+                                DOM.setStyleAttribute(wr.getElement(),
+                                        "textAlign", alignmentInfo
+                                                .getHorizontalAlignment());
+
+                                if (!u.getBooleanAttribute("cached")) {
+                                    child.updateFromUIDL(u, client);
+                                }
+                            }
+                            column += w;
                         }
-                        column += w;
                     }
+                    row++;
                 }
-                row++;
             }
-        }
 
-        // loop oldWidgetWrappers that where not re-attached and unregister them
-        for (final Iterator it = oldWidgetWrappers.iterator(); it.hasNext();) {
-            final CaptionWrapper w = (CaptionWrapper) it.next();
-            client.unregisterPaintable(w.getPaintable());
-            widgetToCaptionWrapper.remove(w.getPaintable());
+            // loop oldWidgetWrappers that where not re-attached and unregister
+            // them
+            for (final Iterator it = oldWidgetWrappers.iterator(); it.hasNext();) {
+                final CaptionWrapper w = (CaptionWrapper) it.next();
+                client.unregisterPaintable(w.getPaintable());
+                widgetToCaptionWrapper.remove(w.getPaintable());
+            }
         }
-    }
 
-    public boolean hasChildComponent(Widget component) {
-        if (widgetToCaptionWrapper.containsKey(component)) {
-            return true;
+        public boolean hasChildComponent(Widget component) {
+            if (widgetToCaptionWrapper.containsKey(component)) {
+                return true;
+            }
+            return false;
         }
-        return false;
-    }
 
-    public void replaceChildComponent(Widget oldComponent, Widget newComponent) {
-        // TODO Auto-generated method stub
+        public void replaceChildComponent(Widget oldComponent,
+                Widget newComponent) {
+            // TODO Auto-generated method stub
 
-    }
+        }
+
+        public void updateCaption(Paintable component, UIDL uidl) {
+            final CaptionWrapper wrapper = (CaptionWrapper) widgetToCaptionWrapper
+                    .get(component);
+            wrapper.updateCaption(uidl);
+        }
 
-    public void updateCaption(Paintable component, UIDL uidl) {
-        final CaptionWrapper wrapper = (CaptionWrapper) widgetToCaptionWrapper
-                .get(component);
-        wrapper.updateCaption(uidl);
     }
 
 }
diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket1572.java b/src/com/itmill/toolkit/tests/tickets/Ticket1572.java
new file mode 100644 (file)
index 0000000..4f0791a
--- /dev/null
@@ -0,0 +1,108 @@
+package com.itmill.toolkit.tests.tickets;\r
+\r
+import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.GridLayout;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.OrderedLayout;\r
+import com.itmill.toolkit.ui.Panel;\r
+import com.itmill.toolkit.ui.Window;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
+\r
+public class Ticket1572 extends com.itmill.toolkit.Application {\r
+\r
+    private Label state;\r
+    private GridLayout gl;\r
+    private Label spacingstate;\r
+\r
+    public void init() {\r
+\r
+        final Window main = new Window(getClass().getName().substring(\r
+                getClass().getName().lastIndexOf(".") + 1));\r
+        setMainWindow(main);\r
+\r
+        Panel p = new Panel("Test wrapper for gridlayout margin/spacing");\r
+\r
+        p.setLayout(new OrderedLayout(OrderedLayout.ORIENTATION_HORIZONTAL));\r
+\r
+        gl = new GridLayout(3, 3);\r
+        gl.setMargin(true);\r
+        for (int i = 0; i < 3 * 3; i++) {\r
+            gl.addComponent(new Button("test"));\r
+        }\r
+        p.addComponent(gl);\r
+        p.addComponent(new Label("| next component"));\r
+\r
+        Button b = new Button("next margin state");\r
+        b.addListener(new Button.ClickListener() {\r
+            public void buttonClick(ClickEvent event) {\r
+                nextMarginState();\r
+            }\r
+\r
+        });\r
+\r
+        state = new Label();\r
+        state.setCaption("Current margin state:");\r
+        main.addComponent(state);\r
+        main.addComponent(b);\r
+\r
+        Button b2 = new Button("next spacing state");\r
+        b.addListener(new Button.ClickListener() {\r
+            public void buttonClick(ClickEvent event) {\r
+                nextSpacingState();\r
+            }\r
+\r
+        });\r
+\r
+        spacingstate = new Label();\r
+        spacingstate.setCaption("Current Spacing State:");\r
+        main.addComponent(spacingstate);\r
+        main.addComponent(b2);\r
+\r
+        main.addComponent(p);\r
+\r
+        nextMarginState();\r
+        nextSpacingState();\r
+\r
+    }\r
+\r
+    private int stateCounter = -1;\r
+\r
+    private void nextMarginState() {\r
+        stateCounter++;\r
+        switch (stateCounter) {\r
+        case 0:\r
+            gl.setMargin(false);\r
+            state.setValue("Margin off");\r
+            break;\r
+        case 1:\r
+            gl.setMargin(true);\r
+            state.setValue("Margin on");\r
+            break;\r
+        case 2:\r
+            gl.setMargin(true, false, false, false);\r
+            state.setValue("Margin top");\r
+            break;\r
+        case 3:\r
+            gl.setMargin(false, true, false, false);\r
+            state.setValue("Margin right");\r
+            break;\r
+        case 4:\r
+            gl.setMargin(false, false, true, false);\r
+            state.setValue("Margin bottom");\r
+            break;\r
+        case 5:\r
+            gl.setMargin(false, false, false, true);\r
+            state.setValue("Margin left");\r
+            break;\r
+        default:\r
+            stateCounter = -1;\r
+            nextMarginState();\r
+            break;\r
+        }\r
+    }\r
+\r
+    private void nextSpacingState() {\r
+        spacingstate.setValue("        // TODO Auto-generated method stub");\r
+    }\r
+\r
+}\r