- Added MarginHandler interface which contains getMargin() and setMargin(MarginInfo).
- Renamed client side MarginInfo to IMarginInfo to avoid mixups.
svn changeset:6081/svn branch:trunk
// 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() {
DOM.setStyleAttribute(getElement(), "zoom", "1");
}
- marginInfo = new MarginInfo(0);
+ marginInfo = new IMarginInfo(0);
// Init data structures
componentList = new ArrayList<Widget>();
// 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
}
public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
- final MarginInfo margins = new MarginInfo(uidl
+ final IMarginInfo margins = new IMarginInfo(uidl
.getIntAttribute("margins"));
Element margin = getElement();
}
private void handleMargins(UIDL uidl) {
- final MarginInfo margins = new MarginInfo(uidl
+ final IMarginInfo margins = new IMarginInfo(uidl
.getIntAttribute("margins"));
String styles = CLASSNAME + "-margin";
--- /dev/null
+/*
+@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;
+ }
+
+}
+++ /dev/null
-/*
-@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;
- }
-
-}
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 {
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);
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");
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}
* @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)
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)
*
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
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);
+ }
+ }
}