package org.ovirt.engine.ui.webadmin.widget.host;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.VDS;
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(final HostInterfaceListModel listModel, final VDS vds) {
grid = new Grid(1, 4);
grid.getColumnFormatter().setWidth(0, "230px"); //$NON-NLS-1$
grid.getColumnFormatter().setWidth(1, "200px"); //$NON-NLS-1$
grid.getColumnFormatter().setWidth(2, "795px"); //$NON-NLS-1$
grid.getColumnFormatter().setWidth(3, "820px"); //$NON-NLS-1$
grid.setWidth("100%"); //$NON-NLS-1$
grid.setHeight("100%"); //$NON-NLS-1$
initWidget(grid);
List<HostInterfaceLineModel> interfaceLineModels = (List<HostInterfaceLineModel>) listModel.getItems();
if (interfaceLineModels != null) {
showModels(interfaceLineModels, vds);
}
listModel.getItemsChangedEvent().addListener((ev, sender, args) -> {
HostInterfaceListModel model = (HostInterfaceListModel) sender;
List<HostInterfaceLineModel> interfaceLineModels1 = (List<HostInterfaceLineModel>) model.getItems();
showModels(interfaceLineModels1, vds);
});
listModel.getPropertyChangedEvent().addListener((ev, sender, args) -> {
String propName = args.propertyName;
if ("isSelectionAvailable".equals(propName)) { //$NON-NLS-1$
if (listModel.getItems() != null) {
showModels((List<HostInterfaceLineModel>) listModel.getItems(), vds);
}
}
});
}
InterfacePanel createInterfacePanel(HostInterfaceLineModel lineModel) {
InterfacePanel panel = new InterfacePanel();
panel.setWidth("100%"); //$NON-NLS-1$
panel.setHeight("100%"); //$NON-NLS-1$
panel.addInterfaces(lineModel.getInterfaces());
return panel;
}
BondPanel createBondPanel(HostInterfaceLineModel lineModel, VDS vds) {
BondPanel panel = new BondPanel(lineModel, vds);
panel.setWidth("100%"); //$NON-NLS-1$
panel.setHeight("100%"); //$NON-NLS-1$
return panel;
}
VLanPanel createVLanPanel(HostInterfaceLineModel lineModel) {
VLanPanel panel = new VLanPanel();
panel.setWidth("100%"); //$NON-NLS-1$
panel.setHeight("100%"); //$NON-NLS-1$
panel.addVLans(lineModel);
return panel;
}
StatisticsPanel createStatisticsPanel(HostInterfaceLineModel lineModel) {
StatisticsPanel panel = new StatisticsPanel();
panel.setWidth("100%"); //$NON-NLS-1$
panel.setHeight("100%"); //$NON-NLS-1$
panel.addInterfaces(lineModel.getInterfaces());
return panel;
}
void showModels(List<HostInterfaceLineModel> interfaceLineModels, VDS vds) {
this.setVisible(true);
grid.resizeRows(interfaceLineModels.size());
int row = 0;
for (HostInterfaceLineModel lineModel : interfaceLineModels) {
setGridWidget(row, 0, createInterfacePanel(lineModel));
setGridWidget(row, 1, createBondPanel(lineModel, vds));
setGridWidget(row, 2, createVLanPanel(lineModel));
setGridWidget(row, 3, createStatisticsPanel(lineModel));
row++;
}
}
void setGridWidget(int row, int col, Widget widget) {
grid.setWidget(row, col, widget);
grid.getCellFormatter().setHeight(row, col, "100%"); //$NON-NLS-1$
}
}