package org.ovirt.engine.ui.webadmin.section.main.view.tab.storage; import java.util.ArrayList; import java.util.Date; import org.ovirt.engine.core.common.businessentities.OriginType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.storage_domains; import org.ovirt.engine.core.compat.Event; import org.ovirt.engine.core.compat.EventArgs; import org.ovirt.engine.core.compat.IEventListener; import org.ovirt.engine.core.compat.PropertyChangedEventArgs; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.VmBackupModel; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageVmBackupPresenter; 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.ActionCellTable; import org.ovirt.engine.ui.webadmin.widget.table.column.EnumColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.GeneralDateTimeColumn; import org.ovirt.engine.ui.webadmin.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.webadmin.widget.table.column.VmStatusColumn; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.cellview.client.CellTable.Resources; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.AbstractDataProvider; import com.google.gwt.view.client.HasData; import com.google.inject.Inject; public class SubTabStorageVmBackupView extends AbstractSubTabTableView<storage_domains, VM, StorageListModel, VmBackupModel> implements SubTabStorageVmBackupPresenter.ViewDef { interface ViewUiBinder extends UiBinder<Widget, SubTabStorageVmBackupView> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } @UiField HorizontalPanel mainContainer; @UiField SimplePanel vmTableContainer; @UiField SimplePanel applicationsTableContainer; ActionCellTable<String> applicationsTable; @Inject public SubTabStorageVmBackupView(SearchableDetailModelProvider<VM, StorageListModel, VmBackupModel> modelProvider) { super(modelProvider); initVmTable(); initApplicationsTable(); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); vmTableContainer.add(getTable()); applicationsTableContainer.add(applicationsTable); mainContainer.setCellWidth(vmTableContainer, "50%"); mainContainer.setCellWidth(applicationsTableContainer, "50%"); } void initVmTable() { 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"); TextColumnWithTooltip<VM> templateColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { return object.getvmt_name(); } }; getTable().addColumn(templateColumn, "Template"); TextColumnWithTooltip<VM> originColumn = new EnumColumn<VM, OriginType>() { @Override protected OriginType getRawValue(VM object) { return object.getorigin(); } }; getTable().addColumn(originColumn, "Origin"); TextColumnWithTooltip<VM> memoryColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { return String.valueOf(object.getvm_mem_size_mb()) + " MB"; } }; getTable().addColumn(memoryColumn, "Memory"); TextColumnWithTooltip<VM> cpuColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { return String.valueOf(object.getnum_of_cpus()); } }; getTable().addColumn(cpuColumn, "CPUs"); TextColumnWithTooltip<VM> diskColumn = new TextColumnWithTooltip<VM>() { @Override public String getValue(VM object) { return String.valueOf(object.getDiskMap().size()); } }; getTable().addColumn(diskColumn, "Disks"); TextColumnWithTooltip<VM> creationDateColumn = new GeneralDateTimeColumn<VM>() { @Override protected Date getRawValue(VM object) { return object.getvm_creation_date(); } }; getTable().addColumn(creationDateColumn, "Creation Date"); getTable().addActionButton(new UiCommandButtonDefinition<VM>("Restore") { @Override protected UICommand resolveCommand() { return getDetailModel().getRestoreCommand(); } }); getTable().addActionButton(new UiCommandButtonDefinition<VM>("Remove") { @Override protected UICommand resolveCommand() { return getDetailModel().getRemoveCommand(); } }); } private void initApplicationsTable() { applicationsTable = new ActionCellTable<String>(new AbstractDataProvider<String>() { @Override protected void onRangeChanged(HasData<String> display) { } }, GWT.<Resources> create(SubTableResources.class)); TextColumnWithTooltip<String> nameColumn = new TextColumnWithTooltip<String>() { @Override public String getValue(String object) { return object; } }; applicationsTable.addColumn(nameColumn, "Installed Applications"); applicationsTable.setWidth("100%"); applicationsTable.setRowData(new ArrayList<String>()); getDetailModel().getPropertyChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { PropertyChangedEventArgs pcArgs = (PropertyChangedEventArgs) args; if (getDetailModel().getAppListModel().getItems() != null) { applicationsTable.setRowData(Linq.ToList(getDetailModel().getAppListModel().getItems())); } else { applicationsTable.setRowData(new ArrayList<String>()); } } }); } }