package org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.VmInterfaceType;
import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.uicommonweb.models.vms.VmInterfaceListModel;
import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
import org.ovirt.engine.ui.webadmin.idhandler.ElementIdHandler;
import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineNetworkInterfacePresenter;
import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView;
import org.ovirt.engine.ui.webadmin.uicommon.model.SearchableDetailModelProvider;
import org.ovirt.engine.ui.webadmin.widget.action.UiCommandButtonDefinition;
import org.ovirt.engine.ui.webadmin.widget.table.column.EnumColumn;
import org.ovirt.engine.ui.webadmin.widget.table.column.RxTxRateColumn;
import org.ovirt.engine.ui.webadmin.widget.table.column.SumUpColumn;
import org.ovirt.engine.ui.webadmin.widget.table.column.TextColumnWithTooltip;
import com.google.gwt.core.client.GWT;
import com.google.inject.Inject;
public class SubTabVirtualMachineNetworkInterfaceView extends AbstractSubTabTableView<VM, VmNetworkInterface, VmListModel, VmInterfaceListModel> implements SubTabVirtualMachineNetworkInterfacePresenter.ViewDef {
interface ViewIdHandler extends ElementIdHandler<SubTabVirtualMachineNetworkInterfaceView> {
ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
}
@Inject
public SubTabVirtualMachineNetworkInterfaceView(SearchableDetailModelProvider<VmNetworkInterface, VmListModel, VmInterfaceListModel> modelProvider) {
super(modelProvider);
ViewIdHandler.idHandler.generateAndSetIds(this);
initTable();
initWidget(getTable());
}
private void initTable() {
TextColumnWithTooltip<VmNetworkInterface> nameColumn = new TextColumnWithTooltip<VmNetworkInterface>() {
@Override
public String getValue(VmNetworkInterface object) {
return object.getName();
}
};
getTable().addColumn(nameColumn, "Name");
TextColumnWithTooltip<VmNetworkInterface> networkNameColumn = new TextColumnWithTooltip<VmNetworkInterface>() {
@Override
public String getValue(VmNetworkInterface object) {
return object.getNetworkName();
}
};
getTable().addColumn(networkNameColumn, "Network Name");
TextColumnWithTooltip<VmNetworkInterface> typeColumn = new EnumColumn<VmNetworkInterface, VmInterfaceType>() {
@Override
protected VmInterfaceType getRawValue(VmNetworkInterface object) {
return VmInterfaceType.forValue(object.getType());
}
};
getTable().addColumn(typeColumn, "Type");
TextColumnWithTooltip<VmNetworkInterface> macColumn = new TextColumnWithTooltip<VmNetworkInterface>() {
@Override
public String getValue(VmNetworkInterface object) {
return object.getMacAddress();
}
};
getTable().addColumn(macColumn, "MAC");
TextColumnWithTooltip<VmNetworkInterface> speedColumn = new TextColumnWithTooltip<VmNetworkInterface>() {
@Override
public String getValue(VmNetworkInterface object) {
if (object.getSpeed() != null) {
return object.getSpeed().toString();
} else {
return null;
}
}
};
getTable().addColumn(speedColumn, "Speed (Mbps)");
TextColumnWithTooltip<VmNetworkInterface> rxColumn = new RxTxRateColumn<VmNetworkInterface>() {
@Override
protected Double getRate(VmNetworkInterface object) {
return object.getStatistics().getReceiveRate();
}
@Override
protected Double getSpeed(VmNetworkInterface object) {
if (object.getSpeed() != null) {
return object.getSpeed().doubleValue();
} else {
return null;
}
}
};
getTable().addColumn(rxColumn, "Rx (Mbps)");
TextColumnWithTooltip<VmNetworkInterface> txColumn = new RxTxRateColumn<VmNetworkInterface>() {
@Override
protected Double getRate(VmNetworkInterface object) {
return object.getStatistics().getTransmitRate();
}
@Override
protected Double getSpeed(VmNetworkInterface object) {
if (object.getSpeed() != null) {
return object.getSpeed().doubleValue();
} else {
return null;
}
}
};
getTable().addColumn(txColumn, "Tx (Mbps)");
TextColumnWithTooltip<VmNetworkInterface> dropsColumn = new SumUpColumn<VmNetworkInterface>() {
@Override
protected Double[] getRawValue(VmNetworkInterface object) {
return new Double[] { object.getStatistics().getReceiveDropRate(),
object.getStatistics().getTransmitDropRate() };
}
};
getTable().addColumn(dropsColumn, "Drops (Pkts)");
getTable().addActionButton(new UiCommandButtonDefinition<VmNetworkInterface>("New") {
@Override
protected UICommand resolveCommand() {
return getDetailModel().getNewCommand();
}
});
getTable().addActionButton(new UiCommandButtonDefinition<VmNetworkInterface>("Edit") {
@Override
protected UICommand resolveCommand() {
return getDetailModel().getEditCommand();
}
});
getTable().addActionButton(new UiCommandButtonDefinition<VmNetworkInterface>("Remove") {
@Override
protected UICommand resolveCommand() {
return getDetailModel().getRemoveCommand();
}
});
}
}