/* @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()); } }