From: Artur Signell Date: Wed, 3 Dec 2008 12:55:50 +0000 (+0000) Subject: Fix for #2278 - MarginHandler refactoring. X-Git-Tag: 6.7.0.beta1~3668 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7857f67d6e442e9f1db551513adec454cffec1db;p=vaadin-framework.git Fix for #2278 - MarginHandler refactoring. - Added MarginHandler interface which contains getMargin() and setMargin(MarginInfo). - Renamed client side MarginInfo to IMarginInfo to avoid mixups. svn changeset:6081/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICoordinateLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICoordinateLayout.java index 29b9f4044a..1adfd715c0 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICoordinateLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICoordinateLayout.java @@ -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(); @@ -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 diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java index fd8abd0dd2..54a24608e1 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java @@ -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(); diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java index bf82cf8d15..3be1f34971 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java @@ -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 index 0000000000..dde94d76a3 --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IMarginInfo.java @@ -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 index 68d2e2eadf..0000000000 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/MarginInfo.java +++ /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; - } - -} diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java index 1e7cd824a0..0e9991669d 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java @@ -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"); diff --git a/src/com/itmill/toolkit/ui/AbstractLayout.java b/src/com/itmill/toolkit/ui/AbstractLayout.java index 59f7aa1923..c849c86b39 100644 --- a/src/com/itmill/toolkit/ui/AbstractLayout.java +++ b/src/com/itmill/toolkit/ui/AbstractLayout.java @@ -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) * diff --git a/src/com/itmill/toolkit/ui/Layout.java b/src/com/itmill/toolkit/ui/Layout.java index e9ed263bb5..deb72fcd91 100644 --- a/src/com/itmill/toolkit/ui/Layout.java +++ b/src/com/itmill/toolkit/ui/Layout.java @@ -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. + * + *

+ * NOTE: 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. + *

+ * + * @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); + } + } }