
package com.smartgwt.client.docs;

/**
 * <h3>Form Layout</h3>
 * <b>FormItem Placement in Columns and Rows</b> <P> With the default tabular layout mechanism, items are laid out in rows
 * from left to right until the number of columns, specified by {@link
 * com.smartgwt.client.widgets.form.DynamicForm#getNumCols form.numCols}, is filled, then a new row is begun.  Flags on
 * FormItems, including {@link com.smartgwt.client.widgets.form.fields.FormItem#getStartRow startRow}, {@link
 * com.smartgwt.client.widgets.form.fields.FormItem#getEndRow endRow}, {@link
 * com.smartgwt.client.widgets.form.fields.FormItem#getColSpan colSpan} and {@link
 * com.smartgwt.client.widgets.form.fields.FormItem#getRowSpan rowSpan}, control row and column placement and spanning.  
 * <P> Note that the most common form items (TextItem, SelectItem, etc) take up <b>two</b> columns by default: one for the
 * form control itself, and one for it's title.  The default setting of {@link
 * com.smartgwt.client.widgets.form.DynamicForm#getNumCols form.numCols:2} will result in one TextItem or SelectItem per
 * row. <P> Note also that ButtonItems have both startRow:true and endRow:true by default.  You must set startRow and/or
 * endRow to <code>false</code> on a ButtonItem in order to place a button in the same row as any other item. <P> The log
 * category "tablePlacement" can be enabled from the Developer Console to watch items being placed.  You can also set
 * {@link com.smartgwt.client.widgets.form.DynamicForm#getCellBorder form.cellBorder:1} to reveal the table structure for
 * layout troubleshooting purposes. <P> <b>Row and Column Sizing</b> <P> {@link
 * com.smartgwt.client.widgets.form.DynamicForm#getColWidths colWidths} controls the widths of form columns.  FormItems
 * that have "*" for {@link com.smartgwt.client.widgets.form.fields.FormItem#getWidth width} will fill the column. 
 * FormItems with a numeric width will have that width in pixels regardless of the column's specified width, which may
 * cause the column to overflow as described under {@link com.smartgwt.client.widgets.form.DynamicForm#getFixedColWidths
 * fixedColWidths}. <P> For row heights, the largest pixel height specified on any item in the row is taken as a minimum
 * size for the row.  Then, any rows that have "*" or "%" height items will share any height not taken up by fixed-sized
 * items. <P> <b>Managing Overflow</b> <P> Forms often contain labels, data values, or instructional text which can vary in
 * size based on the skin, data values, or internationalization settings.  There are a few ways to deal with a form
 * potentially varying in size: <ol> <li> Allow scrolling when necessary, using {@link
 * com.smartgwt.client.widgets.Canvas#getOverflow overflow:auto}, either on the immediate form, or on some parent. <li>
 * Place the form in a Layout along with a component that can render any specified size, such as a {@link
 * com.smartgwt.client.widgets.grid.ListGrid}.  In this case, the Layout will automatically shrink the grid in order to
 * accommodate the form. <li> Ensure that the form can always render at a designed minimum size by reducing the number of
 * cases of variable-sized text, and testing remaining cases across all supported skins.  For example, move help text into
 * hovers on help icons, or clip  long text values at a maximum length and provide a hover to see the rest. </ol> Several
 * examples of Form Layout are available @see <a href="http://www.smartclient.com/smartgwtee/showcase/#formsLayout"
 * target="examples">here</a>.
 * @see com.smartgwt.client.widgets.form.DynamicForm#getItemLayout
 * @see com.smartgwt.client.widgets.form.DynamicForm#getNumCols
 * @see com.smartgwt.client.widgets.form.DynamicForm#getFixedColWidths
 * @see com.smartgwt.client.widgets.form.DynamicForm#getColWidths
 * @see com.smartgwt.client.widgets.form.DynamicForm#getMinColWidth
 * @see com.smartgwt.client.widgets.form.DynamicForm#getCellPadding
 * @see com.smartgwt.client.widgets.form.DynamicForm#getCellBorder
 * @see com.smartgwt.client.widgets.form.DynamicForm#getSectionVisibilityMode
 * @see com.smartgwt.client.widgets.form.fields.FormItem#getWidth
 * @see com.smartgwt.client.widgets.form.fields.FormItem#getHeight
 * @see com.smartgwt.client.widgets.form.fields.FormItem#getTitleColSpan
 * @see com.smartgwt.client.widgets.form.fields.FormItem#getColSpan
 * @see com.smartgwt.client.widgets.form.fields.FormItem#getRowSpan
 * @see com.smartgwt.client.widgets.form.fields.FormItem#getStartRow
 * @see com.smartgwt.client.widgets.form.fields.FormItem#getEndRow
 * @see com.smartgwt.client.widgets.form.fields.ButtonItem#getStartRow
 * @see com.smartgwt.client.widgets.form.fields.ButtonItem#getEndRow
 */
public interface FormLayout {
}
