/*
* 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.widget.Component;
import com.extjs.gxt.ui.client.widget.Container;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
/**
* A single row TableLayout.
*
* @see TableData
*/
public class TableRowLayout extends TableLayout {
private Element row;
@Override
protected Element getNextCell(Component component) {
TableData data = (TableData) getLayoutData(component);
if (data == null) {
data = new TableData();
setLayoutData(component, data);
}
if (component.getData("width") != null) {
data.setWidth((String) component.getData("width"));
}
El td = new El(DOM.createTD());
if (data.horizontalAlign != null) {
td.dom.setPropertyString("align", data.horizontalAlign.name());
} else if (cellHorizontalAlign != null) {
td.dom.setPropertyString("align", cellHorizontalAlign.name());
}
if (data.verticalAlign != null) {
td.dom.setPropertyString("vAlign", data.verticalAlign.name());
} else if (cellVerticalAlign != null) {
td.dom.setPropertyString("vAlign", cellVerticalAlign.name());
}
if (data.getPadding() > 0) {
td.dom.getStyle().setPropertyPx("padding", data.getPadding());
} else if (cellPadding > 0) {
td.dom.getStyle().setPropertyPx("padding", cellPadding);
}
if (data.getStyleName() != null) {
td.dom.setClassName(data.getStyleName());
}
if (data.getHeight() != null) {
td.dom.setPropertyString("height", data.getHeight());
}
if (data.getWidth() != null) {
td.dom.setPropertyString("width", data.getWidth());
}
if (data.getStyle() != null) {
td.applyStyles(data.getStyle());
}
DOM.appendChild(row, td.dom);
return td.dom;
}
@Override
protected void onLayout(Container<?> container, El target) {
currentColumn = 0;
currentRow = 0;
target.removeChildren();
table = DOM.createTable().cast();
if (getTableStyle() != null) {
fly(table).applyStyles(getTableStyle());
}
if (getCellPadding() != -1) {
table.setCellPadding(getCellPadding());
}
if (cellSpacing != -1) {
table.setCellSpacing(cellSpacing);
}
if (getBorder() > 0) {
table.setBorder(getBorder());
}
if (getWidth() != null) {
table.setWidth(getWidth());
}
if (getHeight() != null) {
table.setAttribute("height", getHeight());
}
tbody = DOM.createTBody();
table.appendChild(tbody);
row = DOM.createTR();
DOM.appendChild(tbody, row);
if (getInsertSpacer()) {
Element td = DOM.createTD();
fly(td).setWidth("100%");
DOM.appendChild(row, td);
}
target.dom.appendChild(table);
renderAll(container, target);
}
@Override
protected void renderComponent(Component c, int index, El target) {
if (!c.isRendered()) {
c.render(getNextCell(c));
} else {
DOM.appendChild(getNextCell(c), c.getElement());
}
}
}