package org.ovirt.engine.ui.webadmin.widget.form; import java.util.List; import org.ovirt.engine.ui.webadmin.widget.label.TextBoxLabel; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ValueLabel; import com.google.gwt.user.client.ui.Widget; public abstract class AbstractFormPanel extends Composite { @UiField HorizontalPanel contentPanel; // A list of detail viewers - every viewer represents a column of form items List<Grid> detailViewers; public void addFormDetailView(int numOfRows) { // Create a new column of form items Grid viewer = new Grid(numOfRows, 2); viewer.setStyleName("formPanel_viewer"); viewer.getColumnFormatter().setStyleName(0, "formPanel_viewerNamesColumn"); viewer.getColumnFormatter().setStyleName(1, "formPanel_viewerValuesColumn"); // Add the column to the list and view detailViewers.add(viewer); contentPanel.add(viewer); } public void addFormItem(FormItem item) { // Create FormItem name label Label name = new Label(item.getName()); name.setStyleName("formPanel_itemName"); if (!name.getText().isEmpty()) { name.setText(name.getText() + ":"); } // Create FormItem value label Widget widget = item.getValue(); TextBoxLabel value = new TextBoxLabel(); value.setStyleName("formPanel_itemValue"); if (widget instanceof TextBoxLabel) { value = (TextBoxLabel) widget; } else if (widget instanceof ValueLabel<?>) { value.setText(((ValueLabel<?>) widget).getElement().getInnerHTML()); } // Add FormItem at the appropriate position (by the row/column specified in FormItem) detailViewers.get(item.getColumn()).setWidget(item.getRow(), 0, name); detailViewers.get(item.getColumn()).setWidget(item.getRow(), 1, value); } public void removeFormItem(FormItem item) { Grid grid = detailViewers.get(item.getColumn()); if (grid != null) { grid.setWidget(item.getRow(), 0, new Label()); grid.setWidget(item.getRow(), 1, new Label()); } } public void clear() { for (Grid detailViewer : detailViewers) { detailViewer.clear(true); } } public void setColumnsWidth(String... columnsWidth) { for (int i = 0; i < detailViewers.size(); i++) { detailViewers.get(i).getColumnFormatter().setWidth(1, columnsWidth[i]); } } }