aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur.signell@itmill.com>2008-12-03 12:55:50 +0000
committerArtur Signell <artur.signell@itmill.com>2008-12-03 12:55:50 +0000
commit7857f67d6e442e9f1db551513adec454cffec1db (patch)
treebe8f80dbf5ad167a2471ccd2caaa6597d49c875a
parent9fce7f89912089f2e1197ce3744920f53ced6d43 (diff)
downloadvaadin-framework-7857f67d6e442e9f1db551513adec454cffec1db.tar.gz
vaadin-framework-7857f67d6e442e9f1db551513adec454cffec1db.zip
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
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/ICoordinateLayout.java8
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IFormLayout.java2
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IGridLayout.java2
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IMarginInfo.java (renamed from src/com/itmill/toolkit/terminal/gwt/client/ui/MarginInfo.java)14
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/layout/CellBasedLayout.java6
-rw-r--r--src/com/itmill/toolkit/ui/AbstractLayout.java25
-rw-r--r--src/com/itmill/toolkit/ui/Layout.java39
7 files changed, 79 insertions, 17 deletions
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<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
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/MarginInfo.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IMarginInfo.java
index 68d2e2eadf..dde94d76a3 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/MarginInfo.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IMarginInfo.java
@@ -4,7 +4,7 @@
package com.itmill.toolkit.terminal.gwt.client.ui;
-public class MarginInfo {
+public class IMarginInfo {
private static final int TOP = 1;
private static final int RIGHT = 2;
@@ -13,11 +13,11 @@ public class MarginInfo {
private int bitMask;
- public MarginInfo(int bitMask) {
+ public IMarginInfo(int bitMask) {
this.bitMask = bitMask;
}
- public MarginInfo(boolean top, boolean right, boolean bottom, boolean left) {
+ public IMarginInfo(boolean top, boolean right, boolean bottom, boolean left) {
setMargins(top, right, bottom, left);
}
@@ -29,6 +29,10 @@ public class MarginInfo {
bitMask += left ? LEFT : 0;
}
+ public void setMargins(IMarginInfo marginInfo) {
+ bitMask = marginInfo.bitMask;
+ }
+
public boolean hasLeft() {
return (bitMask & LEFT) == LEFT;
}
@@ -58,11 +62,11 @@ public class MarginInfo {
}
public boolean equals(Object obj) {
- if (!(obj instanceof MarginInfo)) {
+ if (!(obj instanceof IMarginInfo)) {
return false;
}
- return ((MarginInfo) obj).bitMask == bitMask;
+ return ((IMarginInfo) 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)
@@ -42,6 +42,25 @@ public abstract class AbstractLayout extends AbstractComponentContainer
/*
* (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)
+ *
* @see com.itmill.toolkit.ui.Layout#setMargin(boolean, boolean, boolean,
* boolean)
*/
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.
+ *
+ * <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);
+ }
+ }
}