package scrum.client.common;
import ilarkesto.gwt.client.AWidget;
import ilarkesto.gwt.client.Gwt;
import ilarkesto.gwt.client.TableBuilder;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
/**
* Widget, which displays fields. A field is a pair of a label and a value.
*
* @deprecated Use TableBuilder instead
* @see TableBuilder
*/
@Deprecated
public class FieldsWidget extends AWidget {
private Grid grid;
private List<Widget> widgets = new ArrayList<Widget>();
@Override
protected Widget onInitialization() {
grid = new Grid(0, 2);
grid.setWidth("100%");
grid.setStyleName("FieldsWidget-grid");
return grid;
}
@Override
protected void onUpdate() {
Gwt.update(widgets);
}
public <W extends Widget> W add(String label, W value) {
widgets.add(value);
return addWidget(label, value);
}
public Label add(String label, Label value) {
return addWidget(label, value);
}
/**
* @param label Label of the field (left).
* @param value Value widget of the field (right).
*/
public <W extends Widget> W addWidget(String label, W value) {
assert value != null;
initialize();
if (label == null) label = "";
Label l = new Label(label);
l.setStyleName("FieldsWidget-fieldLabel");
value.addStyleName("FieldsWidget-fieldValue");
l.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
int row = grid.getRowCount();
grid.resizeRows(row + 1);
if (row == 0) {
grid.getCellFormatter().setWidth(row, 0, "10%");
grid.getCellFormatter().setWidth(row, 1, "90%");
}
grid.setWidget(row, 0, l);
grid.setWidget(row, 1, value);
return value;
}
}