package org.ovirt.engine.ui.common.widget.uicommon.popup.quota; import java.util.ArrayList; import org.ovirt.engine.ui.common.CommonApplicationConstants; import org.ovirt.engine.ui.common.PopupSimpleTableResources; import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver; import org.ovirt.engine.ui.common.gin.AssetProvider; import org.ovirt.engine.ui.common.idhandler.HasElementId; import org.ovirt.engine.ui.common.widget.HasEditorDriver; import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable; import org.ovirt.engine.ui.common.widget.table.column.EmptyColumn; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.quota.ChangeQuotaItemModel; import org.ovirt.engine.ui.uicommonweb.models.quota.ChangeQuotaModel; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.cellview.client.CellTable.Resources; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; public class ChangeQuotaView extends Composite implements HasEditorDriver<ChangeQuotaModel>, HasElementId { interface Driver extends UiCommonEditorDriver<ChangeQuotaModel, ChangeQuotaView> { } interface ViewUiBinder extends UiBinder<Widget, ChangeQuotaView> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } @UiField FlowPanel listPanel; @UiField SimplePanel listHeaderPanel; @Ignore EntityModelCellTable<ListModel> listHeader; private final Driver driver = GWT.create(Driver.class); private static final CommonApplicationConstants constants = AssetProvider.getConstants(); public ChangeQuotaView() { initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); driver.initialize(this); } void updateListHeader(ChangeQuotaModel model) { String width = "100px"; //$NON-NLS-1$ listHeader = new EntityModelCellTable(false, (Resources) GWT.create( PopupSimpleTableResources.class), true); listHeader.addColumn(new EmptyColumn(), constants.elementName(), width); listHeader.addColumn(new EmptyColumn(), constants.storageDomainDisk(), width); listHeader.addColumn(new EmptyColumn(), constants.currentQuota(), width); listHeader.addColumn(new EmptyColumn(), constants.quotaDisk(), width); listHeader.setRowData(new ArrayList()); listHeader.setWidth("100%", true); //$NON-NLS-1$ listHeaderPanel.setWidget(listHeader); } @Override public void edit(ChangeQuotaModel model) { driver.edit(model); initListerners(model); updateListHeader(model); } private void initListerners(final ChangeQuotaModel model) { model.getItemsChangedEvent().addListener((ev, sender, args) -> addItems(model)); } void addItems(ChangeQuotaModel model) { listPanel.clear(); for (final ChangeQuotaItemModel itemModel : model.getItems()) { ChangeQuotaItemView itemView = new ChangeQuotaItemView(); itemView.edit(itemModel); listPanel.add(itemView); } } @Override public ChangeQuotaModel flush() { return driver.flush(); } @Override public void cleanup() { driver.cleanup(); } @Override public void setElementId(String elementId) { } }