]> source.dussan.org Git - vaadin-framework.git/commitdiff
Implemented layout spacing in IOrderedLayout.
authorJouni Koivuviita <jouni.koivuviita@itmill.com>
Fri, 14 Dec 2007 07:38:54 +0000 (07:38 +0000)
committerJouni Koivuviita <jouni.koivuviita@itmill.com>
Fri, 14 Dec 2007 07:38:54 +0000 (07:38 +0000)
svn changeset:3236/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java
src/com/itmill/toolkit/terminal/gwt/public/default/orderedlayout/orderedlayout.css
src/com/itmill/toolkit/ui/OrderedLayout.java

index e491e101b85bf20aa73bd99fa3dd057714b6f52d..3a4b5d6f896dbb0ab8912848976de2e21e74c970 100644 (file)
@@ -52,6 +52,8 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
     protected Element root;
     protected Element margin;
 
+    private boolean hasComponentSpacing;
+
     public IOrderedLayout(int orientation) {
         orientationMode = orientation;
         constructDOM();
@@ -65,7 +67,8 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
         if (orientationMode == ORIENTATION_HORIZONTAL) {
             final String structure = "<table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr></tr></tbody></table>";
             DOM.setInnerHTML(margin, structure);
-            childContainer = DOM.getFirstChild(DOM.getFirstChild(DOM.getFirstChild(margin)));
+            childContainer = DOM.getFirstChild(DOM.getFirstChild(DOM
+                    .getFirstChild(margin)));
         } else {
             childContainer = margin;
         }
@@ -81,6 +84,9 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
             return;
         }
 
+        //
+        hasComponentSpacing = uidl.getBooleanAttribute("spacing");
+
         // Update contained components
 
         final ArrayList uidlWidgets = new ArrayList();
@@ -312,14 +318,14 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
     protected void handleMargins(UIDL uidl) {
         final MarginInfo margins = new MarginInfo(uidl
                 .getIntAttribute("margins"));
-        setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_TOP, margins
-                .hasTop());
-        setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_RIGHT, margins
-                .hasRight());
+        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());
+        setStyleName(margin, CLASSNAME + "-" + StyleConstants.MARGIN_LEFT,
+                margins.hasLeft());
     }
 
     protected void handleAlignments(UIDL uidl) {
@@ -330,30 +336,47 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
         int alignmentIndex = 0;
         // Insert alignment attributes
         final Iterator it = getPaintables().iterator();
+        boolean first = true;
         while (it.hasNext()) {
 
             // Calculate alignment info
             final AlignmentInfo ai = new AlignmentInfo(
                     alignments[alignmentIndex++]);
 
-            final Element td = DOM.getParent(((Widget) it.next()).getElement());
+            final Element wrapper = DOM.getParent(((Widget) it.next())
+                    .getElement());
             if (Util.isIE()) {
-                DOM
-                        .setElementAttribute(td, "vAlign", ai
-                                .getVerticalAlignment());
+                DOM.setElementAttribute(wrapper, "vAlign", ai
+                        .getVerticalAlignment());
             } else {
-                DOM.setStyleAttribute(td, "verticalAlign", ai
+                DOM.setStyleAttribute(wrapper, "verticalAlign", ai
                         .getVerticalAlignment());
             }
             // TODO use one-cell table to implement horizontal alignments
             if (Util.isIE()) {
-                DOM.setElementAttribute(td, "align", ai
+                DOM.setElementAttribute(wrapper, "align", ai
                         .getHorizontalAlignment());
             } else {
-                DOM.setStyleAttribute(td, "textAlign", ai
+                DOM.setStyleAttribute(wrapper, "textAlign", ai
                         .getHorizontalAlignment());
             }
+
+            if (first) {
+                setSpacingEnabled(wrapper, false);
+                first = false;
+            } else {
+                setSpacingEnabled(wrapper, hasComponentSpacing);
+            }
         }
     }
 
+    private void setSpacingEnabled(Element e, boolean b) {
+        setStyleName(
+                e,
+                CLASSNAME
+                        + "-"
+                        + (orientationMode == ORIENTATION_HORIZONTAL ? StyleConstants.HORIZONTAL_SPACING
+                                : StyleConstants.VERTICAL_SPACING), b);
+    }
+
 }
index c94584332dea56b932ca89caf44790c1192a7bb7..1a429b2af04405f41a91b8a86b831fa5615cc56f 100644 (file)
@@ -9,4 +9,11 @@
 }
 .i-orderedlayout-margin-left {
        padding-left: 18px;
+}
+
+.i-orderedlayout-vspacing {
+       margin-top: 8px;
+}
+.i-orderedlayout-hspacing {
+       padding-left: 8px;
 }
\ No newline at end of file
index 7bdf0611a2c07d0cabf60726c7f5af0d193f54a3..7b2f1163001613814148b38b19ea4adfd3bfe3e1 100644 (file)
@@ -346,6 +346,7 @@ public class OrderedLayout extends AbstractLayout {
      */
     public void setSpacing(boolean enabled) {
         spacing = enabled;
+        requestRepaint();
     }
 
     /**