package org.ovirt.engine.ui.webadmin.widget.host; import java.util.List; import org.ovirt.engine.core.compat.Event; import org.ovirt.engine.core.compat.EventArgs; import org.ovirt.engine.core.compat.IEventListener; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceLineModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceListModel; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.Widget; public class HostInterfaceForm extends Composite { private final Grid grid; @SuppressWarnings("unchecked") public HostInterfaceForm(HostInterfaceListModel listModel) { grid = new Grid(1, 3); grid.getColumnFormatter().setWidth(0, "65%"); grid.getColumnFormatter().setWidth(1, "11%"); grid.getColumnFormatter().setWidth(2, "24%"); grid.setWidth("100%"); grid.setHeight("100%"); initWidget(grid); List<HostInterfaceLineModel> interfaceLineModels = (List<HostInterfaceLineModel>) listModel.getItems(); if (interfaceLineModels != null) { showModels(interfaceLineModels); } listModel.getItemsChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { HostInterfaceListModel model = (HostInterfaceListModel) sender; List<HostInterfaceLineModel> interfaceLineModels = (List<HostInterfaceLineModel>) model.getItems(); showModels(interfaceLineModels); } }); } InterfacePanel createInterfacePanel(HostInterfaceLineModel lineModel) { InterfacePanel panel = new InterfacePanel(); panel.setWidth("100%"); panel.setHeight("100%"); panel.addInterfaces(lineModel.getInterfaces()); return panel; } BondPanel createBondPanel(HostInterfaceLineModel lineModel) { BondPanel panel = new BondPanel(lineModel); panel.setWidth("100%"); panel.setHeight("100%"); return panel; } VLanPanel createVLanPanel(HostInterfaceLineModel lineModel) { VLanPanel panel = new VLanPanel(); panel.setWidth("100%"); panel.setHeight("100%"); panel.addVLans(lineModel); return panel; } void showModels(List<HostInterfaceLineModel> interfaceLineModels) { grid.resizeRows(interfaceLineModels.size()); int row = 0; for (HostInterfaceLineModel lineModel : interfaceLineModels) { setGridWidget(row, 0, createInterfacePanel(lineModel)); setGridWidget(row, 1, createBondPanel(lineModel)); setGridWidget(row, 2, createVLanPanel(lineModel)); row++; } } void setGridWidget(int row, int col, Widget widget) { grid.setWidget(row, col, widget); grid.getCellFormatter().setHeight(row, col, "100%"); } }