package org.tessell.widgets;
import java.util.ArrayList;
import java.util.Iterator;
import org.tessell.gwt.dom.client.GwtElement;
import org.tessell.gwt.dom.client.IsElement;
import org.tessell.gwt.dom.client.IsStyle;
import org.tessell.gwt.user.client.ui.IsColumnsPanel;
import org.tessell.gwt.user.client.ui.IsWidget;
import org.tessell.gwt.user.client.ui.IsWidgetIteratorAdaptor;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
/** Adds displays to consecutive {@link FlowPanel}s as needed. */
public class ColumnsPanel extends FlowPanel implements IsColumnsPanel {
private final ArrayList<FlowPanel> columns = new ArrayList<FlowPanel>();
private String columnStyleName;
@Override
public void add(final int column, final com.google.gwt.user.client.ui.IsWidget isWidget) {
while (column >= columns.size()) {
final FlowPanel p = new FlowPanel();
if (columnStyleName != null) {
p.addStyleName(columnStyleName);
}
columns.add(p);
this.add(p);
}
columns.get(column).add(isWidget.asWidget());
}
public String getColumnStyleName() {
return columnStyleName;
}
public void setColumnStyleName(final String columnStyleName) {
this.columnStyleName = columnStyleName;
}
@Override
public Widget asWidget() {
return this;
}
@Override
public IsElement getIsElement() {
return new GwtElement(getElement());
}
@Override
public IsWidget getIsParent() {
return (IsWidget) getParent();
}
@Override
public IsStyle getStyle() {
return getIsElement().getStyle();
}
@Override
public Iterator<IsWidget> iteratorIsWidgets() {
return new IsWidgetIteratorAdaptor(iterator());
}
@Override
public IsWidget getIsWidget(int index) {
return (IsWidget) getWidget(index);
}
}