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;
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;
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>();
--- /dev/null
+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();
+ }
+}
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 {
slot.setExpandRatio(expandRatio);
}
- int bitMask = uidl.getIntAttribute("margins");
- layout.updateMarginStyleNames(new VMarginInfo(bitMask));
+ layout.updateMarginStyleNames(new VMarginInfo(getState()
+ .getMarginsBitmask()));
layout.updateSpacingStyleName(uidl.getBooleanAttribute("spacing"));
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;
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() {
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;
}
}
- 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("-")) {
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;
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;
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;
cell.slot = null;
}
- int bitMask = uidl.getIntAttribute("margins");
- layout.updateMarginStyleNames(new VMarginInfo(bitMask));
+ layout.updateMarginStyleNames(new VMarginInfo(getState()
+ .getMarginsBitmask()));
layout.updateSpacingStyleName(getState().isSpacing());
}
/**
- * 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 + "-"
+ StyleConstants.MARGIN_BOTTOM, margins.hasBottom());
setStyleName(margin, VCssLayout.CLASSNAME + "-"
+ StyleConstants.MARGIN_LEFT, margins.hasLeft());
-
- setStyleName(margin, VCssLayout.CLASSNAME + "-" + "spacing", spacing);
-
}
}
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;
/**
protected MarginInfo margins = new MarginInfo(false);
+ @Override
+ public AbstractLayoutState getState() {
+ return (AbstractLayoutState) super.getState();
+ }
+
/*
* (non-Javadoc)
*
*/
public void setMargin(boolean enabled) {
margins.setMargins(enabled);
+ getState().setMarginsBitmask(margins.getBitMask());
requestRepaint();
}
*/
public void setMargin(MarginInfo marginInfo) {
margins.setMargins(marginInfo);
+ getState().setMarginsBitmask(margins.getBitMask());
requestRepaint();
}
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());
-
- }
-
}
* @VERSION@
* @since 6.5
*/
-public abstract class AbstractSplitPanel extends AbstractLayout {
+public abstract class AbstractSplitPanel extends AbstractComponentContainer {
private Unit posUnit;
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>() {
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;
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) {
public TestLayout() {
setSplitPosition(200, Sizeable.UNITS_PIXELS);
- setMargin(false);
setLocked(true);
final HorizontalSplitPanel leftSide = initLeftSide();