package org.ovirt.engine.ui.webadmin.section.main.view.tab; import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.idhandler.ElementIdHandler; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabVirtualMachinePresenter; import org.ovirt.engine.ui.webadmin.section.main.view.AbstractMainTabWithDetailsTableView; import org.ovirt.engine.ui.webadmin.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.webadmin.widget.action.ImageUiCommandButtonDefinition; 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.PercentColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.webadmin.widget.table.column.UptimeColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.VmStatusColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.VmTypeColumn; import com.google.gwt.core.client.GWT; import com.google.inject.Inject; public class MainTabVirtualMachineView extends AbstractMainTabWithDetailsTableView<VM, VmListModel> implements MainTabVirtualMachinePresenter.ViewDef { interface ViewIdHandler extends ElementIdHandler<MainTabVirtualMachineView> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } @Inject public MainTabVirtualMachineView(MainModelProvider<VM, VmListModel> modelProvider, ApplicationResources resources) { super(modelProvider); ViewIdHandler.idHandler.generateAndSetIds(this); initTable(resources); initWidget(getTable()); } void initTable(ApplicationResources resources) { getTable().addColumn(new VmStatusColumn(), "", "30px"); TextColumnWithTooltip<VM> nameColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { return object.getvm_name(); } }; getTable().addColumn(nameColumn, "Name", "150px"); getTable().addColumn(new VmTypeColumn(), "", "40px"); TextColumnWithTooltip<VM> clusterColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { return object.getvds_group_name(); } }; getTable().addColumn(clusterColumn, "Cluster", "100px"); TextColumnWithTooltip<VM> hostColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { return object.getrun_on_vds_name(); } }; getTable().addColumn(hostColumn, "Host", "100px"); TextColumnWithTooltip<VM> ipColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { return object.getvm_ip(); } }; getTable().addColumn(ipColumn, "IP Address", "100px"); PercentColumn<VM> memoryColumn = new PercentColumn<VM>() { @Override public Integer getProgressValue(VM object) { return object.getusage_mem_percent(); } }; getTable().addColumn(memoryColumn, "Memory", "60px"); PercentColumn<VM> cpuColumn = new PercentColumn<VM>() { @Override public Integer getProgressValue(VM object) { return object.getusage_cpu_percent(); } }; getTable().addColumn(cpuColumn, "CPU", "60px"); PercentColumn<VM> networkColumn = new PercentColumn<VM>() { @Override public Integer getProgressValue(VM object) { return object.getusage_network_percent(); } }; getTable().addColumn(networkColumn, "Network", "60px"); TextColumnWithTooltip<VM> displayColumn = new EnumColumn<VM, DisplayType>() { @Override protected DisplayType getRawValue(VM object) { return object.getdisplay_type(); } @Override public String getValue(VM object) { if ((object.getstatus() == VMStatus.Down) || (object.getstatus() == VMStatus.ImageLocked)) return ""; else return renderer.render(getRawValue(object)); } }; getTable().addColumn(displayColumn, "Display", "70px"); TextColumnWithTooltip<VM> statusColumn = new EnumColumn<VM, VMStatus>() { @Override public VMStatus getRawValue(VM object) { return object.getstatus(); } }; getTable().addColumn(statusColumn, "Status", "90px"); TextColumnWithTooltip<VM> uptimeColumn = new UptimeColumn<VM>() { @Override public Double getRawValue(VM object) { return object.getRoundedElapsedTime(); } }; getTable().addColumn(uptimeColumn, "Uptime", "70px"); TextColumnWithTooltip<VM> loggedInUserColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { if (object.getguest_cur_user_name() == null) { return ""; } return String.valueOf(object.getguest_cur_user_name()); } }; getTable().addColumn(loggedInUserColumn, "Logged-in User", "90px"); getTable().addActionButton(new UiCommandButtonDefinition<VM>("New Server") { @Override protected UICommand resolveCommand() { return getMainModel().getNewServerCommand(); } }); getTable().addActionButton(new UiCommandButtonDefinition<VM>("New Desktop") { @Override protected UICommand resolveCommand() { return getMainModel().getNewDesktopCommand(); } }); getTable().addActionButton(new UiCommandButtonDefinition<VM>("Edit") { @Override protected UICommand resolveCommand() { return getMainModel().getEditCommand(); } }); getTable().addActionButton(new UiCommandButtonDefinition<VM>("Remove") { @Override protected UICommand resolveCommand() { return getMainModel().getRemoveCommand(); } }); // TODO: separator getTable().addActionButton(new UiCommandButtonDefinition<VM>("Run Once") { @Override protected UICommand resolveCommand() { return getMainModel().getRunOnceCommand(); } }); getTable().addActionButton(new ImageUiCommandButtonDefinition<VM>("Run", resources.runVmImage(), resources.runVmDisabledImage()) { @Override protected UICommand resolveCommand() { return getMainModel().getRunCommand(); } }); getTable().addActionButton(new ImageUiCommandButtonDefinition<VM>("Suspend", resources.pauseVmImage(), resources.pauseVmDisabledImage()) { @Override protected UICommand resolveCommand() { return getMainModel().getPauseCommand(); } }); getTable().addActionButton(new ImageUiCommandButtonDefinition<VM>("Shut down", resources.stopVmImage(), resources.stopVmDisabledImage()) { @Override protected UICommand resolveCommand() { return getMainModel().getShutdownCommand(); } }); getTable().addActionButton(new UiCommandButtonDefinition<VM>("Stop", true) { @Override protected UICommand resolveCommand() { return getMainModel().getStopCommand(); } }); // TODO: separator getTable().addActionButton(new ImageUiCommandButtonDefinition<VM>("Console", resources.consoleImage(), resources.consoleDisabledImage()) { @Override protected UICommand resolveCommand() { ConsoleModel defaultConsoleModel = getMainModel().getDefaultConsoleModel(); return defaultConsoleModel != null ? defaultConsoleModel.getConnectCommand() : null; } }); // TODO: separator getTable().addActionButton(new UiCommandButtonDefinition<VM>("Migrate") { @Override protected UICommand resolveCommand() { return getMainModel().getMigrateCommand(); } }); // TODO: separator getTable().addActionButton(new UiCommandButtonDefinition<VM>("Make Template") { @Override protected UICommand resolveCommand() { return getMainModel().getNewTemplateCommand(); } }); // TODO: separator getTable().addActionButton(new UiCommandButtonDefinition<VM>("Export") { @Override protected UICommand resolveCommand() { return getMainModel().getExportCommand(); } }); getTable().addActionButton(new UiCommandButtonDefinition<VM>("Move") { @Override protected UICommand resolveCommand() { return getMainModel().getMoveCommand(); } }); getTable().addActionButton(new UiCommandButtonDefinition<VM>("Change CD") { @Override protected UICommand resolveCommand() { return getMainModel().getChangeCdCommand(); } }); getTable().addActionButton(new UiCommandButtonDefinition<VM>("Assign Tags") { @Override protected UICommand resolveCommand() { return getMainModel().getAssignTagsCommand(); } }); } }