diff options
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()); + } +} |