diff options
author | Artur Signell <artur@vaadin.com> | 2012-04-11 19:58:26 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2012-04-12 09:58:20 +0300 |
commit | 429aeadef913b1d5f3cc932c70b54afa2a57275c (patch) | |
tree | 0a1a58ab84dd04401f225f5c1e7f9c6e0241e431 /src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java | |
parent | 3efc7b521469aa9cf98d8bdf767278aa96a40335 (diff) | |
download | vaadin-framework-429aeadef913b1d5f3cc932c70b54afa2a57275c.tar.gz vaadin-framework-429aeadef913b1d5f3cc932c70b54afa2a57275c.zip |
Moved each component to its own package on client side
Class loaders have problems with referring to static inner classes (e.g.
state classes) when they cannot load the declaring class. To deal with
this the components have been moved to their own packages and state/rpc
classes will be defined in their own Java files.
Diffstat (limited to 'src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java')
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java b/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java new file mode 100644 index 0000000000..7076120388 --- /dev/null +++ b/src/com/vaadin/terminal/gwt/client/ui/csslayout/VCssLayout.java @@ -0,0 +1,72 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.terminal.gwt.client.ui.csslayout; + +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.Widget; +import com.vaadin.terminal.gwt.client.StyleConstants; +import com.vaadin.terminal.gwt.client.ui.VMarginInfo; + +public class VCssLayout extends SimplePanel { + public static final String TAGNAME = "csslayout"; + public static final String CLASSNAME = "v-" + TAGNAME; + + FlowPane panel = new FlowPane(); + + Element margin = DOM.createDiv(); + + public VCssLayout() { + super(); + getElement().appendChild(margin); + setStyleName(CLASSNAME); + margin.setClassName(CLASSNAME + "-margin"); + setWidget(panel); + } + + @Override + protected Element getContainerElement() { + return margin; + } + + public class FlowPane extends FlowPanel { + + public FlowPane() { + super(); + setStyleName(CLASSNAME + "-container"); + } + + void addOrMove(Widget child, int index) { + if (child.getParent() == this) { + int currentIndex = getWidgetIndex(child); + if (index == currentIndex) { + return; + } + } + insert(child, index); + } + + } + + /** + * 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 + */ + protected void setMarginStyles(VMarginInfo margins) { + setStyleName(margin, VCssLayout.CLASSNAME + "-" + + StyleConstants.MARGIN_TOP, margins.hasTop()); + setStyleName(margin, VCssLayout.CLASSNAME + "-" + + StyleConstants.MARGIN_RIGHT, margins.hasRight()); + setStyleName(margin, VCssLayout.CLASSNAME + "-" + + StyleConstants.MARGIN_BOTTOM, margins.hasBottom()); + setStyleName(margin, VCssLayout.CLASSNAME + "-" + + StyleConstants.MARGIN_LEFT, margins.hasLeft()); + } +} |