]> source.dussan.org Git - vaadin-framework.git/commitdiff
Moved margins to AbstractLayoutState
authorArtur Signell <artur@vaadin.com>
Tue, 3 Apr 2012 15:54:21 +0000 (18:54 +0300)
committerArtur Signell <artur@vaadin.com>
Wed, 4 Apr 2012 21:09:16 +0000 (00:09 +0300)
src/com/vaadin/terminal/gwt/client/ui/AbsoluteLayoutConnector.java
src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutConnector.java [new file with mode: 0644]
src/com/vaadin/terminal/gwt/client/ui/AbstractOrderedLayoutConnector.java
src/com/vaadin/terminal/gwt/client/ui/CssLayoutConnector.java
src/com/vaadin/terminal/gwt/client/ui/GridLayoutConnector.java
src/com/vaadin/terminal/gwt/client/ui/VCssLayout.java
src/com/vaadin/ui/AbstractLayout.java
src/com/vaadin/ui/AbstractSplitPanel.java
tests/testbench/com/vaadin/tests/components/splitpanel/AbstractSplitPanelTest.java
tests/testbench/com/vaadin/tests/layouts/CssLayoutCustomCss.java
tests/testbench/com/vaadin/tests/tickets/Ticket1983.java

index 51596adead95e115b6dec6a26c626fe7fb6cd1c4..d29f3dadb3d98788535da181191722db2f854b09 100644 (file)
@@ -12,7 +12,6 @@ import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.terminal.gwt.client.ComponentConnector;
-import com.vaadin.terminal.gwt.client.ComponentState;
 import com.vaadin.terminal.gwt.client.Connector;
 import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent;
 import com.vaadin.terminal.gwt.client.DirectionalManagedLayout;
@@ -20,6 +19,7 @@ import com.vaadin.terminal.gwt.client.VCaption;
 import com.vaadin.terminal.gwt.client.communication.RpcProxy;
 import com.vaadin.terminal.gwt.client.communication.ServerRpc;
 import com.vaadin.terminal.gwt.client.communication.StateChangeEvent;
+import com.vaadin.terminal.gwt.client.ui.AbstractLayoutConnector.AbstractLayoutState;
 import com.vaadin.terminal.gwt.client.ui.VAbsoluteLayout.AbsoluteWrapper;
 import com.vaadin.ui.AbsoluteLayout;
 
@@ -27,7 +27,7 @@ import com.vaadin.ui.AbsoluteLayout;
 public class AbsoluteLayoutConnector extends
         AbstractComponentContainerConnector implements DirectionalManagedLayout {
 
-    public static class AbsoluteLayoutState extends ComponentState {
+    public static class AbsoluteLayoutState extends AbstractLayoutState {
         // Maps each component to a position
         private Map<String, String> connectorToCssPosition = new HashMap<String, String>();
 
diff --git a/src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutConnector.java b/src/com/vaadin/terminal/gwt/client/ui/AbstractLayoutConnector.java
new file mode 100644 (file)
index 0000000..1814f9c
--- /dev/null
@@ -0,0 +1,25 @@
+package com.vaadin.terminal.gwt.client.ui;
+
+import com.vaadin.terminal.gwt.client.ComponentState;
+
+public abstract class AbstractLayoutConnector extends
+        AbstractComponentContainerConnector {
+
+    public static class AbstractLayoutState extends ComponentState {
+        private int marginsBitmask;
+
+        public int getMarginsBitmask() {
+            return marginsBitmask;
+        }
+
+        public void setMarginsBitmask(int marginsBitmask) {
+            this.marginsBitmask = marginsBitmask;
+        }
+
+    }
+
+    @Override
+    public AbstractLayoutState getState() {
+        return (AbstractLayoutState) super.getState();
+    }
+}
index fd2c92dec75e21a376fca735229026750d521ffe..c4c017920c420f298a8711c4e812a0af2509e094 100644 (file)
@@ -23,8 +23,7 @@ import com.vaadin.terminal.gwt.client.ui.layout.ComponentConnectorLayoutSlot;
 import com.vaadin.terminal.gwt.client.ui.layout.VLayoutSlot;
 
 public abstract class AbstractOrderedLayoutConnector extends
-        AbstractComponentContainerConnector implements Paintable,
-        DirectionalManagedLayout {
+        AbstractLayoutConnector implements Paintable, DirectionalManagedLayout {
 
     public interface AbstractOrderedLayoutServerRPC extends LayoutClickRPC,
             ServerRpc {
@@ -113,8 +112,8 @@ public abstract class AbstractOrderedLayoutConnector extends
             slot.setExpandRatio(expandRatio);
         }
 
-        int bitMask = uidl.getIntAttribute("margins");
-        layout.updateMarginStyleNames(new VMarginInfo(bitMask));
+        layout.updateMarginStyleNames(new VMarginInfo(getState()
+                .getMarginsBitmask()));
 
         layout.updateSpacingStyleName(uidl.getBooleanAttribute("spacing"));
 
index ac091f04845a2dccfc48e3457049335985bd6c5e..7d375501dbff981aec0ec04edfef8cd302eea042 100644 (file)
@@ -10,13 +10,9 @@ import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Style;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.Widget;
-import com.vaadin.terminal.gwt.client.ApplicationConnection;
 import com.vaadin.terminal.gwt.client.BrowserInfo;
 import com.vaadin.terminal.gwt.client.ComponentConnector;
-import com.vaadin.terminal.gwt.client.ComponentState;
 import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent;
-import com.vaadin.terminal.gwt.client.Paintable;
-import com.vaadin.terminal.gwt.client.UIDL;
 import com.vaadin.terminal.gwt.client.Util;
 import com.vaadin.terminal.gwt.client.VCaption;
 import com.vaadin.terminal.gwt.client.communication.RpcProxy;
@@ -26,10 +22,9 @@ import com.vaadin.terminal.gwt.client.ui.VCssLayout.FlowPane;
 import com.vaadin.ui.CssLayout;
 
 @Component(CssLayout.class)
-public class CssLayoutConnector extends AbstractComponentContainerConnector
-        implements Paintable {
+public class CssLayoutConnector extends AbstractLayoutConnector {
 
-    public static class CssLayoutState extends ComponentState {
+    public static class CssLayoutState extends AbstractLayoutState {
         private Map<String, String> childCss = new HashMap<String, String>();
 
         public Map<String, String> getChildCss() {
@@ -80,6 +75,9 @@ public class CssLayoutConnector extends AbstractComponentContainerConnector
     public void onStateChanged(StateChangeEvent stateChangeEvent) {
         super.onStateChanged(stateChangeEvent);
 
+        getWidget().setMarginStyles(
+                new VMarginInfo(getState().getMarginsBitmask()));
+
         for (ComponentConnector child : getChildren()) {
             if (!getState().getChildCss().containsKey(child.getConnectorId())) {
                 continue;
@@ -130,18 +128,6 @@ public class CssLayoutConnector extends AbstractComponentContainerConnector
         }
     }
 
-    public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
-
-        if (!isRealUpdate(uidl)) {
-            return;
-        }
-
-        getWidget().setMarginAndSpacingStyles(
-                new VMarginInfo(uidl.getIntAttribute("margins")),
-                uidl.hasAttribute("spacing"));
-
-    }
-
     private static final String makeCamelCase(String cssProperty) {
         // TODO this might be cleaner to implement with regexp
         while (cssProperty.contains("-")) {
index 5e87bd83a818509620b045bc0733de7a870aa382..be7defc2f6c00961837d4eb446e6780722e325a9 100644 (file)
@@ -11,7 +11,6 @@ import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.terminal.gwt.client.ApplicationConnection;
 import com.vaadin.terminal.gwt.client.ComponentConnector;
-import com.vaadin.terminal.gwt.client.ComponentState;
 import com.vaadin.terminal.gwt.client.ConnectorMap;
 import com.vaadin.terminal.gwt.client.DirectionalManagedLayout;
 import com.vaadin.terminal.gwt.client.Paintable;
@@ -20,6 +19,7 @@ import com.vaadin.terminal.gwt.client.VCaption;
 import com.vaadin.terminal.gwt.client.communication.RpcProxy;
 import com.vaadin.terminal.gwt.client.communication.ServerRpc;
 import com.vaadin.terminal.gwt.client.communication.StateChangeEvent;
+import com.vaadin.terminal.gwt.client.ui.AbstractLayoutConnector.AbstractLayoutState;
 import com.vaadin.terminal.gwt.client.ui.VGridLayout.Cell;
 import com.vaadin.terminal.gwt.client.ui.layout.VLayoutSlot;
 import com.vaadin.ui.GridLayout;
@@ -28,7 +28,7 @@ import com.vaadin.ui.GridLayout;
 public class GridLayoutConnector extends AbstractComponentContainerConnector
         implements Paintable, DirectionalManagedLayout {
 
-    public static class GridLayoutState extends ComponentState {
+    public static class GridLayoutState extends AbstractLayoutState {
         private boolean spacing = false;
         private int rows = 0;
         private int columns = 0;
@@ -169,8 +169,8 @@ public class GridLayoutConnector extends AbstractComponentContainerConnector
             cell.slot = null;
         }
 
-        int bitMask = uidl.getIntAttribute("margins");
-        layout.updateMarginStyleNames(new VMarginInfo(bitMask));
+        layout.updateMarginStyleNames(new VMarginInfo(getState()
+                .getMarginsBitmask()));
 
         layout.updateSpacingStyleName(getState().isSpacing());
 
index 64f7ba3240fef828d3544a455ac3dcc4aad4141f..69c3659d3f8bc48b12fbcee16be748c591bc9ae3 100644 (file)
@@ -52,16 +52,13 @@ public class VCssLayout extends SimplePanel {
     }
 
     /**
-     * Sets CSS classes for margin and spacing based on the given parameters.
+     * Sets CSS classes for margin based on the given parameters.
      * 
      * @param margins
      *            A {@link VMarginInfo} object that provides info on
      *            top/left/bottom/right margins
-     * @param spacing
-     *            true to enable spacing, false otherwise
      */
-    protected void setMarginAndSpacingStyles(VMarginInfo margins,
-            boolean spacing) {
+    protected void setMarginStyles(VMarginInfo margins) {
         setStyleName(margin, VCssLayout.CLASSNAME + "-"
                 + StyleConstants.MARGIN_TOP, margins.hasTop());
         setStyleName(margin, VCssLayout.CLASSNAME + "-"
@@ -70,8 +67,5 @@ public class VCssLayout extends SimplePanel {
                 + StyleConstants.MARGIN_BOTTOM, margins.hasBottom());
         setStyleName(margin, VCssLayout.CLASSNAME + "-"
                 + StyleConstants.MARGIN_LEFT, margins.hasLeft());
-
-        setStyleName(margin, VCssLayout.CLASSNAME + "-" + "spacing", spacing);
-
     }
 }
index 9f9a929a2905619dec9094564cf1deb3646baf3e..7d982964e2b4ffd3b0ad874c443cfc308b876fd9 100644 (file)
@@ -4,8 +4,7 @@
 
 package com.vaadin.ui;
 
-import com.vaadin.terminal.PaintException;
-import com.vaadin.terminal.PaintTarget;
+import com.vaadin.terminal.gwt.client.ui.AbstractLayoutConnector.AbstractLayoutState;
 import com.vaadin.ui.Layout.MarginHandler;
 
 /**
@@ -23,6 +22,11 @@ public abstract class AbstractLayout extends AbstractComponentContainer
 
     protected MarginInfo margins = new MarginInfo(false);
 
+    @Override
+    public AbstractLayoutState getState() {
+        return (AbstractLayoutState) super.getState();
+    }
+
     /*
      * (non-Javadoc)
      * 
@@ -30,6 +34,7 @@ public abstract class AbstractLayout extends AbstractComponentContainer
      */
     public void setMargin(boolean enabled) {
         margins.setMargins(enabled);
+        getState().setMarginsBitmask(margins.getBitMask());
         requestRepaint();
     }
 
@@ -49,6 +54,7 @@ public abstract class AbstractLayout extends AbstractComponentContainer
      */
     public void setMargin(MarginInfo marginInfo) {
         margins.setMargins(marginInfo);
+        getState().setMarginsBitmask(margins.getBitMask());
         requestRepaint();
     }
 
@@ -60,21 +66,8 @@ public abstract class AbstractLayout extends AbstractComponentContainer
     public void setMargin(boolean topEnabled, boolean rightEnabled,
             boolean bottomEnabled, boolean leftEnabled) {
         margins.setMargins(topEnabled, rightEnabled, bottomEnabled, leftEnabled);
+        getState().setMarginsBitmask(margins.getBitMask());
         requestRepaint();
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.vaadin.ui.AbstractComponent#paintContent(com.vaadin
-     * .terminal.PaintTarget)
-     */
-    @Override
-    public void paintContent(PaintTarget target) throws PaintException {
-
-        // Add margin info. Defaults to false.
-        target.addAttribute("margins", margins.getBitMask());
-
-    }
-
 }
index b57600834407c447115ad2e88f8452dd8a7107a5..3ab80444c2965d70dae334f3ae4c41e6aad5299c 100644 (file)
@@ -29,7 +29,7 @@ import com.vaadin.tools.ReflectTools;
  * @VERSION@
  * @since 6.5
  */
-public abstract class AbstractSplitPanel extends AbstractLayout {
+public abstract class AbstractSplitPanel extends AbstractComponentContainer {
 
     private Unit posUnit;
 
index 861bdc1aabe1a4da95c0d3495ba1f69280cb7d3f..1f7b6b7cbe655575b7b7eed30589ecf11ab78690 100644 (file)
@@ -2,13 +2,14 @@ package com.vaadin.tests.components.splitpanel;
 
 import com.vaadin.terminal.Sizeable;
 import com.vaadin.terminal.Sizeable.Unit;
-import com.vaadin.tests.components.AbstractLayoutTest;
+import com.vaadin.tests.components.AbstractComponentContainerTest;
 import com.vaadin.ui.AbstractSplitPanel;
 import com.vaadin.ui.AbstractSplitPanel.SplitterClickEvent;
 import com.vaadin.ui.AbstractSplitPanel.SplitterClickListener;
 
 public abstract class AbstractSplitPanelTest<T extends AbstractSplitPanel>
-        extends AbstractLayoutTest<T> implements SplitterClickListener {
+        extends AbstractComponentContainerTest<T> implements
+        SplitterClickListener {
 
     private Command<T, Boolean> splitterClickListenerCommand = new Command<T, Boolean>() {
 
index b2712fc54c9ecfa874f432d08d6cbf7289234f75..5ddf196bcc628c4e051357c5aa42bda8cecdbfcf 100644 (file)
@@ -3,10 +3,13 @@ package com.vaadin.tests.layouts;
 import java.util.HashMap;
 import java.util.Map;
 
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
 import com.vaadin.tests.components.TestBase;
 import com.vaadin.ui.Button;
 import com.vaadin.ui.Button.ClickEvent;
 import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.CheckBox;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.CssLayout;
 import com.vaadin.ui.NativeButton;
@@ -31,6 +34,21 @@ public class CssLayoutCustomCss extends TestBase implements ClickListener {
         layout.addComponent(createButton("color:red"));
         layout.addComponent(createButton("color: blue"));
         layout.addComponent(createButton("color: green"));
+
+        layout.addComponent(createMarginsToggle());
+    }
+
+    private Component createMarginsToggle() {
+        final CheckBox cb = new CheckBox("Margins");
+        cb.setImmediate(true);
+        cb.addListener(new ValueChangeListener() {
+
+            public void valueChange(ValueChangeEvent event) {
+                layout.setMargin(cb.getValue());
+            }
+        });
+
+        return cb;
     }
 
     private Component createButton(String string) {
index c68ccf08f9c0970359be5c82d20610bccd4c932c..5bd0cd2ae6ed985534328f01c14c60327c641a6d 100644 (file)
@@ -34,7 +34,6 @@ public class Ticket1983 extends Application.LegacyApplication {
         public TestLayout() {
 
             setSplitPosition(200, Sizeable.UNITS_PIXELS);
-            setMargin(false);
             setLocked(true);
 
             final HorizontalSplitPanel leftSide = initLeftSide();