/* * Ext GWT - Ext for GWT * Copyright(c) 2007-2009, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ package com.extjs.gxt.ui.client.widget.layout; import com.extjs.gxt.ui.client.core.El; import com.extjs.gxt.ui.client.util.Margins; import com.extjs.gxt.ui.client.widget.Component; import com.extjs.gxt.ui.client.widget.Container; import com.extjs.gxt.ui.client.widget.Layout; /** * <code>Layout</code> that simply renders each child component into its * container. The size and position of children are not altered by this layout. * * <p/> * Margins can be applied directly to child components to control the spacing * between components. */ public class FlowLayout extends Layout { private Margins margins; private boolean removePositioning = false; /** * Creates a new layout instance. */ public FlowLayout() { } /** * Creates a new flow layout. * * @param removePostioning true to remove positioning on child components */ public FlowLayout(boolean removePostioning) { this.setRemovePositioning(removePostioning); } /** * Creates a new layout instance with the given margin. * * @param margin the margin */ public FlowLayout(int margin) { setMargins(new Margins(margin)); } /** * Returns the margins of the layout. * * @return the margins */ public Margins getMargins() { return margins; } /** * Returns true if positioning is being removed. * * @return the remove positioning state */ public boolean getRemovePositioning() { return removePositioning; } /** * Sets the margins using the give margin. * * @param margin the margin */ public void setMargin(int margin) { setMargins(new Margins(margin)); } /** * Sets the margins of the layout to be applied to the container. * * @param margins the margins in pixels */ public void setMargins(Margins margins) { this.margins = margins; } /** * True to remove positioning from the container's children (defaults to * false). * * @param removePositioning true to remove positioning */ public void setRemovePositioning(boolean removePositioning) { this.removePositioning = removePositioning; } @Override protected void onLayout(Container<?> container, El target) { super.onLayout(container, target); if (margins != null) { applyMargins(target, margins); } } @Override protected void renderComponent(Component c, int index, El target) { super.renderComponent(c, index, target); if (removePositioning) { c.setStyleAttribute("position", "static"); } if (getLayoutData(c) != null && getLayoutData(c) instanceof FlowData) { FlowData data = (FlowData) getLayoutData(c); applyMargins(c.el(), data.getMargins()); } } }