Tomas Jelinek has uploaded a new change for review.

Change subject: webadmin: new instance type dialog + instance type list
......................................................................

webadmin: new instance type dialog + instance type list

Change-Id: I09722a0c3879268a6c683d88630440b6f8d8f794
Signed-off-by: Tomas Jelinek <tjeli...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/instancetypes/InstanceTypesPopupWidget.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewInstanceTypeModelBehavior.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/PresenterModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/instancetypes/InstanceTypesNewPopupPresenterWidget.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesNewPopupView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.ui.xml
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/InstanceTypeModelProvider.java
20 files changed, 537 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/21/21821/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java
index 3641f29..9717608 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/dialog/tab/DialogTabPanel.java
@@ -99,4 +99,13 @@
     public DialogTab getActiveTab() {
         return activeTab;
     }
+
+    public void setHeaderVisible(boolean visible) {
+        if (visible) {
+            
tabHeaderContainer.getElement().getStyle().setDisplay(Display.BLOCK);
+        } else {
+            
tabHeaderContainer.getElement().getStyle().setDisplay(Display.NONE);
+        }
+
+    }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
index d20fe53..169830f 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
@@ -598,7 +598,11 @@
 
     @UiField
     @Ignore
-    ButtonBase refreshButton;
+    public ButtonBase refreshButton;
+
+    @Ignore
+    @UiField
+    public DialogTabPanel wholePanel;
 
     private UnitVmModel unitVmModel;
 
@@ -681,6 +685,8 @@
         }, ""); //$NON-NLS-1$
 
         driver.initialize(this);
+
+        postInit();
     }
 
     private void initTextBoxEditors() {
@@ -1445,6 +1451,10 @@
         return nextTabIndex;
     }
 
+    protected void postInit() {
+
+    }
+
     @Override
     protected PopupWidgetConfigMap createWidgetConfiguration() {
         return super.createWidgetConfiguration().
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
index d929827..d95e96a 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
@@ -312,7 +312,7 @@
                }
        </ui:style>
 
-       <t:DialogTabPanel width="100%" height="100%">
+       <t:DialogTabPanel width="100%" height="100%" ui:field="wholePanel">
                <t:header>
                        <g:FlowPanel addStyleNames="{style.headerPanel}">
                                <e:ListModelTypeAheadListBoxEditor 
ui:field="dataCenterWithClusterEditor" />
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/instancetypes/InstanceTypesPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/instancetypes/InstanceTypesPopupWidget.java
new file mode 100644
index 0000000..bab2de8
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/instancetypes/InstanceTypesPopupWidget.java
@@ -0,0 +1,62 @@
+package org.ovirt.engine.ui.common.widget.uicommon.popup.instancetypes;
+
+import com.google.gwt.core.client.GWT;
+import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.CommonApplicationMessages;
+import org.ovirt.engine.ui.common.CommonApplicationResources;
+import org.ovirt.engine.ui.common.CommonApplicationTemplates;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractVmPopupWidget;
+import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfigMap;
+import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.hiddenField;
+
+public class InstanceTypesPopupWidget extends AbstractVmPopupWidget {
+
+    interface ViewIdHandler extends ElementIdHandler<InstanceTypesPopupWidget> 
{
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    public InstanceTypesPopupWidget(CommonApplicationConstants constants,
+                                    CommonApplicationResources resources,
+                                    CommonApplicationMessages messages,
+                                    CommonApplicationTemplates 
applicationTemplates) {
+        super(constants, resources, messages, applicationTemplates);
+    }
+
+    @Override
+    protected void generateIds() {
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+    }
+
+    @Override
+    protected void postInit() {
+        super.postInit();
+
+        wholePanel.setHeaderVisible(false);
+    }
+
+    @Override
+    protected PopupWidgetConfigMap createWidgetConfiguration() {
+        return super.createWidgetConfiguration().
+                putAll(poolSpecificFields(), hiddenField()).
+                putOne(logicalNetworksEditorPanel, hiddenField()).
+                putOne(isDeleteProtectedEditor, hiddenField()).
+                putOne(isStatelessEditor, hiddenField()).
+                putOne(isRunAndPauseEditor, hiddenField()).
+                putOne(commentEditor, hiddenField()).
+                putOne(vmTypeEditor, hiddenField()).
+                putOne(oSTypeEditor, hiddenField()).
+                putOne(templateEditor, hiddenField()).
+                putOne(dataCenterWithClusterEditor, hiddenField()).
+                putOne(initialRunTab, hiddenField()).
+                putOne(expander, hiddenField()).
+                putOne(allowConsoleReconnectEditor, hiddenField()).
+                putOne(highAvailabilityTab, hiddenField()).
+                putOne(cdAttachedEditor, hiddenField()).
+                putOne(customPropertiesTab, hiddenField()).
+                putOne(isSingleQxlEnabledEditor, hiddenField()).
+                putOne(isSoundcardEnabledEditor, hiddenField()).
+                putOne(cdImageEditor, hiddenField()).
+                putOne(refreshButton, hiddenField());
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
index 45d2bd1..64e1223 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
@@ -22,6 +22,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.bookmarks.BookmarkListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.configure.SystemPermissionListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.configure.instancetypes.InstanceTypeListModel;
 import org.ovirt.engine.ui.uicommonweb.models.configure.roles_ui.RoleListModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.ClusterPolicyListModel;
 import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterListModel;
@@ -80,6 +81,7 @@
     private RoleListModel roleListModel;
     private SystemPermissionListModel systemPermissionListModel;
     private ClusterPolicyListModel clusterPolicyListModel;
+    private InstanceTypeListModel instanceTypeListModel;
 
     // NOTE: when adding a new ListModel here, be sure to add it to the list 
in initItems()
     private SearchableListModel dataCenterList;
@@ -200,6 +202,7 @@
         roleListModel = new RoleListModel();
         systemPermissionListModel = new SystemPermissionListModel();
         clusterPolicyListModel = new ClusterPolicyListModel();
+        instanceTypeListModel = new InstanceTypeListModel();
 
         // Activate the default list model.
         setSelectedItem(getDefaultItem());
@@ -528,6 +531,7 @@
         getRoleListModel().stopRefresh();
         getSystemPermissionListModel().stopRefresh();
         getClusterPolicyListModel().stopRefresh();
+        getInstanceTypeListModel().stopRefresh();
 
         if (Frontend.getInstance().getIsUserLoggedIn())
         {
@@ -1061,6 +1065,10 @@
         return clusterPolicyListModel;
     }
 
+    public InstanceTypeListModel getInstanceTypeListModel() {
+        return instanceTypeListModel;
+    }
+
     public Event getSignedOutEvent()
     {
         return privateSignedOutEvent;
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java
index f1769da..b3ee0b1 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterHostListModel.java
@@ -88,6 +88,9 @@
     }
 
     private void updateActionAvailability() {
+        if (getEntity() == null) {
+            return;
+        }
         if (getEntity().getcompatibility_version().compareTo(Version.v3_3) >= 
0) {
             getUpdateMomPolicyCommand().setIsAvailable(true);
             ArrayList<VDS> items =
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
new file mode 100644
index 0000000..f9090b0
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
@@ -0,0 +1,126 @@
+package org.ovirt.engine.ui.uicommonweb.models.configure.instancetypes;
+
+import org.ovirt.engine.core.common.action.AddVmTemplateParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import org.ovirt.engine.core.common.businessentities.InstanceType;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VmEntityType;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
+import org.ovirt.engine.core.common.interfaces.SearchType;
+import org.ovirt.engine.core.common.queries.SearchParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.StringHelper;
+import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.NewInstanceTypeModelBehavior;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.vms.VmBasedWidgetSwitchModeCommand;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
+import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback;
+
+public class InstanceTypeListModel extends ListWithDetailsModel {
+
+    private UICommand newInstanceTypeCommand;
+
+    public UICommand getNewInstanceTypeCommand() {
+        return newInstanceTypeCommand;
+    }
+
+    public InstanceTypeListModel() {
+        setDefaultSearchString("Instancetypes:"); //$NON-NLS-1$
+        setSearchString(getDefaultSearchString());
+        this.newInstanceTypeCommand = new UICommand("NewInstanceType", 
this);//$NON-NLS-1$
+        setSearchPageSize(1000);
+    }
+
+    @Override
+    protected void syncSearch() {
+        SearchParameters params = new SearchParameters(getSearchString(), 
SearchType.InstanceType, isCaseSensitiveSearch());
+        params.setMaxCount(getSearchPageSize());
+        super.syncSearch(VdcQueryType.Search, params);
+    }
+
+    private void newInstanceType() {
+        if (getWindow() != null) {
+            return;
+        }
+
+        UnitVmModel model = new UnitVmModel(new 
NewInstanceTypeModelBehavior());
+        setWindow(model);
+
+        
model.setTitle(ConstantsManager.getInstance().getConstants().newInstanceTypeTitle());
+        model.setHashName("new_instance_type"); //$NON-NLS-1$
+        model.setIsNew(true);
+
+        model.initialize(null);
+
+        VmBasedWidgetSwitchModeCommand switchModeCommand = new 
VmBasedWidgetSwitchModeCommand();
+        switchModeCommand.init(model);
+        model.getCommands().add(switchModeCommand);
+
+        UICommand newTemplate = new UICommand("OnNewInstanceType", this); 
//$NON-NLS-1$
+        
newTemplate.setTitle(ConstantsManager.getInstance().getConstants().ok());
+        newTemplate.setIsDefault(true);
+        model.getCommands().add(newTemplate);
+
+        UICommand cancel = new UICommand("Cancel", this); //$NON-NLS-1$
+        
cancel.setTitle(ConstantsManager.getInstance().getConstants().cancel());
+        cancel.setIsCancel(true);
+        model.getCommands().add(cancel);
+    }
+
+    private void onNewInstanceType() {
+        UnitVmModel model = (UnitVmModel) getWindow();
+        VmTemplate instanceType = new VmTemplate();
+        instanceType.setTemplateType(VmEntityType.INSTANCE_TYPE);
+        instanceType.setName(model.getName().getEntity());
+
+        AddVmTemplateParameters addInstanceTypeParameters =
+                new AddVmTemplateParameters();
+        addInstanceTypeParameters.setTemplateType(VmEntityType.INSTANCE_TYPE);
+        addInstanceTypeParameters.setName(model.getName().getEntity());
+
+        getWindow().startProgress(null);
+        Frontend.RunAction(VdcActionType.AddVmTemplate, 
addInstanceTypeParameters,
+                new IFrontendActionAsyncCallback() {
+                    @Override
+                    public void executed(FrontendActionAsyncResult result) {
+                        getWindow().stopProgress();
+                        VdcReturnValueBase returnValueBase = 
result.getReturnValue();
+                        if (returnValueBase != null && 
returnValueBase.getSucceeded()) {
+                            cancel();
+                        }
+
+                    }
+                }, this);
+
+    }
+
+    private void cancel() {
+        setWindow(null);
+    }
+
+    @Override
+    protected String getListName() {
+        return "InstanceTypeListModel"; //$NON-NLS-1$
+    }
+
+    @Override
+    public void executeCommand(UICommand command) {
+        super.executeCommand(command);
+
+        if (command == getNewInstanceTypeCommand()) {
+            newInstanceType();
+        } else if (StringHelper.stringsEqual(command.getName(), "Cancel")) { 
//$NON-NLS-1$
+            cancel();
+        } else if (StringHelper.stringsEqual(command.getName(), 
"OnNewInstanceType")) { //$NON-NLS-1$
+            onNewInstanceType();
+        }
+    }
+
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewInstanceTypeModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewInstanceTypeModelBehavior.java
new file mode 100644
index 0000000..29a56e0
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewInstanceTypeModelBehavior.java
@@ -0,0 +1,25 @@
+package org.ovirt.engine.ui.uicommonweb.models.vms;
+
+public class NewInstanceTypeModelBehavior extends 
VmModelBehaviorBase<UnitVmModel> {
+
+    @Override
+    public void template_SelectedItemChanged() {
+
+    }
+
+    @Override
+    public void postDataCenterWithClusterSelectedItemChanged() {
+    }
+
+    @Override
+    public void defaultHost_SelectedItemChanged() {
+    }
+
+    @Override
+    public void provisioning_SelectedItemChanged() {
+    }
+
+    @Override
+    public void updateMinAllocatedMemory() {
+    }
+}
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 24c55d1..df384cd 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
@@ -629,6 +629,9 @@
     @DefaultStringValue("New Template")
     String newTemplateTitle();
 
+    @DefaultStringValue("New InstanceType")
+    String newInstanceTypeTitle();
+
     @DefaultStringValue("Migrate Virtual Machine(s)")
     String migrateVirtualMachinesTitle();
 
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 b8680cf..1987569 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
@@ -3364,4 +3364,15 @@
 
     @DefaultStringValue("External Policy Unit")
     String externalPolicyUnit();
+
+    // Instance Types
+
+    @DefaultStringValue("Instance Types")
+    String instanceTypes();
+
+    @DefaultStringValue("Name")
+    String instanceTypeName();
+
+    @DefaultStringValue("New")
+    String newInstanceType();
 }
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 d5c2c85..a1ab9e3 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
@@ -25,6 +25,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.ManageGlusterSwiftPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.NewClusterNetworkPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.ConfigurePopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes.InstanceTypesNewPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.RolePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.DataCenterForceRemovePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.datacenter.DataCenterPopupPresenterWidget;
@@ -235,6 +236,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.cluster.ManageGlusterSwiftPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.cluster.NewClusterNetworkPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.configure.ConfigurePopupView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.instancetypes.InstanceTypesNewPopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.configure.RolePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.DataCenterForceRemovePopupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.datacenter.DataCenterPopupView;
@@ -1217,6 +1219,11 @@
                 TemplateNewPresenterWidget.ViewDef.class,
                 TemplateNewPopupView.class);
 
+        // Instance Types
+        bindPresenterWidget(InstanceTypesNewPopupPresenterWidget.class,
+                InstanceTypesNewPopupPresenterWidget.ViewDef.class,
+                InstanceTypesNewPopupView.class);
+
         // Add/Edit Template's NIC
         bindPresenterWidget(TemplateInterfacePopupPresenterWidget.class,
                 TemplateInterfacePopupPresenterWidget.ViewDef.class,
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
index 71031d1..4aa3ee7 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
@@ -26,6 +26,7 @@
 import org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.EventFirstRowModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.EventModelProvider;
+import org.ovirt.engine.ui.webadmin.uicommon.model.InstanceTypeModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.RoleModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.RolePermissionModelProvider;
 import 
org.ovirt.engine.ui.webadmin.uicommon.model.SystemPermissionModelProvider;
@@ -102,6 +103,8 @@
 
         // ClusterPolicyClusterListModel
         bind(ClusterPolicyClusterModelProvider.class).asEagerSingleton();
+
+        bind(InstanceTypeModelProvider.class).asEagerSingleton();
     }
 
     void bindIntegration() {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java
index 9e553fa..347206d 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/configure/ConfigurePopupPresenterWidget.java
@@ -5,6 +5,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper;
 import 
org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyClusterModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyModelProvider;
+import org.ovirt.engine.ui.webadmin.uicommon.model.InstanceTypeModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.RoleModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.RolePermissionModelProvider;
 import 
org.ovirt.engine.ui.webadmin.uicommon.model.SystemPermissionModelProvider;
@@ -26,6 +27,7 @@
     private SystemPermissionModelProvider systemPermissionModelProvider;
     private ClusterPolicyModelProvider clusterPolicyModelProvider;
     private ClusterPolicyClusterModelProvider 
clusterPolicyClusterModelProvider;
+    private InstanceTypeModelProvider instanceTypeModelProvider;
 
     @Inject
     public ConfigurePopupPresenterWidget(EventBus eventBus, ViewDef view,
@@ -33,13 +35,15 @@
             RolePermissionModelProvider permissionModelProvider,
             SystemPermissionModelProvider systemPermissionModelProvider,
             ClusterPolicyModelProvider clusterPolicyModelProvider,
-            ClusterPolicyClusterModelProvider 
clusterPolicyClusterModelProvider) {
+            ClusterPolicyClusterModelProvider 
clusterPolicyClusterModelProvider,
+            InstanceTypeModelProvider instanceTypeModelProvider) {
         super(eventBus, view);
         this.roleModelProvider = roleModelProvider;
         this.permissionModelProvider = permissionModelProvider;
         this.systemPermissionModelProvider = systemPermissionModelProvider;
         this.clusterPolicyModelProvider = clusterPolicyModelProvider;
         this.clusterPolicyClusterModelProvider = 
clusterPolicyClusterModelProvider;
+        this.instanceTypeModelProvider = instanceTypeModelProvider;
     }
 
     @Override
@@ -53,6 +57,7 @@
         } else {
             getView().hideClusterPolicyTab();
         }
+        instanceTypeModelProvider.getModel().search();
     }
 
     @Override
@@ -63,6 +68,7 @@
         systemPermissionModelProvider.getModel().stopRefresh();
         clusterPolicyModelProvider.getModel().stopRefresh();
         clusterPolicyClusterModelProvider.getModel().stopRefresh();
+        instanceTypeModelProvider.getModel().stopRefresh();
     }
 
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/instancetypes/InstanceTypesNewPopupPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/instancetypes/InstanceTypesNewPopupPresenterWidget.java
new file mode 100644
index 0000000..b68ebe4
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/instancetypes/InstanceTypesNewPopupPresenterWidget.java
@@ -0,0 +1,17 @@
+package 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import 
org.ovirt.engine.ui.common.widget.popup.AbstractVmBasedPopupPresenterWidget;
+
+public class InstanceTypesNewPopupPresenterWidget extends 
AbstractVmBasedPopupPresenterWidget<InstanceTypesNewPopupPresenterWidget.ViewDef>
 {
+
+    public interface ViewDef extends 
AbstractVmBasedPopupPresenterWidget.ViewDef {
+
+    }
+
+    @Inject
+    public InstanceTypesNewPopupPresenterWidget(EventBus eventBus, ViewDef 
view) {
+        super(eventBus, view);
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java
index e36b462..2391fd5 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.java
@@ -7,6 +7,7 @@
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.configure.ConfigurePopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.instancetypes.InstanceTypesView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.scheduling.ClusterPolicyView;
 
 import com.google.gwt.core.client.GWT;
@@ -41,6 +42,9 @@
     DialogTab systemPermissionsTab;
 
     @UiField
+    DialogTab instanceTypesTab;
+
+    @UiField
     SimplePanel rolesTabPanel;
 
     @UiField
@@ -49,6 +53,9 @@
     @UiField
     SimplePanel systemPermissionTabPanel;
 
+    @UiField
+    SimplePanel instanceTypesTabPanel;
+
     @Inject
     public ConfigurePopupView(
             EventBus eventBus,
@@ -56,16 +63,24 @@
             ApplicationConstants constants,
             RoleView roleView,
             ClusterPolicyView clusterPolicyView,
-            SystemPermissionView systemPermissionView) {
+            SystemPermissionView systemPermissionView,
+            InstanceTypesView instanceTypesView
+            ) {
         super(eventBus, resources);
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
         localize(constants);
+
         roleView.setWidth("100%"); //$NON-NLS-1$
         rolesTabPanel.add(roleView);
+
         clusterPolicyView.setWidth("100%"); //$NON-NLS-1$
         clusterPoliciesTabPanel.add(clusterPolicyView);
+
         systemPermissionTabPanel.setWidth("100%"); //$NON-NLS-1$
         systemPermissionTabPanel.add(systemPermissionView);
+
+        instanceTypesView.setWidth("100%"); //$NON-NLS-1$
+        instanceTypesTabPanel.add(instanceTypesView);
     }
 
     void localize(ApplicationConstants constants) {
@@ -75,6 +90,7 @@
         rolesTab.setLabel(constants.configureRoleTabLabel());
         
clusterPoliciesTab.setLabel(constants.configureClusterPolicyTabLabel());
         
systemPermissionsTab.setLabel(constants.configureSystemPermissionTabLabel());
+        instanceTypesTab.setLabel(constants.instanceTypes());
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml
index c8d53bf..a37382c 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/configure/ConfigurePopupView.ui.xml
@@ -37,6 +37,13 @@
                                                </t:content>
                                        </t:DialogTab>
                                </t:tab>
+                <t:tab>
+                    <t:DialogTab ui:field="instanceTypesTab">
+                        <t:content>
+                            <g:SimplePanel addStyleNames="{style.panel}" 
ui:field="instanceTypesTabPanel" />
+                        </t:content>
+                    </t:DialogTab>
+                </t:tab>
                        </t:DialogTabPanel>
                </d:content>
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesNewPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesNewPopupView.java
new file mode 100644
index 0000000..9bc0321
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesNewPopupView.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.popup.instancetypes;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import org.ovirt.engine.ui.common.CommonApplicationMessages;
+import org.ovirt.engine.ui.common.CommonApplicationTemplates;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.view.popup.AbstractVmPopupView;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes.InstanceTypesNewPopupPresenterWidget;
+import 
org.ovirt.engine.ui.common.widget.uicommon.popup.instancetypes.InstanceTypesPopupWidget;
+
+public class InstanceTypesNewPopupView extends AbstractVmPopupView implements 
InstanceTypesNewPopupPresenterWidget.ViewDef {
+
+    interface ViewIdHandler extends 
ElementIdHandler<InstanceTypesNewPopupView> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    @Inject
+    public InstanceTypesNewPopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants, CommonApplicationMessages messages, 
CommonApplicationTemplates templates) {
+        super(eventBus, resources, new InstanceTypesPopupWidget(constants, 
resources, messages, templates), "710px", "570px"); //$NON-NLS-1$ //$NON-NLS-2$
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.java
new file mode 100644
index 0000000..91e4ba2
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.java
@@ -0,0 +1,134 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.popup.instancetypes;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.shared.EventBus;
+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.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.SplitLayoutPanel;
+import com.google.gwt.view.client.SelectionChangeEvent;
+import com.google.inject.Inject;
+import org.ovirt.engine.core.common.businessentities.InstanceType;
+import org.ovirt.engine.ui.common.MainTableHeaderlessResources;
+import org.ovirt.engine.ui.common.MainTableResources;
+import org.ovirt.engine.ui.common.system.ClientStorage;
+import org.ovirt.engine.ui.common.widget.table.SimpleActionTable;
+import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.uicommon.model.InstanceTypeModelProvider;
+import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition;
+
+public class  InstanceTypesView extends Composite {
+
+    interface ViewUiBinder extends UiBinder<FlowPanel, InstanceTypesView> {
+        ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
+    }
+
+    @UiField
+    SimplePanel instanceTypesTabContent;
+
+    private SimpleActionTable<InstanceType> table;
+    private SimpleActionTable<InstanceType> detailTable;
+    private SplitLayoutPanel splitLayoutPanel;
+
+    private final InstanceTypeModelProvider instanceTypeModelProvider;
+
+    private final EventBus eventBus;
+
+    private final ClientStorage clientStorage;
+
+    @Inject
+    public InstanceTypesView(ApplicationConstants constants,
+            InstanceTypeModelProvider instanceTypeModelProvider,
+            EventBus eventBus, ClientStorage clientStorage) {
+        this.instanceTypeModelProvider = instanceTypeModelProvider;
+        this.eventBus = eventBus;
+        this.clientStorage = clientStorage;
+
+        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
+
+        initSplitLayoutPanel();
+
+        initMainTable(constants);
+        initSubtabTable(constants);
+    }
+
+    private void initSplitLayoutPanel() {
+        splitLayoutPanel = new SplitLayoutPanel();
+        splitLayoutPanel.setHeight("100%"); //$NON-NLS-1$
+        splitLayoutPanel.setWidth("100%"); //$NON-NLS-1$
+        instanceTypesTabContent.add(splitLayoutPanel);
+    }
+
+    public void setSubTabVisibility(boolean visible) {
+        splitLayoutPanel.clear();
+        if (visible) {
+            splitLayoutPanel.addSouth(detailTable, 150);
+        }
+        splitLayoutPanel.add(table);
+    }
+
+    private void initMainTable(ApplicationConstants constants) {
+        table = new SimpleActionTable<InstanceType>(instanceTypeModelProvider,
+                getTableHeaderlessResources(), getTableResources(), eventBus, 
clientStorage);
+
+        TextColumnWithTooltip<InstanceType> nameColumn = new 
TextColumnWithTooltip<InstanceType>() {
+            @Override
+            public String getValue(InstanceType object) {
+                return object.getName();
+            }
+        };
+        table.addColumn(nameColumn, constants.instanceTypeName(), "100px"); 
//$NON-NLS-1$
+
+
+        table.addActionButton(new 
WebAdminButtonDefinition<InstanceType>(constants.newInstanceType()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return 
instanceTypeModelProvider.getModel().getNewInstanceTypeCommand();
+            }
+        });
+
+        splitLayoutPanel.add(table);
+
+        table.getSelectionModel().addSelectionChangeHandler(new 
SelectionChangeEvent.Handler() {
+
+            @Override
+            public void onSelectionChange(SelectionChangeEvent event) {
+                
instanceTypeModelProvider.setSelectedItems(table.getSelectionModel().getSelectedList());
+                if (table.getSelectionModel().getSelectedList().size() > 0) {
+                    setSubTabVisibility(true);
+                } else {
+                    setSubTabVisibility(false);
+                }
+            }
+        });
+
+    }
+
+    private void initSubtabTable(ApplicationConstants constants) {
+        detailTable = new 
SimpleActionTable<InstanceType>(instanceTypeModelProvider,
+                getTableHeaderlessResources(), getTableResources(), eventBus, 
clientStorage);
+
+        TextColumnWithTooltip<InstanceType> instanceTypeNameColumn = new 
TextColumnWithTooltip<InstanceType>() {
+            @Override
+            public String getValue(InstanceType object) {
+                return object.getName();
+            }
+        };
+
+        detailTable.addColumn(instanceTypeNameColumn, 
constants.instanceTypeName());
+    }
+
+    protected Resources getTableHeaderlessResources() {
+        return GWT.create(MainTableHeaderlessResources.class);
+    }
+
+    protected Resources getTableResources() {
+        return GWT.create(MainTableResources.class);
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.ui.xml
new file mode 100644
index 0000000..a32d12a
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/instancetypes/InstanceTypesView.ui.xml
@@ -0,0 +1,10 @@
+<?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">
+       <ui:with field='resources' 
type='org.ovirt.engine.ui.webadmin.ApplicationResources' />
+
+       <g:FlowPanel>
+               <g:SimplePanel ui:field="instanceTypesTabContent" 
height="495px" />
+       </g:FlowPanel>
+
+</ui:UiBinder>
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/InstanceTypeModelProvider.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/InstanceTypeModelProvider.java
new file mode 100644
index 0000000..5a8a509
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/InstanceTypeModelProvider.java
@@ -0,0 +1,50 @@
+package org.ovirt.engine.ui.webadmin.uicommon.model;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.ovirt.engine.core.common.businessentities.InstanceType;
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+import 
org.ovirt.engine.ui.common.presenter.popup.DefaultConfirmationPopupPresenterWidget;
+import org.ovirt.engine.ui.common.uicommon.model.SearchableTabModelProvider;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel;
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+import 
org.ovirt.engine.ui.uicommonweb.models.configure.instancetypes.InstanceTypeListModel;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.instancetypes.InstanceTypesNewPopupPresenterWidget;
+
+public class InstanceTypeModelProvider extends 
SearchableTabModelProvider<InstanceType, InstanceTypeListModel> {
+
+    private final Provider<InstanceTypesNewPopupPresenterWidget> 
instanceTypeNewPopupProvider;
+
+    @Inject
+    public InstanceTypeModelProvider(EventBus eventBus,
+                                     final 
Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider,
+                                     final 
Provider<InstanceTypesNewPopupPresenterWidget> instanceTypeNewPopupProvider) {
+        super(eventBus, defaultConfirmPopupProvider);
+        this.instanceTypeNewPopupProvider = instanceTypeNewPopupProvider;
+    }
+
+    @Override
+    public InstanceTypeListModel getModel() {
+        return getCommonModel().getInstanceTypeListModel();
+    }
+
+    @Override
+    public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> 
getModelPopup(InstanceTypeListModel source,
+            UICommand lastExecutedCommand, Model windowModel) {
+        if (lastExecutedCommand == getModel().getNewInstanceTypeCommand()) {
+            return instanceTypeNewPopupProvider.get();
+        } else {
+            return super.getModelPopup(source, lastExecutedCommand, 
windowModel);
+        }
+    }
+
+    @Override
+    public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, 
?> getConfirmModelPopup(InstanceTypeListModel source,
+            UICommand lastExecutedCommand) {
+            return super.getConfirmModelPopup(source, lastExecutedCommand);
+
+    }
+
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I09722a0c3879268a6c683d88630440b6f8d8f794
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Tomas Jelinek <tjeli...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to