package org.ovirt.engine.ui.userportal.client.binders.specific;
import org.ovirt.engine.ui.uicommon.models.Model;
import org.ovirt.engine.ui.uicommon.models.vms.VmMonitorModel;
import org.ovirt.engine.ui.userportal.client.binders.RendererType;
import org.ovirt.engine.ui.userportal.client.binders.interfaces.EntityModelBinder;
import org.ovirt.engine.ui.userportal.client.components.UserPortalTimerFactory;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Timer;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.data.RecordList;
import com.smartgwt.client.widgets.viewer.DetailViewerField;
public class VmMonitorModelBinder implements EntityModelBinder {
VmMonitorModel model;
RendererType rendererType = RendererType.MonitorBarsViewer;
private static final int AUTO_REFRESH_INTERVAL = 1000;
@Override
public RecordList calcRecords() {
Record r = new Record();
r.setAttribute("cpuUsage", model.getCpuUsage());
r.setAttribute("memoryUsage", model.getMemoryUsage());
r.setAttribute("networkUsage", model.getNetworkUsage());
RecordList records = new RecordList();
records.add(r);
return records;
}
@Override
public void setModel(Model model) {
this.model = (VmMonitorModel)model;
}
@Override
public DetailViewerField[] getFields() {
return null;
}
@Override
public Integer[] getNumOfRowsInColumn() {
return null;
}
@Override
public RendererType getRendererType() {
return rendererType;
}
public void startRefreshTimer() {
GWT.log("Starting monitor refresh timer");
monitorRefreshTimer.run();
}
public void cancelRefreshTimer() {
GWT.log("Stopping monitor refresh timer");
monitorRefreshTimer.cancel();
}
private Timer monitorRefreshTimer = UserPortalTimerFactory.factoryTimer("VmMonitorRefreshTimer", new Timer() {
@Override
public void run() {
model.getRefreshCommand().Execute();
this.schedule(AUTO_REFRESH_INTERVAL);
}
});
}