]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix for #2278 - MarginHandler refactoring.
authorArtur Signell <artur.signell@itmill.com>
Wed, 3 Dec 2008 12:55:50 +0000 (12:55 +0000)
committerArtur Signell <artur.signell@itmill.com>
Wed, 3 Dec 2008 12:55:50 +0000 (12:55 +0000)
- Added MarginHandler interface which contains getMargin() and setMargin(MarginInfo).
- Renamed client side MarginInfo to IMarginInfo to avoid mixups.

svn changeset:6081/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/ICoordinateLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IMarginInfo.java [new file with mode: 0644]
src/com/itmill/toolkit/terminal/gwt/client/ui/MarginInfo.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java
src/com/itmill/toolkit/ui/AbstractLayout.java
src/com/itmill/toolkit/ui/Layout.java

index 29b9f4044a8e2073db2a3f97c4cb75605ee546b1..1adfd715c031ea8769f322483bbb682e91e40813 100644 (file)
@@ -64,7 +64,7 @@ public class ICoordinateLayout extends ComplexPanel implements Container,
     // current layout margins and width/height
     protected int[] layout = new int[6];
 
-    protected MarginInfo marginInfo; // from UIDL
+    protected IMarginInfo marginInfo; // from UIDL
     protected int[] margins; // from CSS
 
     public ICoordinateLayout() {
@@ -79,7 +79,7 @@ public class ICoordinateLayout extends ComplexPanel implements Container,
             DOM.setStyleAttribute(getElement(), "zoom", "1");
         }
 
-        marginInfo = new MarginInfo(0);
+        marginInfo = new IMarginInfo(0);
 
         // Init data structures
         componentList = new ArrayList<Widget>();
@@ -124,9 +124,9 @@ public class ICoordinateLayout extends ComplexPanel implements Container,
 
         // Enable / disable margins
         if (uidl.hasAttribute("margins")) {
-            marginInfo = new MarginInfo(uidl.getIntAttribute("margins"));
+            marginInfo = new IMarginInfo(uidl.getIntAttribute("margins"));
         } else {
-            marginInfo = new MarginInfo(0);
+            marginInfo = new IMarginInfo(0);
         }
 
         // Start going through the component tree
index fd8abd0dd2c04d3dcadfa9e41b79878849683080..54a24608e10b8fc62ec57fc6a7aa0fe7ac0adb52 100644 (file)
@@ -54,7 +54,7 @@ public class IFormLayout extends SimplePanel implements Container {
         }
 
         public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-            final MarginInfo margins = new MarginInfo(uidl
+            final IMarginInfo margins = new IMarginInfo(uidl
                     .getIntAttribute("margins"));
 
             Element margin = getElement();
index bf82cf8d15c431a733f762dbcfb203fad8520b0f..3be1f34971bfd2f4f12e5f68cff69e155cdd13c8 100644 (file)
@@ -589,7 +589,7 @@ public class IGridLayout extends SimplePanel implements Paintable, Container {
     }
 
     private void handleMargins(UIDL uidl) {
-        final MarginInfo margins = new MarginInfo(uidl
+        final IMarginInfo margins = new IMarginInfo(uidl
                 .getIntAttribute("margins"));
 
         String styles = CLASSNAME + "-margin";
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IMarginInfo.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IMarginInfo.java
new file mode 100644 (file)
index 0000000..dde94d7
--- /dev/null
@@ -0,0 +1,72 @@
+/* 
+@ITMillApache2LicenseForJavaFiles@
+ */
+
+package com.itmill.toolkit.terminal.gwt.client.ui;
+
+public class IMarginInfo {
+
+    private static final int TOP = 1;
+    private static final int RIGHT = 2;
+    private static final int BOTTOM = 4;
+    private static final int LEFT = 8;
+
+    private int bitMask;
+
+    public IMarginInfo(int bitMask) {
+        this.bitMask = bitMask;
+    }
+
+    public IMarginInfo(boolean top, boolean right, boolean bottom, boolean left) {
+        setMargins(top, right, bottom, left);
+    }
+
+    public void setMargins(boolean top, boolean right, boolean bottom,
+            boolean left) {
+        bitMask = top ? TOP : 0;
+        bitMask += right ? RIGHT : 0;
+        bitMask += bottom ? BOTTOM : 0;
+        bitMask += left ? LEFT : 0;
+    }
+
+    public void setMargins(IMarginInfo marginInfo) {
+        bitMask = marginInfo.bitMask;
+    }
+
+    public boolean hasLeft() {
+        return (bitMask & LEFT) == LEFT;
+    }
+
+    public boolean hasRight() {
+        return (bitMask & RIGHT) == RIGHT;
+    }
+
+    public boolean hasTop() {
+        return (bitMask & TOP) == TOP;
+    }
+
+    public boolean hasBottom() {
+        return (bitMask & BOTTOM) == BOTTOM;
+    }
+
+    public int getBitMask() {
+        return bitMask;
+    }
+
+    public void setMargins(boolean enabled) {
+        if (enabled) {
+            bitMask = TOP + RIGHT + BOTTOM + LEFT;
+        } else {
+            bitMask = 0;
+        }
+    }
+
+    public boolean equals(Object obj) {
+        if (!(obj instanceof IMarginInfo)) {
+            return false;
+        }
+
+        return ((IMarginInfo) obj).bitMask == bitMask;
+    }
+
+}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/MarginInfo.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/MarginInfo.java
deleted file mode 100644 (file)
index 68d2e2e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* 
-@ITMillApache2LicenseForJavaFiles@
- */
-
-package com.itmill.toolkit.terminal.gwt.client.ui;
-
-public class MarginInfo {
-
-    private static final int TOP = 1;
-    private static final int RIGHT = 2;
-    private static final int BOTTOM = 4;
-    private static final int LEFT = 8;
-
-    private int bitMask;
-
-    public MarginInfo(int bitMask) {
-        this.bitMask = bitMask;
-    }
-
-    public MarginInfo(boolean top, boolean right, boolean bottom, boolean left) {
-        setMargins(top, right, bottom, left);
-    }
-
-    public void setMargins(boolean top, boolean right, boolean bottom,
-            boolean left) {
-        bitMask = top ? TOP : 0;
-        bitMask += right ? RIGHT : 0;
-        bitMask += bottom ? BOTTOM : 0;
-        bitMask += left ? LEFT : 0;
-    }
-
-    public boolean hasLeft() {
-        return (bitMask & LEFT) == LEFT;
-    }
-
-    public boolean hasRight() {
-        return (bitMask & RIGHT) == RIGHT;
-    }
-
-    public boolean hasTop() {
-        return (bitMask & TOP) == TOP;
-    }
-
-    public boolean hasBottom() {
-        return (bitMask & BOTTOM) == BOTTOM;
-    }
-
-    public int getBitMask() {
-        return bitMask;
-    }
-
-    public void setMargins(boolean enabled) {
-        if (enabled) {
-            bitMask = TOP + RIGHT + BOTTOM + LEFT;
-        } else {
-            bitMask = 0;
-        }
-    }
-
-    public boolean equals(Object obj) {
-        if (!(obj instanceof MarginInfo)) {
-            return false;
-        }
-
-        return ((MarginInfo) obj).bitMask == bitMask;
-    }
-
-}
index 1e7cd824a07753b05affe721cc3107087187a0da..0e9991669db47b4bdb41af83f521397b7aea736f 100644 (file)
@@ -14,7 +14,7 @@ import com.itmill.toolkit.terminal.gwt.client.BrowserInfo;
 import com.itmill.toolkit.terminal.gwt.client.Container;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
-import com.itmill.toolkit.terminal.gwt.client.ui.MarginInfo;
+import com.itmill.toolkit.terminal.gwt.client.ui.IMarginInfo;
 
 public abstract class CellBasedLayout extends ComplexPanel implements Container {
 
@@ -28,7 +28,7 @@ public abstract class CellBasedLayout extends ComplexPanel implements Container
     public static final int ORIENTATION_HORIZONTAL = 1;
 
     protected Margins activeMargins = new Margins(0, 0, 0, 0);
-    protected MarginInfo activeMarginsInfo = new MarginInfo(-1);
+    protected IMarginInfo activeMarginsInfo = new IMarginInfo(-1);
 
     protected boolean spacingEnabled = false;
     protected final Spacing spacingFromCSS = new Spacing(12, 12);
@@ -184,7 +184,7 @@ public abstract class CellBasedLayout extends ComplexPanel implements Container
     private void updateMarginAndSpacingInfo(UIDL uidl) {
         int bitMask = uidl.getIntAttribute("margins");
         if (activeMarginsInfo.getBitMask() != bitMask) {
-            activeMarginsInfo = new MarginInfo(bitMask);
+            activeMarginsInfo = new IMarginInfo(bitMask);
             marginsNeedsRecalculation = true;
         }
         boolean spacing = uidl.getBooleanAttribute("spacing");
index 59f7aa1923eef5eb46ff0c242ba51e48a6502e83..c849c86b398cb9391ccd4b1686e49b90b08ef5f6 100644 (file)
@@ -6,7 +6,7 @@ package com.itmill.toolkit.ui;
 
 import com.itmill.toolkit.terminal.PaintException;
 import com.itmill.toolkit.terminal.PaintTarget;
-import com.itmill.toolkit.terminal.gwt.client.ui.MarginInfo;
+import com.itmill.toolkit.ui.Layout.MarginHandler;
 
 /**
  * An abstract class that defines default implementation for the {@link Layout}
@@ -18,9 +18,9 @@ import com.itmill.toolkit.terminal.gwt.client.ui.MarginInfo;
  * @since 5.0
  */
 public abstract class AbstractLayout extends AbstractComponentContainer
-        implements Layout {
+        implements Layout, MarginHandler {
 
-    protected MarginInfo margins = new MarginInfo(false, false, false, false);
+    protected MarginInfo margins = new MarginInfo(false);
 
     /*
      * (non-Javadoc)
@@ -39,6 +39,25 @@ public abstract class AbstractLayout extends AbstractComponentContainer
         requestRepaint();
     }
 
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.itmill.toolkit.ui.Layout.MarginHandler#getMargin()
+     */
+    public MarginInfo getMargin() {
+        return margins;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.itmill.toolkit.ui.Layout.MarginHandler#setMargin(MarginInfo)
+     */
+    public void setMargin(MarginInfo marginInfo) {
+        margins.setMargins(marginInfo);
+        requestRepaint();
+    }
+
     /*
      * (non-Javadoc)
      * 
index e9ed263bb5dcbff674379c049ac9bed28a97ec0d..deb72fcd91fbb34229e87d2e330e47be127d1fd4 100644 (file)
@@ -5,6 +5,7 @@
 package com.itmill.toolkit.ui;
 
 import com.itmill.toolkit.terminal.gwt.client.ui.AlignmentInfo;
+import com.itmill.toolkit.terminal.gwt.client.ui.IMarginInfo;
 
 /**
  * Extension to the {@link ComponentContainer} interface which adds the
@@ -130,4 +131,42 @@ public interface Layout extends ComponentContainer {
         public boolean isSpacingEnabled();
     }
 
+    /**
+     * This type of layout can enable margins.
+     * 
+     * TODO refine javadocs
+     */
+    public interface MarginHandler {
+        /**
+         * Enable margins for this layout.
+         * 
+         * <p>
+         * <strong>NOTE:</strong> This will only affect margins for the layout,
+         * not spacing between components inside the layout. Use
+         * {@link #setSpacing(boolean)} to add space between components in the
+         * layout.
+         * </p>
+         * 
+         * @param marginInfo MarginInfo object containing the new margins.
+         */
+        public void setMargin(MarginInfo marginInfo);
+
+        /**
+         * 
+         * @return MarginInfo containing the currently enabled margins.
+         */
+        public MarginInfo getMargin();
+    }
+
+    public static class MarginInfo extends IMarginInfo {
+
+        public MarginInfo(boolean enabled) {
+            super(enabled, enabled, enabled, enabled);
+        }
+
+        public MarginInfo(boolean top, boolean right, boolean bottom,
+                boolean left) {
+            super(top, right, bottom, left);
+        }
+    }
 }