package org.ovirt.engine.ui.webadmin.widget.host;
import java.util.List;
import org.ovirt.engine.ui.common.widget.label.LabelWithTextTruncation;
import org.ovirt.engine.ui.common.widget.renderer.RxTxRateRenderer;
import org.ovirt.engine.ui.common.widget.renderer.SumUpRenderer;
import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterface;
import org.ovirt.engine.ui.webadmin.ApplicationConstants;
import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
import org.ovirt.engine.ui.webadmin.widget.label.NullableNumberLabel;
import com.google.gwt.dom.client.Style;
import com.google.gwt.dom.client.Style.BorderStyle;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
public class StatisticsPanel extends VerticalPanel {
public void addInterfaces(List<HostInterface> interfaces) {
for (HostInterface hostInterface : interfaces) {
add(new StatisticsElementPanel(hostInterface));
}
}
}
class StatisticsElementPanel extends HostInterfaceHorizontalPanel {
private static final ApplicationConstants constants = AssetProvider.getConstants();
private final NullableNumberLabel<Long> rxTotalLabel;
private final NullableNumberLabel<Long> txTotalLabel;
public StatisticsElementPanel(HostInterface hostInterface) {
super();
rxTotalLabel = new NullableNumberLabel<>();
txTotalLabel = new NullableNumberLabel<>();
add(createRow(hostInterface));
}
Grid createRow(final HostInterface hostInterface) {
Grid row = new Grid(1, 7);
row.setHeight("100%"); //$NON-NLS-1$
row.setWidth("100%"); //$NON-NLS-1$
Style gridStyle = row.getElement().getStyle();
gridStyle.setBorderColor("white"); //$NON-NLS-1$
gridStyle.setBorderWidth(1, Unit.PX);
gridStyle.setBorderStyle(BorderStyle.SOLID);
row.getColumnFormatter().setWidth(0, "120px"); //$NON-NLS-1$
row.getColumnFormatter().setWidth(1, "100px"); //$NON-NLS-1$
row.getColumnFormatter().setWidth(2, "100px"); //$NON-NLS-1$
row.getColumnFormatter().setWidth(3, "100px"); //$NON-NLS-1$
row.getColumnFormatter().setWidth(4, "150px"); //$NON-NLS-1$
row.getColumnFormatter().setWidth(5, "150px"); //$NON-NLS-1$
row.getColumnFormatter().setWidth(6, "100px"); //$NON-NLS-1$
// MAC
LabelWithTextTruncation macLabel = new LabelWithTextTruncation(hostInterface.getMAC());
macLabel.setWidth("120px"); //$NON-NLS-1$
row.setWidget(0, 0, macLabel);
// Speed
row.setWidget(0, 1, new Label() {
{
if (hostInterface.getSpeed() != null) {
setText(String.valueOf(hostInterface.getSpeed()));
} else {
setText(constants.unAvailablePropertyLabel());
}
}
});
// Rx rate
row.setWidget(0, 2, new Label() {
{
setText(new RxTxRateRenderer().render(new Double[] {
hostInterface.getRxRate(),
hostInterface.getSpeed() != null ? hostInterface.getSpeed().doubleValue() : null
}));
}
});
// Tx rate
row.setWidget(0, 3, new Label() {
{
setText(new RxTxRateRenderer().render(new Double[] {
hostInterface.getTxRate(),
hostInterface.getSpeed() != null ? hostInterface.getSpeed().doubleValue() : null
}));
}
});
// Rx/Tx totals
rxTotalLabel.setValue(hostInterface.getRxTotal());
txTotalLabel.setValue(hostInterface.getTxTotal());
row.setWidget(0, 4, rxTotalLabel);
row.setWidget(0, 5, txTotalLabel);
// Drops
row.setWidget(0, 6, new Label() {
{
setText(new SumUpRenderer().render(new Double[] {
hostInterface.getRxDrop(),
hostInterface.getTxDrop()
}));
}
});
return row;
}
}