]> source.dussan.org Git - vaadin-framework.git/commitdiff
OrderedLayout and ExpandLayout alignment handling unified under one class, AlignmentI...
authorJouni Koivuviita <jouni.koivuviita@itmill.com>
Fri, 16 Nov 2007 09:50:15 +0000 (09:50 +0000)
committerJouni Koivuviita <jouni.koivuviita@itmill.com>
Fri, 16 Nov 2007 09:50:15 +0000 (09:50 +0000)
svn changeset:2838/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/AlignmentInfo.java [new file with mode: 0644]
src/com/itmill/toolkit/terminal/gwt/client/ui/IExpandLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java
src/com/itmill/toolkit/ui/ExpandLayout.java
src/com/itmill/toolkit/ui/OrderedLayout.java

diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/AlignmentInfo.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/AlignmentInfo.java
new file mode 100644 (file)
index 0000000..d2967e1
--- /dev/null
@@ -0,0 +1,72 @@
+package com.itmill.toolkit.terminal.gwt.client.ui;
+
+public class AlignmentInfo {
+
+       public static final int ALIGNMENT_LEFT = 1;
+       public static final int ALIGNMENT_RIGHT = 2;
+       public static final int ALIGNMENT_TOP = 4;
+       public static final int ALIGNMENT_BOTTOM = 8;
+       public static final int ALIGNMENT_HORIZONTAL_CENTER = 16;
+       public static final int ALIGNMENT_VERTICAL_CENTER = 32;
+
+       private int bitMask;
+
+       public AlignmentInfo(int bitMask) {
+               this.bitMask = bitMask;
+       }
+
+       public AlignmentInfo(int horizontal, int vertical) {
+               setAlignment(horizontal, vertical);
+       }
+
+       public void setAlignment(int horiz, int vert) {
+               bitMask = horiz + vert;
+       }
+
+       public int getBitMask() {
+               return bitMask;
+       }
+
+       public boolean isTop() {
+               return (bitMask & ALIGNMENT_TOP) == ALIGNMENT_TOP;
+       }
+
+       public boolean isBottom() {
+               return (bitMask & ALIGNMENT_BOTTOM) == ALIGNMENT_BOTTOM;
+       }
+
+       public boolean isLeft() {
+               return (bitMask & ALIGNMENT_LEFT) == ALIGNMENT_LEFT;
+       }
+
+       public boolean isRight() {
+               return (bitMask & ALIGNMENT_RIGHT) == ALIGNMENT_RIGHT;
+       }
+
+       public boolean isVerticalCenter() {
+               return (bitMask & ALIGNMENT_VERTICAL_CENTER) == ALIGNMENT_VERTICAL_CENTER;
+       }
+
+       public boolean isHorizontalCenter() {
+               return (bitMask & ALIGNMENT_HORIZONTAL_CENTER) == ALIGNMENT_HORIZONTAL_CENTER;
+       }
+
+       public String getVerticalAlignment() {
+               if (isBottom()) {
+                       return "bottom";
+               } else if (isVerticalCenter()) {
+                       return "middle";
+               }
+               return "top";
+       }
+
+       public String getHorizontalAlignment() {
+               if (isRight()) {
+                       return "right";
+               } else if (isHorizontalCenter()) {
+                       return "center";
+               }
+               return "left";
+       }
+
+}
index bde5b6c543eebac7a60e60bdd37b502c59a3efcd..fb0ee43b676450fb3d5d6e1b721922f916c679c1 100644 (file)
@@ -141,39 +141,8 @@ public class IExpandLayout extends IOrderedLayout implements
                 */
                ((Paintable) expandedWidget).updateFromUIDL(expandedWidgetUidl, client);
 
-               // Component alignments as a comma separated list.
-               // See com.itmill.toolkit.ui.OrderedLayout.java for possible values.
-               String[] alignments = uidl.getStringAttribute("alignments").split(",");
-               int alignmentIndex = 0;
-
-               // Insert alignment attributes
-               Iterator it = getPaintables().iterator();
-               while (it.hasNext()) {
-
-                       // Calculate alignment info
-                       int alignment = Integer.parseInt((alignments[alignmentIndex++]));
-                       // Vertical alignment
-                       String vAlign = "top";
-                       if ((alignment & ALIGNMENT_TOP) == ALIGNMENT_TOP)
-                               vAlign = "top";
-                       else if ((alignment & ALIGNMENT_BOTTOM) == ALIGNMENT_BOTTOM)
-                               vAlign = "bottom";
-                       else if ((alignment & ALIGNMENT_VERTICAL_CENTER) == ALIGNMENT_VERTICAL_CENTER)
-                               vAlign = "middle";
-                       // Horizontal alignment
-                       String hAlign = "";
-                       if ((alignment & ALIGNMENT_LEFT) == ALIGNMENT_LEFT)
-                               hAlign = "left";
-                       else if ((alignment & ALIGNMENT_RIGHT) == ALIGNMENT_RIGHT)
-                               hAlign = "right";
-                       else if ((alignment & ALIGNMENT_HORIZONTAL_CENTER) == ALIGNMENT_HORIZONTAL_CENTER)
-                               hAlign = "center";
-
-                       Element td = DOM.getParent(((Widget) it.next()).getElement());
-                       DOM.setStyleAttribute(td, "vertical-align", vAlign);
-                       // TODO use one-cell table to implement horizontal alignments
-                       DOM.setStyleAttribute(td, "text-align", hAlign);
-               }
+               // Set component alignments
+               handleAlignments(uidl);
 
        }
 
@@ -192,7 +161,6 @@ public class IExpandLayout extends IOrderedLayout implements
                String height = DOM.getStyleAttribute(table, "height");
                DOM.setStyleAttribute(table, "height", "");
 
-               
                // take expanded element temporarely out of flow to make container
                // minimum sized
                String originalPositioning = DOM.getStyleAttribute(expandedWidget
@@ -218,7 +186,7 @@ public class IExpandLayout extends IOrderedLayout implements
                DOM.setStyleAttribute(DOM.getParent(expandedElement), "height",
                                freeSpace + "px");
                // Component margins will bleed if overflow is not hidden
-               //DOM.setStyleAttribute(expandedElement, "overflow", "hidden");
+               // DOM.setStyleAttribute(expandedElement, "overflow", "hidden");
 
                DOM.setStyleAttribute(expandedWidget.getElement(), "position",
                                originalPositioning);
index 7ac6598706091f9cea00415f42f718e40b38c015..1ebf559ad22efa62e71784da54eddefdbb5ffe6b 100644 (file)
@@ -29,13 +29,6 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
        public static final int ORIENTATION_VERTICAL = 0;
        public static final int ORIENTATION_HORIZONTAL = 1;
 
-       public static final int ALIGNMENT_LEFT = 1;
-       public static final int ALIGNMENT_RIGHT = 2;
-       public static final int ALIGNMENT_TOP = 4;
-       public static final int ALIGNMENT_BOTTOM = 8;
-       public static final int ALIGNMENT_HORIZONTAL_CENTER = 16;
-       public static final int ALIGNMENT_VERTICAL_CENTER = 32;
-
        int orientationMode = ORIENTATION_VERTICAL;
 
        protected HashMap componentToCaption = new HashMap();
@@ -169,41 +162,10 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
                                removePaintable(p);
                }
 
-               // Component alignments as a comma separated list.
-               // See com.itmill.toolkit.ui.OrderedLayout.java for possible values.
-               int[] alignments = uidl.getIntArrayAttribute("alignments");
-
-               int alignmentIndex = 0;
-
-               // Insert alignment attributes
-               Iterator it = getPaintables().iterator();
-               while (it.hasNext()) {
-
-                       // Calculate alignment info
-                       int alignment = alignments[alignmentIndex++];
-                       // Vertical alignment
-                       String vAlign = "top";
-                       if ((alignment & ALIGNMENT_TOP) == ALIGNMENT_TOP)
-                               vAlign = "top";
-                       else if ((alignment & ALIGNMENT_BOTTOM) == ALIGNMENT_BOTTOM)
-                               vAlign = "bottom";
-                       else if ((alignment & ALIGNMENT_VERTICAL_CENTER) == ALIGNMENT_VERTICAL_CENTER)
-                               vAlign = "middle";
-                       // Horizontal alignment
-                       String hAlign = "";
-                       if ((alignment & ALIGNMENT_LEFT) == ALIGNMENT_LEFT)
-                               hAlign = "left";
-                       else if ((alignment & ALIGNMENT_RIGHT) == ALIGNMENT_RIGHT)
-                               hAlign = "right";
-                       else if ((alignment & ALIGNMENT_HORIZONTAL_CENTER) == ALIGNMENT_HORIZONTAL_CENTER)
-                               hAlign = "center";
-
-                       Element td = DOM.getParent(((Widget) it.next()).getElement());
-                       DOM.setStyleAttribute(td, "vertical-align", vAlign);
-                       // TODO use one-cell table to implement horizontal alignments
-                       DOM.setStyleAttribute(td, "text-align", hAlign);
-               }
+               // Handle component alignments
+               handleAlignments(uidl);
 
+               // Handle layout margins
                handleMargins(uidl);
 
        }
@@ -294,7 +256,7 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
         */
        protected Element createWidgetWrappper() {
                Element td = DOM.createTD();
-               //DOM.setStyleAttribute(td, "overflow", "hidden");
+               // DOM.setStyleAttribute(td, "overflow", "hidden");
                switch (orientationMode) {
                case ORIENTATION_HORIZONTAL:
                        return td;
@@ -437,4 +399,27 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
                DOM.setElementProperty(margin, "className", marginClasses);
        }
 
+       protected void handleAlignments(UIDL uidl) {
+               // Component alignments as a comma separated list.
+               // See com.itmill.toolkit.terminal.gwt.client.ui.AlignmentInfo.java for
+               // possible values.
+               int[] alignments = uidl.getIntArrayAttribute("alignments");
+               int alignmentIndex = 0;
+               // Insert alignment attributes
+               Iterator it = getPaintables().iterator();
+               while (it.hasNext()) {
+
+                       // Calculate alignment info
+                       AlignmentInfo ai = new AlignmentInfo(alignments[alignmentIndex++]);
+
+                       Element td = DOM.getParent(((Widget) it.next()).getElement());
+                       DOM.setStyleAttribute(td, "vertical-align", ai
+                                       .getVerticalAlignment());
+                       // TODO use one-cell table to implement horizontal alignments
+                       DOM
+                                       .setStyleAttribute(td, "text-align", ai
+                                                       .getHorizontalAlignment());
+               }
+       }
+
 }
index 33395956b2c7b5692729b763aa55388523b9a656..47b75e5b74265a6ca7fb015c10ea2eb7e9fbd724 100644 (file)
@@ -65,11 +65,10 @@ public class ExpandLayout extends OrderedLayout {
                if (getOrientation() == ORIENTATION_HORIZONTAL)
                        target.addAttribute("orientation", "horizontal");
 
-               // Store alignment info in this String
-               StringBuffer alignments = new StringBuffer();
-
+               String[] alignmentsArray = new String[components.size()];
                
                // Adds all items in all the locations
+               int index = 0;
                for (Iterator i = getComponentIterator(); i.hasNext();) {
                        Component c = (Component) i.next();
                        if (c != null) {
@@ -79,13 +78,12 @@ public class ExpandLayout extends OrderedLayout {
                                c.paint(target);
                                target.endTag("cc");
                        }
-                       alignments.append(getComponentAlignment(c));
-                       if (i.hasNext())
-                               alignments.append(",");
+                       alignmentsArray[index++] = String.valueOf(getComponentAlignment(c));
 
                }
+               
                // Add child component alignment info to layout tag
-               target.addAttribute("alignments", alignments.toString());
+               target.addAttribute("alignments", alignmentsArray);
 
        }
 
index ac5f0e349ea59fea0be3c3ced431cc99efa4e286..b489312bcac885b8b2c5436546663f055da6c154 100644 (file)
@@ -64,7 +64,7 @@ public class OrderedLayout extends AbstractLayout {
        /**
         * Custom layout slots containing the components.
         */
-       private LinkedList components = new LinkedList();
+       protected LinkedList components = new LinkedList();
 
        /* Child component alignments ************************************** */