Omer Frenkel has uploaded a new change for review. Change subject: frontend: add vm-devices sub tab ......................................................................
frontend: add vm-devices sub tab show the vm devices per vm in a new sub tab http://www.ovirt.org/Features/Expose_VM_Devices Change-Id: I73ab7de18bd05ef2f19a6abb0c9afbc7d88ff6e4 Signed-off-by: Omer Frenkel <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDevicesListModelTable.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterVmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolVmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateVmListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDevicesListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineAffinityGroupPresenter.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachinePermissionPresenter.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineSessionsPresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineVmDevicePresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineVmDevicesView.java 20 files changed, 355 insertions(+), 14 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/95/39795/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index 19a3a92..7ba2d27 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -2089,4 +2089,28 @@ @DefaultStringValue("Creation Date") String permissionsCreationDate(); + + @DefaultStringValue("General Device Type") + String deviceGeneralType(); + + @DefaultStringValue("Device Type") + String deviceType(); + + @DefaultStringValue("Address") + String deviceAddress(); + + @DefaultStringValue("Read Only") + String deviceReadOnlyAlias(); + + @DefaultStringValue("Plugged") + String devicePluggedAlias(); + + @DefaultStringValue("Boot Order") + String deviceBootOrderAlias(); + + @DefaultStringValue("Managed") + String deviceManagedAlias(); + + @DefaultStringValue("Spec Params") + String deviceSpecParamsAlias(); } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDevicesListModelTable.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDevicesListModelTable.java new file mode 100644 index 0000000..3fc0a6f --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmDevicesListModelTable.java @@ -0,0 +1,146 @@ +package org.ovirt.engine.ui.common.widget.uicommon.vm; + +import com.google.gwt.event.shared.EventBus; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.ui.common.CommonApplicationConstants; +import org.ovirt.engine.ui.common.gin.AssetProvider; +import org.ovirt.engine.ui.common.system.ClientStorage; +import org.ovirt.engine.ui.common.uicommon.model.SearchableTableModelProvider; +import org.ovirt.engine.ui.common.widget.table.column.AbstractCheckboxColumn; +import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn; +import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; + +public class VmDevicesListModelTable extends AbstractModelBoundTableWidget<VmDevice, VmDevicesListModel<VM>> { + private final static CommonApplicationConstants constants = AssetProvider.getConstants(); + + public VmDevicesListModelTable( + SearchableTableModelProvider<VmDevice, VmDevicesListModel<VM>> modelProvider, + EventBus eventBus, ClientStorage clientStorage) { + super(modelProvider, eventBus, clientStorage, false); + } + + @Override + public void initTable() { + getTable().enableColumnResizing(); + + addGeneralTypeColumn(); + addDeviceTypeColumn(); + addAddressColumn(); + addBootOrderColumn(); + addReadOnlyColumn(); + addPluggedColumn(); + addManagedColumn(); + addSpecParamsColumn(); + } + + private void addGeneralTypeColumn() { + // TODO: replace with icon + final AbstractTextColumn<VmDevice> deviceGeneralTypeColumn = new AbstractTextColumn<VmDevice>() { + @Override + public String getValue(VmDevice device) { + return device.getType().name(); + } + }; + deviceGeneralTypeColumn.makeSortable(); + getTable().addColumn(deviceGeneralTypeColumn, constants.deviceGeneralType(), "120px"); //$NON-NLS-1$ + } + + private void addDeviceTypeColumn() { + final AbstractTextColumn<VmDevice> deviceTypeColumn = new AbstractTextColumn<VmDevice>() { + @Override + public String getValue(VmDevice device) { + return device.getDevice(); + } + }; + deviceTypeColumn.makeSortable(); + getTable().addColumn(deviceTypeColumn, constants.deviceType(), "70px"); //$NON-NLS-1$ + } + + private void addAddressColumn() { + final AbstractTextColumn<VmDevice> deviceAddressColumn = new AbstractTextColumn<VmDevice>() { + @Override + public String getValue(VmDevice device) { + return device.getAddress(); + } + }; + deviceAddressColumn.makeSortable(); + getTable().addColumn(deviceAddressColumn, constants.deviceAddress(), "395px"); //$NON-NLS-1$ + } + + private void addReadOnlyColumn() { + final AbstractCheckboxColumn<VmDevice> readonlyColumn = new AbstractCheckboxColumn<VmDevice>() { + @Override + public Boolean getValue(VmDevice object) { + return object.getIsReadOnly(); + } + + @Override + protected boolean canEdit(VmDevice object) { + return false; + } + }; + readonlyColumn.makeSortable(); + getTable().addColumn(readonlyColumn, constants.deviceReadOnlyAlias(), "70px"); //$NON-NLS-1$ + } + + private void addPluggedColumn() { + final AbstractCheckboxColumn<VmDevice> pluggedColumn = new AbstractCheckboxColumn<VmDevice>() { + @Override + public Boolean getValue(VmDevice object) { + return object.getIsPlugged(); + } + + @Override + protected boolean canEdit(VmDevice object) { + return false; + } + }; + pluggedColumn.makeSortable(); + getTable().addColumn(pluggedColumn, constants.devicePluggedAlias(), "70px"); //$NON-NLS-1$ + } + + private void addManagedColumn() { + final AbstractCheckboxColumn<VmDevice> managedColumn = new AbstractCheckboxColumn<VmDevice>() { + @Override + public Boolean getValue(VmDevice object) { + return object.getIsManaged(); + } + + @Override + protected boolean canEdit(VmDevice object) { + return false; + } + }; + managedColumn.makeSortable(); + getTable().addColumn(managedColumn, constants.deviceManagedAlias(), "70px"); //$NON-NLS-1$ + } + + private void addBootOrderColumn() { + final AbstractTextColumn<VmDevice> bootOrderColumn = new AbstractTextColumn<VmDevice>() { + @Override + public String getValue(VmDevice device) { + if (device.getBootOrder() != 0) { + return String.valueOf(device.getBootOrder()); + } else { + return ""; //$NON-NLS-1$ + } + } + }; + bootOrderColumn .makeSortable(); + getTable().addColumn(bootOrderColumn , constants.deviceBootOrderAlias(), "70px"); //$NON-NLS-1$ + } + + private void addSpecParamsColumn() { + final AbstractTextColumn<VmDevice> specParamsColumn = new AbstractTextColumn<VmDevice>() { + @Override + public String getValue(VmDevice device) { + return device.getSpecParams().toString(); + } + }; + specParamsColumn .makeSortable(); + getTable().addColumn(specParamsColumn , constants.deviceSpecParamsAlias(), "300px"); //$NON-NLS-1$ + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java index 53e67de..81d8fa6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java @@ -34,6 +34,8 @@ applications("applications", HelpTagType.UNKNOWN), //$NON-NLS-1$ + vm_devices("vm_devices", HelpTagType.UNKNOWN), //$NON-NLS-1$ + assign_network("assign_network", HelpTagType.WEBADMIN, "Networks main tab -> Clusters sub-tab -> Manage Network"), //$NON-NLS-1$ //$NON-NLS-2$ assign_networks("assign_networks", HelpTagType.WEBADMIN, "Cluster Tab > Logical Network Sub-Tab > Manage Networks"), //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterVmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterVmListModel.java index 89ce963..82884f0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterVmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterVmListModel.java @@ -9,6 +9,7 @@ import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.VmAffinityGroupListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmsModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmEventListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel; @@ -33,7 +34,8 @@ PermissionListModel<VM> permissionListModel, VmAffinityGroupListModel vmAffinityGroupListModel, VmSessionsModel vmSessionsModel, - Provider<ImportVmsModel> importVmsModelProvider) { + Provider<ImportVmsModel> importVmsModelProvider, + VmDevicesListModel vmDevicesListModel) { super(vmGeneralModel, vmInterfaceListModel, vmDiskListModel, @@ -43,7 +45,8 @@ permissionListModel, vmAffinityGroupListModel, vmSessionsModel, - importVmsModelProvider); + importVmsModelProvider, + vmDevicesListModel); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java index 7f761ee..e27bfe6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java @@ -11,6 +11,7 @@ import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.VmAffinityGroupListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmsModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmEventListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel; @@ -34,9 +35,11 @@ PermissionListModel<VM> permissionListModel, VmAffinityGroupListModel vmAffinityGroupListModel, VmSessionsModel vmSessionsModel, - Provider<ImportVmsModel> importVmsModelProvider) { + Provider<ImportVmsModel> importVmsModelProvider, + VmDevicesListModel vmDevicesListModel) { super(vmGeneralModel, vmInterfaceListModel, vmDiskListModel, vmSnapshotListModel, vmEventListModel, - vmAppListModel, permissionListModel, vmAffinityGroupListModel, vmSessionsModel, importVmsModelProvider); + vmAppListModel, permissionListModel, vmAffinityGroupListModel, vmSessionsModel, importVmsModelProvider, + vmDevicesListModel); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolVmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolVmListModel.java index 5060383..4c335d7 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolVmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolVmListModel.java @@ -18,6 +18,7 @@ import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.VmAffinityGroupListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmsModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmEventListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel; @@ -50,9 +51,11 @@ final VmDiskListModel vmDiskListModel, final VmSnapshotListModel vmSnapshotListModel, final VmEventListModel vmEventListModel, final VmAppListModel<VM> vmAppListModel, final PermissionListModel<VM> permissionListModel, final VmAffinityGroupListModel vmAffinityGroupListModel, - final VmSessionsModel vmSessionsModel, final Provider<ImportVmsModel> importVmsModelProvider) { + final VmSessionsModel vmSessionsModel, final Provider<ImportVmsModel> importVmsModelProvider, + final VmDevicesListModel vmDevicesListModel) { super(vmGeneralModel, vmInterfaceListModel, vmDiskListModel, vmSnapshotListModel, vmEventListModel, - vmAppListModel, permissionListModel, vmAffinityGroupListModel, vmSessionsModel, importVmsModelProvider); + vmAppListModel, permissionListModel, vmAffinityGroupListModel, vmSessionsModel, importVmsModelProvider, + vmDevicesListModel); setTitle(ConstantsManager.getInstance().getConstants().virtualMachinesTitle()); setHelpTag(HelpTag.virtual_machines); setHashName("virtual_machines"); //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateVmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateVmListModel.java index d73bd0c..091a08c 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateVmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateVmListModel.java @@ -7,6 +7,7 @@ import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.VmAffinityGroupListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmsModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmEventListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel; @@ -27,9 +28,10 @@ final VmEventListModel vmEventListModel, final VmAppListModel<VM> vmAppListModel, final PermissionListModel<VM> permissionListModel, final VmAffinityGroupListModel vmAffinityGroupListModel, final VmSessionsModel vmSessionsModel, - Provider<ImportVmsModel> importVmsModelProvider) { + Provider<ImportVmsModel> importVmsModelProvider, final VmDevicesListModel vmDevicesListModel) { super(vmGeneralModel, vmInterfaceListModel, vmDiskListModel, vmSnapshotListModel, vmEventListModel, - vmAppListModel, permissionListModel, vmAffinityGroupListModel, vmSessionsModel, importVmsModelProvider); + vmAppListModel, permissionListModel, vmAffinityGroupListModel, vmSessionsModel, importVmsModelProvider, + vmDevicesListModel); setTitle(ConstantsManager.getInstance().getConstants().virtualMachinesTitle()); setHelpTag(HelpTag.virtual_machines); setHashName("virtual_machines"); //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDevicesListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDevicesListModel.java new file mode 100644 index 0000000..a8dc2c8 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDevicesListModel.java @@ -0,0 +1,37 @@ +package org.ovirt.engine.ui.uicommonweb.models.vms; + +import org.ovirt.engine.core.common.businessentities.BusinessEntity; +import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class VmDevicesListModel <E extends BusinessEntity<Guid>> extends SearchableListModel<E, VmDevice> { + public VmDevicesListModel() { + setTitle(ConstantsManager.getInstance().getConstants().vmDevicesTitle()); + setHelpTag(HelpTag.vm_devices); + setHashName("vm_devices"); //$NON-NLS-1$ + } + + @Override + protected void onEntityChanged() { + super.onEntityChanged(); + getSearchCommand().execute(); + } + + + @Override + protected void syncSearch() { + if (getEntity() != null) { + super.syncSearch(VdcQueryType.GetVmDevicesForVm, new IdQueryParameters(getEntity().getId())); + } + } + + @Override + protected String getListName() { + return "VmDevicesListModel"; //$NON-NLS-1$ + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index 16c450c..51fb4d1 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -444,9 +444,10 @@ final VmDiskListModel vmDiskListModel, final VmSnapshotListModel vmSnapshotListModel, final VmEventListModel vmEventListModel, final VmAppListModel<VM> vmAppListModel, final PermissionListModel<VM> permissionListModel, final VmAffinityGroupListModel vmAffinityGroupListModel, - final VmSessionsModel vmSessionsModel, final Provider<ImportVmsModel> importVmsModelProvider) { + final VmSessionsModel vmSessionsModel, final Provider<ImportVmsModel> importVmsModelProvider, + final VmDevicesListModel vmDevicesListModel) { setDetailList(vmGeneralModel, vmInterfaceListModel, vmDiskListModel, vmSnapshotListModel, vmEventListModel, - vmAppListModel, permissionListModel, vmAffinityGroupListModel, vmSessionsModel); + vmAppListModel, permissionListModel, vmAffinityGroupListModel, vmSessionsModel, vmDevicesListModel); this.importVmsModelProvider = importVmsModelProvider; setTitle(ConstantsManager.getInstance().getConstants().virtualMachinesTitle()); setHelpTag(HelpTag.virtual_machines); @@ -509,7 +510,7 @@ final VmDiskListModel vmDiskListModel, final VmSnapshotListModel vmSnapshotListModel, final VmEventListModel vmEventListModel, final VmAppListModel<VM> vmAppListModel, final PermissionListModel<VM> permissionListModel, final VmAffinityGroupListModel vmAffinityGroupListModel, - final VmSessionsModel vmSessionsModel) { + final VmSessionsModel vmSessionsModel, final VmDevicesListModel vmDevicesListModel) { List<HasEntity<VM>> list = new ArrayList<>(); list.add(vmGeneralModel); list.add(vmInterfaceListModel); @@ -518,6 +519,7 @@ list.add(vmSnapshotListModel); list.add(vmEventListModel); list.add(vmAppListModel); + list.add(vmDevicesListModel); list.add(permissionListModel); list.add(vmAffinityGroupListModel); list.add(vmSessionsModel); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java index 6d17aca..8f8c7b4 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java @@ -182,6 +182,9 @@ public static final String virtualMachineApplicationSubTabPlace = virtualMachineMainTabPlace + SUB_TAB_PREFIX + "applications"; //$NON-NLS-1$ + public static final String virtualMachineVmDeviceSubTabPlace = virtualMachineMainTabPlace + SUB_TAB_PREFIX + + "vm_devices"; //$NON-NLS-1$ + public static final String virtualMachineAffinityGroupsSubTabPlace = virtualMachineMainTabPlace + SUB_TAB_PREFIX + "affinity_groups"; //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index 0447ce7..8d6f717 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -2697,4 +2697,7 @@ @DefaultStringValue("Warning : Recommendations for geo-replication not met -") String geoReplicationRecommendedConfigViolation(); + + @DefaultStringValue("VM Devices") + String vmDevicesTitle(); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index 3808af5..3e92840 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -4263,4 +4263,7 @@ @DefaultStringValue("Warning : Recommendations for geo-replication not met -") String geoReplicationRecommendedConfigViolation(); + + @DefaultStringValue("Vm Devices") + String virtualMachineVmDevicesSubTabLabel(); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java index 9ae6166..747e678 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java @@ -15,6 +15,7 @@ import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VmPool; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.event_subscriber; @@ -151,6 +152,7 @@ import org.ovirt.engine.ui.uicommonweb.models.users.UserQuotaListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.DiskModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmEventListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel; @@ -301,6 +303,8 @@ SearchableDetailModelProvider<String, VmListModel<Void>, VmAppListModel<VM>> getSubTabVirtualMachineApplicationModelProvider(); + SearchableDetailModelProvider<VmDevice, VmListModel<Void>, VmDevicesListModel<VM>> getSubTabVirtualMachineVmDeviceModelProvider(); + SearchableDetailModelProvider<AffinityGroup, VmListModel<Void>, VmAffinityGroupListModel> getSubTabVirtualMachineAffinityGroupModelProvider(); SearchableDetailModelProvider<Permission, VmListModel<Void>, PermissionListModel<VM>> getSubTabVirtualMachinePermissionModelProvider(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java index 3b3e576..55bce8b 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java @@ -260,6 +260,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineSessionsPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineSnapshotPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineVirtualDiskPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineVmDevicePresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.VirtualMachineSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.view.AboutPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.HeaderView; @@ -518,6 +519,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineSessionsView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineSnapshotView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineVirtualDiskView; +import org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineVmDevicesView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.VirtualMachineSubTabPanelView; /** @@ -901,6 +903,10 @@ SubTabVirtualMachineApplicationPresenter.ViewDef.class, SubTabVirtualMachineApplicationView.class, SubTabVirtualMachineApplicationPresenter.ProxyDef.class); + bindPresenter(SubTabVirtualMachineVmDevicePresenter.class, + SubTabVirtualMachineVmDevicePresenter.ViewDef.class, + SubTabVirtualMachineVmDevicesView.class, + SubTabVirtualMachineVmDevicePresenter.ProxyDef.class); bindPresenter(SubTabVirtualMachineAffinityGroupPresenter.class, SubTabVirtualMachineAffinityGroupPresenter.ViewDef.class, SubTabVirtualMachineAffinityGroupView.class, diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java index 48b1ea2..ea63c68 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.businessentities.Permission; import org.ovirt.engine.core.common.businessentities.Snapshot; import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.storage.Disk; import org.ovirt.engine.core.common.scheduling.AffinityGroup; @@ -32,6 +33,7 @@ import org.ovirt.engine.ui.uicommonweb.models.vms.EditDiskModel; import org.ovirt.engine.ui.uicommonweb.models.vms.NewDiskModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmEventListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel; @@ -386,6 +388,7 @@ bind(VmAffinityGroupListModel.class).in(Singleton.class); bind(new TypeLiteral<VmAppListModel<VM>>() {}).in(Singleton.class); bind(new TypeLiteral<PermissionListModel<VM>>(){}).in(Singleton.class); + bind(new TypeLiteral<VmDevicesListModel<VM>>() {}).in(Singleton.class); // Form Detail Models bind(new TypeLiteral<DetailModelProvider<VmListModel<Void>, VmGeneralModel>>(){}) @@ -399,6 +402,9 @@ // Permission Detail Model bind(new TypeLiteral<SearchableDetailModelProvider<Permission, VmListModel<Void>, PermissionListModel<VM>>>(){}) .to(new TypeLiteral<PermissionModelProvider<VM, VmListModel<Void>>>() {}).in(Singleton.class); + bind(new TypeLiteral<SearchableDetailModelProvider<VmDevice, VmListModel<Void>, VmDevicesListModel<VM>>>(){}) + .to(new TypeLiteral<SearchableDetailTabModelProvider<VmDevice, VmListModel<Void>, VmDevicesListModel<VM>>>(){}) + .in(Singleton.class); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineAffinityGroupPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineAffinityGroupPresenter.java index 2298027..0933d16 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineAffinityGroupPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineAffinityGroupPresenter.java @@ -39,7 +39,7 @@ @TabInfo(container = VirtualMachineSubTabPanelPresenter.class) static TabData getTabData( SearchableDetailModelProvider<AffinityGroup, VmListModel<Void>, VmAffinityGroupListModel> modelProvider) { - return new ModelBoundTabData(constants.affinityGroupSubTabLabel(), 6, modelProvider); + return new ModelBoundTabData(constants.affinityGroupSubTabLabel(), 7, modelProvider); } @Inject diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachinePermissionPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachinePermissionPresenter.java index c50a0cc..a824731 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachinePermissionPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachinePermissionPresenter.java @@ -41,7 +41,7 @@ @TabInfo(container = VirtualMachineSubTabPanelPresenter.class) static TabData getTabData( SearchableDetailModelProvider<Permission, VmListModel<Void>, PermissionListModel<VM>> modelProvider) { - return new ModelBoundTabData(constants.virtualMachinePermissionSubTabLabel(), 7, modelProvider); + return new ModelBoundTabData(constants.virtualMachinePermissionSubTabLabel(), 8, modelProvider); } @Inject diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineSessionsPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineSessionsPresenter.java index c358f6e..3082957 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineSessionsPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineSessionsPresenter.java @@ -40,7 +40,7 @@ @TabInfo(container = VirtualMachineSubTabPanelPresenter.class) static TabData getTabData( DetailModelProvider<VmListModel<Void>, VmSessionsModel> modelProvider) { - return new ModelBoundTabData(constants.virtualMachineSessionsSubTabLabel(), 7, modelProvider); + return new ModelBoundTabData(constants.virtualMachineSessionsSubTabLabel(), 9, modelProvider); } @Inject diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineVmDevicePresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineVmDevicePresenter.java new file mode 100644 index 0000000..f1a83f1 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineVmDevicePresenter.java @@ -0,0 +1,62 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.gwtplatform.mvp.client.TabData; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit; +import com.gwtplatform.mvp.client.annotations.ProxyEvent; +import com.gwtplatform.mvp.client.annotations.TabInfo; +import com.gwtplatform.mvp.client.proxy.PlaceManager; +import com.gwtplatform.mvp.shared.proxy.PlaceRequest; +import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.ui.common.place.PlaceRequestFactory; +import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel; +import org.ovirt.engine.ui.uicommonweb.place.WebAdminApplicationPlaces; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.gin.AssetProvider; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.VirtualMachineSelectionChangeEvent; + +public class SubTabVirtualMachineVmDevicePresenter extends AbstractSubTabPresenter<VM, VmListModel<Void>, + VmDevicesListModel<VM>, SubTabVirtualMachineVmDevicePresenter.ViewDef, + SubTabVirtualMachineVmDevicePresenter.ProxyDef> { + + private final static ApplicationConstants constants = AssetProvider.getConstants(); + + @ProxyCodeSplit + @NameToken(WebAdminApplicationPlaces.virtualMachineVmDeviceSubTabPlace) + public interface ProxyDef extends TabContentProxyPlace<SubTabVirtualMachineVmDevicePresenter> { + } + + public interface ViewDef extends AbstractSubTabPresenter.ViewDef<VM> { + } + + @TabInfo(container = VirtualMachineSubTabPanelPresenter.class) + static TabData getTabData( + SearchableDetailModelProvider<VmDevice, VmListModel<Void>, VmDevicesListModel<VM>> modelProvider) { + return new ModelBoundTabData(constants.virtualMachineVmDevicesSubTabLabel(), 6, modelProvider); + } + + @Inject + public SubTabVirtualMachineVmDevicePresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, + PlaceManager placeManager, SearchableDetailModelProvider<VmDevice, VmListModel<Void>, VmDevicesListModel<VM>> modelProvider) { + super(eventBus, view, proxy, placeManager, modelProvider, + VirtualMachineSubTabPanelPresenter.TYPE_SetTabContent); + } + + @Override + protected PlaceRequest getMainTabRequest() { + return PlaceRequestFactory.get(WebAdminApplicationPlaces.virtualMachineMainTabPlace); + } + + @ProxyEvent + public void onVirtualMachineSelectionChange(VirtualMachineSelectionChangeEvent event) { + updateMainTabSelection(event.getSelectedItems()); + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineVmDevicesView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineVmDevicesView.java new file mode 100644 index 0000000..21ad9ab --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineVmDevicesView.java @@ -0,0 +1,32 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.system.ClientStorage; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.view.AbstractSubTabTableWidgetView; +import org.ovirt.engine.ui.common.widget.uicommon.vm.VmDevicesListModelTable; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineVmDevicePresenter; + +public class SubTabVirtualMachineVmDevicesView extends AbstractSubTabTableWidgetView<VM, VmDevice, VmListModel<Void>, VmDevicesListModel<VM>> + implements SubTabVirtualMachineVmDevicePresenter.ViewDef { + interface ViewIdHandler extends ElementIdHandler<SubTabVirtualMachineVmDevicesView> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); + } + + @Inject + public SubTabVirtualMachineVmDevicesView( + SearchableDetailModelProvider<VmDevice, VmListModel<Void>, VmDevicesListModel<VM>> modelProvider, + EventBus eventBus, ClientStorage clientStorage) { + super(new VmDevicesListModelTable(modelProvider, eventBus, clientStorage)); + ViewIdHandler.idHandler.generateAndSetIds(this); + initTable(); + initWidget(getModelBoundTableWidget()); + } +} -- To view, visit https://gerrit.ovirt.org/39795 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I73ab7de18bd05ef2f19a6abb0c9afbc7d88ff6e4 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Omer Frenkel <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
