Martin Betak has uploaded a new change for review.

Change subject: frontend: Add VM HostDevice subtab
......................................................................

frontend: Add VM HostDevice subtab

Change-Id: I8f2648e3c1073f630b9637aea3a6acc6f800cf6c
Signed-off-by: Martin Betak <[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/VmHostDeviceModelTable.java
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmHostDeviceListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmHostDeviceModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.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/PresenterModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/hostdev/VmHostDevicePopupPresenterWidget.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/scheduling/AffinityGroupPopupPresenterWidget.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineHostDevicePresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmHostDevicePopupView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmHostDevicePopupView.xml
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineHostDeviceView.java
15 files changed, 303 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/37620/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 8896ffa..76cb2a6 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
@@ -2002,4 +2002,10 @@
 
     @DefaultStringValue("Graphics protocol")
     String graphicsProtocol();
+
+    @DefaultStringValue("Add device")
+    String addVmHostDevice();
+
+    @DefaultStringValue("Remove device")
+    String removeVmHostDevice();
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmHostDeviceModelTable.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmHostDeviceModelTable.java
new file mode 100644
index 0000000..70f081b
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmHostDeviceModelTable.java
@@ -0,0 +1,34 @@
+package org.ovirt.engine.ui.common.widget.uicommon.vm;
+
+import com.google.gwt.event.shared.EventBus;
+import org.ovirt.engine.core.common.businessentities.VmHostDevice;
+import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.system.ClientStorage;
+import org.ovirt.engine.ui.common.uicommon.model.SearchableTableModelProvider;
+import org.ovirt.engine.ui.common.widget.action.UiCommandButtonDefinition;
+import 
org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmHostDeviceListModel;
+
+public class VmHostDeviceModelTable extends 
AbstractModelBoundTableWidget<VmHostDevice, VmHostDeviceListModel> {
+
+    public VmHostDeviceModelTable(SearchableTableModelProvider<VmHostDevice, 
VmHostDeviceListModel> modelProvider, EventBus eventBus, ClientStorage 
clientStorage) {
+        super(modelProvider, eventBus, clientStorage, false);
+    }
+
+    @Override
+    public void initTable(CommonApplicationConstants constants) {
+        getTable().addActionButton(new 
UiCommandButtonDefinition<VmHostDevice>(getEventBus(), 
constants.addVmHostDevice()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return getModel().getNewCommand();
+            }
+        });
+        getTable().addActionButton(new 
UiCommandButtonDefinition<VmHostDevice>(getEventBus(), 
constants.removeVmHostDevice()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return getModel().getRemoveCommand();
+            }
+        });
+    }
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
index 7dacd4e..fae4693 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
@@ -204,6 +204,7 @@
                <include name="common/businessentities/ImageType.java" />
                <include 
name="common/businessentities/SnapshotActionEnum.java"/>
         <include name="common/businessentities/VmRngDevice.java" />
+               <include name="common/businessentities/VmHostDevice.java" />
                <include name="common/job/*.java" />
 
                <!-- Profiles -->
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmHostDeviceListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmHostDeviceListModel.java
new file mode 100644
index 0000000..9e93b8c
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmHostDeviceListModel.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.ui.uicommonweb.models.vms;
+
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
+
+public class VmHostDeviceListModel extends SearchableListModel {
+    private UICommand newCommand;
+    private UICommand removeCommand;
+
+    @Override
+    protected String getListName() {
+        return "VmHostDeviceListModel"; //$NON-NLS-1$
+    }
+
+    public UICommand getNewCommand() {
+        return newCommand;
+    }
+
+    public void setNewCommand(UICommand newCommand) {
+        this.newCommand = newCommand;
+    }
+
+    public UICommand getRemoveCommand() {
+        return removeCommand;
+    }
+
+    public void setRemoveCommand(UICommand removeCommand) {
+        this.removeCommand = removeCommand;
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmHostDeviceModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmHostDeviceModel.java
new file mode 100644
index 0000000..7e32c00
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmHostDeviceModel.java
@@ -0,0 +1,6 @@
+package org.ovirt.engine.ui.uicommonweb.models.vms;
+
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+
+public class VmHostDeviceModel extends Model {
+}
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 ae94b19..bfe2e45 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
@@ -174,6 +174,9 @@
     public static final String virtualMachineVirtualDiskSubTabPlace = 
virtualMachineMainTabPlace + SUB_TAB_PREFIX
             + "disks"; //$NON-NLS-1$
 
+    public static final String virtualMachineHostDeviceSubTabPlace = 
virtualMachineMainTabPlace + SUB_TAB_PREFIX
+            + "host_devices"; //$NON-NLS-1$
+
     public static final String virtualMachineSnapshotSubTabPlace = 
virtualMachineMainTabPlace + SUB_TAB_PREFIX
             + "snapshots"; //$NON-NLS-1$
 
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 c5bdc1d..089f060 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
@@ -491,6 +491,9 @@
     @DefaultStringValue("Disks")
     String virtualMachineVirtualDiskSubTabLabel();
 
+    @DefaultStringValue("Host Devices")
+    String virtualMachineHostDeviceSubTabLabel();
+
     @DefaultStringValue("Snapshots")
     String virtualMachineSnapshotSubTabLabel();
 
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 b198f83..5cdd6e6 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
@@ -68,6 +68,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksBondPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksInterfacePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksManagementPopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.hostdev.VmHostDevicePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes.InstanceTypesPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.macpool.SharedMacPoolPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.pool.PoolEditPopupPresenterWidget;
@@ -243,6 +244,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineApplicationPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineEventPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineGeneralPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineHostDevicePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineNetworkInterfacePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachinePermissionPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineSessionsPresenter;
@@ -353,6 +355,7 @@
 import org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.VmDiskPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.VmDiskRemovePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.VmExportPopupView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.VmHostDevicePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.VmInterfacePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.VmMakeTemplatePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.vm.VmMigratePopupView;
@@ -489,6 +492,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineApplicationView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineEventView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineGeneralView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineHostDeviceView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineNetworkInterfaceView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachinePermissionView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineSessionsView;
@@ -868,6 +872,10 @@
                 SubTabVirtualMachineEventPresenter.ViewDef.class,
                 SubTabVirtualMachineEventView.class,
                 SubTabVirtualMachineEventPresenter.ProxyDef.class);
+        bindPresenter(SubTabVirtualMachineHostDevicePresenter.class,
+                SubTabVirtualMachineHostDevicePresenter.ViewDef.class,
+                SubTabVirtualMachineHostDeviceView.class,
+                SubTabVirtualMachineHostDevicePresenter.ProxyDef.class);
 
 
         // Pool
@@ -1433,6 +1441,11 @@
                 ImportVmsPopupPresenterWidget.ViewDef.class,
                 ImportVmsPopupView.class);
 
+        // Host Devices
+        bindPresenterWidget(VmHostDevicePopupPresenterWidget.class,
+                VmHostDevicePopupPresenterWidget.ViewDef.class,
+                VmHostDevicePopupView.class);
+
         // Volume
         bindPresenter(VolumeSubTabPanelPresenter.class,
                 VolumeSubTabPanelPresenter.ViewDef.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 8bf6fbe..0d3d57d 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
@@ -5,6 +5,7 @@
 import org.ovirt.engine.core.common.businessentities.Permissions;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VmHostDevice;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.scheduling.AffinityGroup;
 import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
@@ -32,6 +33,7 @@
 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;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmHostDeviceListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmInterfaceListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmSessionsModel;
@@ -42,6 +44,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.ImportVmsPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event.EventPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.guide.GuidePopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.hostdev.VmHostDevicePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.quota.ChangeQuotaPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.scheduling.AffinityGroupPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.DisksAllocationPopupPresenterWidget;
@@ -361,6 +364,37 @@
         return result;
     }
 
+    @Provides
+    @Singleton
+    public SearchableDetailModelProvider<VmHostDevice, VmListModel, 
VmHostDeviceListModel> getVmHostDeviceListProvider(EventBus eventBus,
+            Provider<DefaultConfirmationPopupPresenterWidget> 
defaultConfirmPopupProvider,
+            final Provider<VmHostDevicePopupPresenterWidget> popupProvider,
+            final Provider<RemoveConfirmationPopupPresenterWidget> 
removeConfirmPopupProvider,
+            final Provider<VmListModel> mainModelProvider,
+            final Provider<VmHostDeviceListModel> modelProvider) {
+        SearchableDetailTabModelProvider<VmHostDevice, VmListModel, 
VmHostDeviceListModel> result =
+                new SearchableDetailTabModelProvider<VmHostDevice, 
VmListModel, VmHostDeviceListModel>(eventBus, defaultConfirmPopupProvider) {
+                    @Override
+                    public AbstractModelBoundPopupPresenterWidget<? extends 
Model, ?> getModelPopup(VmHostDeviceListModel source, UICommand 
lastExecutedCommand, Model windowModel) {
+                        if (lastExecutedCommand == getModel().getNewCommand()) 
{
+                            return popupProvider.get();
+                        }
+                        return super.getModelPopup(source, 
lastExecutedCommand, windowModel);
+                    }
+
+                    @Override
+                    public AbstractModelBoundPopupPresenterWidget<? extends 
ConfirmationModel, ?> getConfirmModelPopup(VmHostDeviceListModel source, 
UICommand lastExecutedCommand) {
+                        if (lastExecutedCommand == 
getModel().getRemoveCommand()) {
+                            return removeConfirmPopupProvider.get();
+                        }
+                        return super.getConfirmModelPopup(source, 
lastExecutedCommand);
+                    }
+                };
+        result.setMainModelProvider(mainModelProvider);
+        result.setModelProvider(modelProvider);
+        return result;
+    }
+
     @Override
     protected void configure() {
         bind(VmListModel.class).in(Singleton.class);
@@ -372,7 +406,9 @@
         bind(VmSnapshotListModel.class).in(Singleton.class);
         bind(VmAffinityGroupListModel.class).in(Singleton.class);
         bind(VmAppListModel.class).in(Singleton.class);
-        bind(new 
TypeLiteral<PermissionListModel<VmListModel>>(){}).in(Singleton.class);
+        bind(VmHostDeviceListModel.class).in(Singleton.class);
+        bind(new TypeLiteral<PermissionListModel<VmListModel>>() {
+        }).in(Singleton.class);
 
         // Form Detail Models
         bind(new TypeLiteral<DetailModelProvider<VmListModel, 
VmGeneralModel>>(){})
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/hostdev/VmHostDevicePopupPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/hostdev/VmHostDevicePopupPresenterWidget.java
new file mode 100644
index 0000000..1bf9bb9
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/hostdev/VmHostDevicePopupPresenterWidget.java
@@ -0,0 +1,17 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.hostdev;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmHostDeviceModel;
+
+public class VmHostDevicePopupPresenterWidget extends 
AbstractModelBoundPopupPresenterWidget<VmHostDeviceModel, 
VmHostDevicePopupPresenterWidget.ViewDef> {
+
+    public interface ViewDef extends 
AbstractModelBoundPopupPresenterWidget.ViewDef<VmHostDeviceModel> {
+    }
+
+    @Inject
+    public VmHostDevicePopupPresenterWidget(EventBus eventBus, ViewDef view) {
+        super(eventBus, view);
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/scheduling/AffinityGroupPopupPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/scheduling/AffinityGroupPopupPresenterWidget.java
index c8e0980..c1dd2f8 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/scheduling/AffinityGroupPopupPresenterWidget.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/scheduling/AffinityGroupPopupPresenterWidget.java
@@ -15,5 +15,5 @@
     public AffinityGroupPopupPresenterWidget(EventBus eventBus, ViewDef view) {
         super(eventBus, view);
     }
-
 }
+
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineHostDevicePresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineHostDevicePresenter.java
new file mode 100644
index 0000000..96ee3e5
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/SubTabVirtualMachineHostDevicePresenter.java
@@ -0,0 +1,56 @@
+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.client.proxy.TabContentProxyPlace;
+import com.gwtplatform.mvp.shared.proxy.PlaceRequest;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VmHostDevice;
+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.VmHostDeviceListModel;
+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.section.main.presenter.tab.VirtualMachineSelectionChangeEvent;
+
+public class SubTabVirtualMachineHostDevicePresenter extends 
AbstractSubTabPresenter<VM, VmListModel, VmHostDeviceListModel,
+        SubTabVirtualMachineHostDevicePresenter.ViewDef, 
SubTabVirtualMachineHostDevicePresenter.ProxyDef> {
+
+    @ProxyCodeSplit
+    @NameToken(WebAdminApplicationPlaces.virtualMachineHostDeviceSubTabPlace)
+    public interface ProxyDef extends 
TabContentProxyPlace<SubTabVirtualMachineHostDevicePresenter> {
+    }
+
+    public interface ViewDef extends AbstractSubTabPresenter.ViewDef<VM> {
+    }
+
+    @TabInfo(container = VirtualMachineSubTabPanelPresenter.class)
+    static TabData getTabData(ApplicationConstants applicationConstants, 
SearchableDetailModelProvider<VM, VmListModel, VmHostDeviceListModel> 
modelProvider) {
+        return new 
ModelBoundTabData(applicationConstants.virtualMachineHostDeviceSubTabLabel(), 
4, modelProvider);
+    }
+
+    @Override
+    protected PlaceRequest getMainTabRequest() {
+        return 
PlaceRequestFactory.get(WebAdminApplicationPlaces.virtualMachineHostDeviceSubTabPlace);
+    }
+
+    @Inject
+    public SubTabVirtualMachineHostDevicePresenter(EventBus eventBus, ViewDef 
view, ProxyDef proxy, PlaceManager placeManager,
+            SearchableDetailModelProvider<VmHostDevice, VmListModel, 
VmHostDeviceListModel> modelProvider) {
+        super(eventBus, view, proxy, placeManager, modelProvider, 
VirtualMachineSubTabPanelPresenter.TYPE_SetTabContent);
+    }
+
+    @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/popup/vm/VmHostDevicePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmHostDevicePopupView.java
new file mode 100644
index 0000000..a93fea0
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmHostDevicePopupView.java
@@ -0,0 +1,46 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.popup.vm;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.inject.Inject;
+import org.ovirt.engine.ui.common.CommonApplicationResources;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
+import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmHostDeviceModel;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.hostdev.VmHostDevicePopupPresenterWidget;
+
+public class VmHostDevicePopupView extends 
AbstractModelBoundPopupView<VmHostDeviceModel> implements 
VmHostDevicePopupPresenterWidget.ViewDef {
+
+    interface Driver extends SimpleBeanEditorDriver<VmHostDeviceModel, 
VmHostDevicePopupView> {
+    }
+
+    interface ViewUiBinder extends UiBinder<SimpleDialogPanel, 
VmHostDevicePopupView> {
+        ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
+    }
+
+    interface ViewIdHandler extends ElementIdHandler<VmHostDevicePopupView> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    private final Driver driver = GWT.create(Driver.class);
+
+    @Inject
+    public VmHostDevicePopupView(EventBus eventBus, CommonApplicationResources 
resources) {
+        super(eventBus, resources);
+        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+        driver.initialize(this);
+    }
+
+    @Override
+    public void edit(VmHostDeviceModel object) {
+    }
+
+    @Override
+    public VmHostDeviceModel flush() {
+        return null;
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmHostDevicePopupView.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmHostDevicePopupView.xml
new file mode 100644
index 0000000..a443527
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmHostDevicePopupView.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
+<ui:UiBinder
+       xmlns:ui="urn:ui:com.google.gwt.uibinder"
+       xmlns:g="urn:import:com.google.gwt.user.client.ui"
+       xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog">
+
+       <d:SimpleDialogPanel width="420px" height="345px">
+               <d:content>
+                       <g:FlowPanel>
+                               <g:Label text="Hello Dialog" />
+                       </g:FlowPanel>
+               </d:content>
+       </d:SimpleDialogPanel>
+</ui:UiBinder>
\ No newline at end of file
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineHostDeviceView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineHostDeviceView.java
new file mode 100644
index 0000000..f6af40a
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/virtualMachine/SubTabVirtualMachineHostDeviceView.java
@@ -0,0 +1,35 @@
+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.VmHostDevice;
+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.VmHostDeviceModelTable;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmHostDeviceListModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineHostDevicePresenter;
+
+public class SubTabVirtualMachineHostDeviceView
+        extends AbstractSubTabTableWidgetView<VM, VmHostDevice, VmListModel, 
VmHostDeviceListModel>
+        implements SubTabVirtualMachineHostDevicePresenter.ViewDef {
+
+    interface ViewIdHandler extends 
ElementIdHandler<SubTabVirtualMachineHostDeviceView> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    @Inject
+    public SubTabVirtualMachineHostDeviceView(
+            SearchableDetailModelProvider<VmHostDevice, VmListModel, 
VmHostDeviceListModel> modelProvider,
+            EventBus eventBus, ClientStorage clientStorage, 
ApplicationConstants constants) {
+        super(new VmHostDeviceModelTable(modelProvider, eventBus, 
clientStorage));
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+        initTable(constants);
+        initWidget(getModelBoundTableWidget());
+    }
+}


-- 
To view, visit http://gerrit.ovirt.org/37620
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8f2648e3c1073f630b9637aea3a6acc6f800cf6c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Betak <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to