Tomas Jelinek has uploaded a new change for review.

Change subject: webadmin: new template dialog
......................................................................

webadmin: new template dialog

Change-Id: I3415c09306bf09ff848d0e3ed9c6fe9ee0a87b26
Signed-off-by: Tomas Jelinek <[email protected]>
---
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/TemplatePopupWidget.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateNewVmModelBehavior.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/ManagedComponents.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/InstanceTypeModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/TemplateModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/vm/TemplatePopupPresenterWidget.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabInstanceTypePresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/TemplatePopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabInstanceTypesView.java
13 files changed, 265 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/40/12440/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/TemplatePopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/TemplatePopupWidget.java
new file mode 100644
index 0000000..00551ad
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/TemplatePopupWidget.java
@@ -0,0 +1,38 @@
+package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
+
+import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmPopupWidgetConfig.hiddenField;
+import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmPopupWidgetConfig.simpleField;
+
+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.widget.uicommon.popup.AbstractVmPopupWidget;
+
+public class TemplatePopupWidget extends AbstractVmPopupWidget {
+
+    public TemplatePopupWidget(CommonApplicationConstants constants,
+            CommonApplicationResources resources,
+            CommonApplicationMessages messages, CommonApplicationTemplates 
templates) {
+        super(constants, resources, messages, templates);
+    }
+
+    protected VmPopupWidgetConfigMap createWidgetConfiguration() {
+        VmPopupWidgetConfigMap config = new VmPopupWidgetConfigMap();
+
+        config.put(hostTab, hiddenField());
+        config.put(resourceAllocationTab, hiddenField());
+        config.put(templateEditor, hiddenField());
+        config.put(poolTab, hiddenField());
+
+        config.put(quotaEditor, simpleField());
+
+        return config;
+    }
+
+    @Override
+    protected void generateIds() {
+        // todo
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
index 3a6ffd0..a2407ec 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
@@ -4,6 +4,7 @@
 import java.util.Map;
 
 import org.ovirt.engine.core.common.VdcActionUtils;
+import org.ovirt.engine.core.common.action.AddVmTemplateParameters;
 import org.ovirt.engine.core.common.action.MoveOrCopyParameters;
 import org.ovirt.engine.core.common.action.UpdateVmTemplateParameters;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
@@ -14,9 +15,11 @@
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.MigrationSupport;
 import org.ovirt.engine.core.common.businessentities.Quota;
+import org.ovirt.engine.core.common.businessentities.TemplateType;
 import org.ovirt.engine.core.common.businessentities.UsbPolicy;
 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.VmOsType;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VmTemplateStatus;
@@ -35,11 +38,19 @@
 import org.ovirt.engine.ui.uicommonweb.Cloner;
 import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor;
+import org.ovirt.engine.ui.uicommonweb.builders.vm.CommonUnitToVmBuilder;
+import org.ovirt.engine.ui.uicommonweb.builders.vm.KernelParamsUnitToVmBuilder;
+import 
org.ovirt.engine.ui.uicommonweb.builders.vm.MigrationSupportVmToUnitBuilder;
+import org.ovirt.engine.ui.uicommonweb.builders.vm.QuotaUnitToVmBuilder;
+import org.ovirt.engine.ui.uicommonweb.builders.vm.UsbPolicyUntiToVmBuilder;
+import org.ovirt.engine.ui.uicommonweb.builders.vm.VmSpecificUnitToVmBuilder;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ExportVmModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.TemplateNewVmModelBehavior;
 import org.ovirt.engine.ui.uicommonweb.models.vms.TemplateVmModelBehavior;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
@@ -591,7 +602,6 @@
                     .blankTemplateCannotBeEdited());
             getEditCommand().setIsExecutionAllowed(false);
         }
-
         getRemoveCommand().setIsExecutionAllowed(items.size() > 0
                 && VdcActionUtils.CanExecute(items, VmTemplate.class, 
VdcActionType.RemoveVmTemplate));
         if (getRemoveCommand().getIsExecutionAllowed() && blankSelected)
@@ -675,10 +685,78 @@
             OnSave();
         } else if (StringHelper.stringsEqual(command.getName(), "OnRemove")) 
{//$NON-NLS-1$
             OnRemove();
+        } else if (StringHelper.stringsEqual(command.getName(), 
"onNewTemplateSave")) {//$NON-NLS-1$
+            onNewTemplateSave();
         }
     }
 
+    @SuppressWarnings("unchecked")
+    private void onNewTemplateSave() {
+        UnitVmModel model = (UnitVmModel) getWindow();
+
+        if (!model.Validate()) {
+            model.setIsValid(false);
+            return;
+        }
+
+        VM newVm = new VM();
+
+        model.StartProgress(null);
+
+        // TODO copy only what is indeed needed
+        new BuilderExecutor<UnitVmModel, VM>(
+                new CommonUnitToVmBuilder(),
+                new VmSpecificUnitToVmBuilder(),
+                new MigrationSupportVmToUnitBuilder(),
+                new KernelParamsUnitToVmBuilder(),
+                new UsbPolicyUntiToVmBuilder(),
+                new QuotaUnitToVmBuilder()).build(model, newVm);
+
+        AddVmTemplateParameters addVmTemplateParameters =
+                new AddVmTemplateParameters(newVm,
+                        (String) model.getName().getEntity(),
+                        (String) model.getDescription().getEntity());
+        addVmTemplateParameters.setTemplateType(TemplateType.INSTANCE_TYPE);
+
+        Frontend.RunAction(VdcActionType.AddVmTemplate, 
addVmTemplateParameters,
+                new IFrontendActionAsyncCallback() {
+                    @Override
+                    public void Executed(FrontendActionAsyncResult result) {
+                        TemplateListModel templateTypeListModel = 
(TemplateListModel) result.getState();
+                        templateTypeListModel.getWindow().StopProgress();
+                        VdcReturnValueBase returnValueBase = 
result.getReturnValue();
+                        if (returnValueBase != null && 
returnValueBase.getSucceeded())
+                        {
+                            templateTypeListModel.Cancel();
+                        }
+
+                    }
+                }, this);
+    }
+
     private void newTemplate() {
+
+        if (getWindow() != null) {
+            return;
+        }
+
+        UnitVmModel model = new UnitVmModel(new TemplateNewVmModelBehavior());
+        setWindow(model);
+        
model.setTitle(ConstantsManager.getInstance().getConstants().newTemplateTitle());
+        model.setHashName("new_template"); //$NON-NLS-1$
+
+        model.setCustomPropertiesKeysList(getCustomPropertiesKeysList());
+        model.Initialize(this.getSystemTreeSelectedItem());
+
+        UICommand command = new UICommand("onNewTemplateSave", this); 
//$NON-NLS-1$
+        command.setTitle(ConstantsManager.getInstance().getConstants().ok());
+        command.setIsDefault(true);
+        model.getCommands().add(command);
+
+        command = new UICommand("Cancel", this); //$NON-NLS-1$
+        
command.setTitle(ConstantsManager.getInstance().getConstants().cancel());
+        command.setIsCancel(true);
+        model.getCommands().add(command);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateNewVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateNewVmModelBehavior.java
new file mode 100644
index 0000000..26f2b6c
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateNewVmModelBehavior.java
@@ -0,0 +1,5 @@
+package org.ovirt.engine.ui.uicommonweb.models.vms;
+
+public class TemplateNewVmModelBehavior extends NewVmModelBehavior {
+
+}
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 8a75d72..298e03c 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
@@ -517,6 +517,9 @@
     @DefaultStringValue("General")
     String templateGeneralSubTabLabel();
 
+    @DefaultStringValue("General")
+    String instanceTypeGeneralSubTabLabel();
+
     @DefaultStringValue("Virtual Machines")
     String templateVmSubTabLabel();
 
@@ -1428,7 +1431,7 @@
     @DefaultStringValue("Edit")
     String editTemplate();
 
-    @DefaultStringValue("New Template")
+    @DefaultStringValue("New")
     String newTemplate();
 
     @DefaultStringValue("New")
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
index c9a19e9..45a9111 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java
@@ -5,6 +5,7 @@
 import org.ovirt.engine.core.common.businessentities.AuditLog;
 import org.ovirt.engine.core.common.businessentities.DbUser;
 import org.ovirt.engine.core.common.businessentities.Disk;
+import org.ovirt.engine.core.common.businessentities.InstanceType;
 import org.ovirt.engine.core.common.businessentities.Quota;
 import org.ovirt.engine.core.common.businessentities.QuotaStorage;
 import org.ovirt.engine.core.common.businessentities.QuotaVdsGroup;
@@ -12,12 +13,12 @@
 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.VmPool;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.event_subscriber;
 import org.ovirt.engine.core.common.businessentities.permissions;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
-import org.ovirt.engine.core.common.businessentities.VmPool;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionEntity;
@@ -63,6 +64,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostVmListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.instanceType.InstanceTypeGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkClusterListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkHostListModel;
@@ -91,6 +93,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageVmListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.TemplateBackupModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.VmBackupModel;
+import org.ovirt.engine.ui.uicommonweb.models.templates.InstanceTypeListModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateDiskListModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateEventListModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateGeneralModel;
@@ -175,6 +178,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostInterfacePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostPermissionPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostVmPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.instanceType.InstanceTypeSubTabPanelPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.instanceType.SubTabInstanceTypeGeneralPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.NetworkSubTabPanelPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.SubTabNetworkClusterPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.SubTabNetworkGeneralPresenter;
@@ -229,8 +234,7 @@
 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.VirtualMachineSubTabPanelPresenter;
-import org.ovirt.engine.ui.uicommonweb.models.templates.InstanceTypeListModel;
-import org.ovirt.engine.core.common.businessentities.InstanceType;
+
 import com.google.gwt.inject.client.AsyncProvider;
 import com.google.inject.Provider;
 
@@ -548,6 +552,13 @@
 
     SearchableDetailModelProvider<AuditLog, TemplateListModel, 
TemplateEventListModel> getSubTabTemplateEventModelProvider();
 
+    // Instance Type
+    AsyncProvider<InstanceTypeSubTabPanelPresenter> 
getInstanceTypeSubTabPanelPresenter();
+
+    AsyncProvider<SubTabInstanceTypeGeneralPresenter> 
getSubTabInstanceTypeGeneralPresenter();
+
+    DetailModelProvider<InstanceTypeListModel, InstanceTypeGeneralModel> 
getSubTabInstanceTypeGeneralModelProvider();
+
     // User
 
     AsyncProvider<UserSubTabPanelPresenter> getUserSubTabPanelPresenter();
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 a9b9281..93c0756 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
@@ -135,6 +135,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostInterfacePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostPermissionPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostVmPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.instanceType.InstanceTypeSubTabPanelPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.instanceType.SubTabInstanceTypeGeneralPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.NetworkSubTabPanelPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.SubTabNetworkClusterPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.SubTabNetworkGeneralPresenter;
@@ -321,6 +323,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostInterfaceView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostPermissionView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.host.SubTabHostVmView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.instanceType.InstanceTypeSubTabPanelView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.instanceType.SubTabInstanceTypeGeneralView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.network.NetworkSubTabPanelView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.network.SubTabNetworkClusterView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.network.SubTabNetworkGeneralView;
@@ -727,6 +731,17 @@
                 SubTabTemplateEventView.class,
                 SubTabTemplateEventPresenter.ProxyDef.class);
 
+        // Instance Type
+        bindPresenter(InstanceTypeSubTabPanelPresenter.class,
+                InstanceTypeSubTabPanelPresenter.ViewDef.class,
+                InstanceTypeSubTabPanelView.class,
+                InstanceTypeSubTabPanelPresenter.ProxyDef.class);
+
+        bindPresenter(SubTabInstanceTypeGeneralPresenter.class,
+                SubTabInstanceTypeGeneralPresenter.ViewDef.class,
+                SubTabInstanceTypeGeneralView.class,
+                SubTabInstanceTypeGeneralPresenter.ProxyDef.class);
+
         // User
         bindPresenter(UserSubTabPanelPresenter.class,
                 UserSubTabPanelPresenter.ViewDef.class,
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/InstanceTypeModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/InstanceTypeModule.java
index b76ea09..94c00d4 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/InstanceTypeModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/InstanceTypeModule.java
@@ -1,12 +1,20 @@
 package org.ovirt.engine.ui.webadmin.gin.uicommon;
 
 import org.ovirt.engine.core.common.businessentities.InstanceType;
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider;
+import org.ovirt.engine.ui.common.uicommon.model.DetailTabModelProvider;
 import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
 import org.ovirt.engine.ui.common.uicommon.model.MainTabModelProvider;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.Model;
+import 
org.ovirt.engine.ui.uicommonweb.models.instanceType.InstanceTypeGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.templates.InstanceTypeListModel;
 import org.ovirt.engine.ui.webadmin.gin.ClientGinjector;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.InstanceTypePopupPresenterWidget;
 
 import com.google.gwt.inject.client.AbstractGinModule;
+import com.google.inject.Provider;
 import com.google.inject.Provides;
 import com.google.inject.Singleton;
 
@@ -14,8 +22,29 @@
 
     @Provides
     @Singleton
-    public MainModelProvider<InstanceType, InstanceTypeListModel> 
getTemplateListProvider(ClientGinjector ginjector) {
-        return new MainTabModelProvider<InstanceType, 
InstanceTypeListModel>(ginjector, InstanceTypeListModel.class);
+    public MainModelProvider<InstanceType, InstanceTypeListModel> 
getTemplateListProvider(ClientGinjector ginjector,
+            final Provider<InstanceTypePopupPresenterWidget> 
instanceTypePopupProvider) {
+        return new MainTabModelProvider<InstanceType, 
InstanceTypeListModel>(ginjector, InstanceTypeListModel.class) {
+
+            @Override
+            public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> 
getModelPopup(InstanceTypeListModel source,
+                    UICommand lastExecutedCommand,
+                    Model windowModel) {
+                if (lastExecutedCommand == 
getModel().getNewInstanceTypeCommand()) {
+                    return instanceTypePopupProvider.get();
+                } else {
+                    return super.getModelPopup(source, lastExecutedCommand, 
windowModel);
+                }
+            }
+        };
+    }
+
+    @Provides
+    @Singleton
+    public DetailModelProvider<InstanceTypeListModel, 
InstanceTypeGeneralModel> getInstanceTypeGeneralProvider(ClientGinjector 
ginjector) {
+        return new DetailTabModelProvider<InstanceTypeListModel, 
InstanceTypeGeneralModel>(ginjector,
+                InstanceTypeListModel.class,
+                InstanceTypeGeneralModel.class);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/TemplateModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/TemplateModule.java
index cc695a2..d30566d 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/TemplateModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/TemplateModule.java
@@ -2,7 +2,6 @@
 
 import org.ovirt.engine.core.common.businessentities.AuditLog;
 import org.ovirt.engine.core.common.businessentities.VM;
-import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.permissions;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
@@ -33,7 +32,6 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.DisksAllocationPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.template.TemplateInterfacePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.template.TemplateNewPresenterWidget;
-import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.InstanceTypePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.TemplatePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmExportPopupPresenterWidget;
 
@@ -53,8 +51,7 @@
             final Provider<VmExportPopupPresenterWidget> exportPopupProvider,
             final Provider<DisksAllocationPopupPresenterWidget> 
copyPopupProvider,
             final Provider<RemoveConfirmationPopupPresenterWidget> 
removeConfirmPopupProvider,
-            final Provider<TemplatePopupPresenterWidget> templatePopupProvider,
-            final Provider<InstanceTypePopupPresenterWidget> 
instanceTypePopupProvider) {
+            final Provider<TemplatePopupPresenterWidget> 
templatePopupProvider) {
         return new MainTabModelProvider<VmTemplate, 
TemplateListModel>(ginjector, TemplateListModel.class) {
             @Override
             public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> 
getModelPopup(TemplateListModel source,
@@ -67,8 +64,6 @@
                     return exportPopupProvider.get();
                 } else if (lastExecutedCommand == getModel().getCopyCommand()) 
{
                     return copyPopupProvider.get();
-                } else if (lastExecutedCommand == 
getModel().getNewInstanceTypeCommand()) {
-                    return instanceTypePopupProvider.get();
                 } else if (lastExecutedCommand == 
getModel().getNewTemplateCommand()) {
                     return templatePopupProvider.get();
                 } else {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
index 5ea437d..565b0da 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java
@@ -21,7 +21,7 @@
 
     public static final String virtualMachineMainTabPlace = "vms"; 
//$NON-NLS-1$
 
-    public static final String instanceTypesTabPlace = "instanceTypes"; 
//$NON-NLS-1$
+    public static final String instanceTypesMainTabPlace = "instanceTypes"; 
//$NON-NLS-1$
 
     public static final String poolMainTabPlace = "pools"; //$NON-NLS-1$
 
@@ -201,6 +201,10 @@
     public static final String templateEventSubTabPlace = templateMainTabPlace 
+ SUB_TAB_PREFIX
             + "events"; //$NON-NLS-1$
 
+    // Instance Type
+    public static final String instanceTypeGeneralSubTabPlace = 
instanceTypesMainTabPlace + SUB_TAB_PREFIX
+            + "general"; //$NON-NLS-1$
+
     // User
 
     public static final String userGeneralSubTabPlace = userMainTabPlace + 
SUB_TAB_PREFIX
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/vm/TemplatePopupPresenterWidget.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/vm/TemplatePopupPresenterWidget.java
new file mode 100644
index 0000000..47fb73b
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/vm/TemplatePopupPresenterWidget.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm;
+
+import 
org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget;
+import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmPopup;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class TemplatePopupPresenterWidget extends 
AbstractModelBoundPopupPresenterWidget<UnitVmModel, 
TemplatePopupPresenterWidget.ViewDef> {
+
+    public interface ViewDef extends 
AbstractModelBoundPopupPresenterWidget.ViewDef<UnitVmModel> {
+        VmPopup getPopup();
+    }
+
+    @Inject
+    public TemplatePopupPresenterWidget(EventBus eventBus, ViewDef view) {
+        super(eventBus, view);
+    }
+
+    @Override
+    public void init(UnitVmModel model) {
+        super.init(model);
+
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabInstanceTypePresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabInstanceTypePresenter.java
index b9aa1b9..4de98a5 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabInstanceTypePresenter.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabInstanceTypePresenter.java
@@ -41,7 +41,7 @@
     }
 
     @ProxyCodeSplit
-    @NameToken(ApplicationPlaces.instanceTypesTabPlace)
+    @NameToken(ApplicationPlaces.instanceTypesMainTabPlace)
     public interface ProxyDef extends 
TabContentProxyPlace<MainTabInstanceTypePresenter> {
     }
 
@@ -61,7 +61,7 @@
 
     @Override
     protected PlaceRequest getMainTabRequest() {
-        return new PlaceRequest(ApplicationPlaces.instanceTypesTabPlace);
+        return new PlaceRequest(ApplicationPlaces.instanceTypesMainTabPlace);
     }
 
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/TemplatePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/TemplatePopupView.java
new file mode 100644
index 0000000..ef2e3cf
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/TemplatePopupView.java
@@ -0,0 +1,36 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.popup.vm;
+
+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.AbstractModelBoundWidgetPopupView;
+import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.TemplatePopupWidget;
+import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmPopup;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.TemplatePopupPresenterWidget;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+
+public class TemplatePopupView extends 
AbstractModelBoundWidgetPopupView<UnitVmModel> implements 
TemplatePopupPresenterWidget.ViewDef {
+
+    interface ViewIdHandler extends ElementIdHandler<TemplatePopupView> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    @Inject
+    public TemplatePopupView(EventBus eventBus, ApplicationResources 
resources, ApplicationConstants constants, CommonApplicationMessages messages, 
CommonApplicationTemplates templates) {
+        super(eventBus, resources, new TemplatePopupWidget(constants, 
resources, messages, templates), "670px", "610px"); //$NON-NLS-1$ //$NON-NLS-2$
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+    }
+
+    @Override
+    public VmPopup getPopup() {
+        return (VmPopup) getContentWidget();
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabInstanceTypesView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabInstanceTypesView.java
index efd764f..8a842d7 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabInstanceTypesView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabInstanceTypesView.java
@@ -4,11 +4,13 @@
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.templates.InstanceTypeListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabInstanceTypePresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.AbstractMainTabWithDetailsTableView;
+import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition;
 
 import com.google.gwt.core.client.GWT;
 import com.google.inject.Inject;
@@ -39,6 +41,13 @@
         };
         getTable().addColumn(nameColumn, constants.namePool(), "150px"); 
//$NON-NLS-1$
 
+        getTable().addActionButton(new 
WebAdminButtonDefinition<InstanceType>(constants.newInstanceType()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return getMainModel().getNewInstanceTypeCommand();
+            }
+        });
+
         // TextColumnWithTooltip<VmTemplate> nameColumn = new 
TextColumnWithTooltip<VmTemplate>() {
         // @Override
         // public String getValue(VmTemplate object) {


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

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

Reply via email to