Daniel Erez has uploaded a new change for review.

Change subject: webadmin: import entities from data SDs - sub-tabs
......................................................................

webadmin: import entities from data SDs - sub-tabs

Added import VMs/Templates from data storage domains
sub-tabs (under storage main-tab).

Feature-Page:
http://www.ovirt.org/Features/ImportStorageDomain#Import_VM.2FTemplate_sub-tab

Change-Id: Id4f0a6af44c4e066cf4e0b876331f7c8ce78b79c
Signed-off-by: Daniel Erez <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterEntityListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterTemplateListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterVmListModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterTemplatePresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterVmPresenter.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterTemplateView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterVmView.java
12 files changed, 503 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/04/28604/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
index 2c7f512c..72bf27a 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java
@@ -200,6 +200,10 @@
 
     images("images", HelpTagType.UNKNOWN), //$NON-NLS-1$
 
+    register_vms("register_vms", HelpTagType.WEBADMIN), //$NON-NLS-1$
+
+    register_templates("register_templates", HelpTagType.WEBADMIN), 
//$NON-NLS-1$
+
     import_conflict("import_conflict", HelpTagType.WEBADMIN, "during import of 
a VM/Template: A dialog that warns that there is a name conflict between the 
import candidate and an existing VM/Template in the system"), //$NON-NLS-1$ 
//$NON-NLS-2$
 
     import_images("import_images", HelpTagType.WEBADMIN, "[Glance integration] 
Storage main tab -> Images sub-tab (only for 'ISO' storage domain) -> 'Import 
Image(s)' dialog"), //$NON-NLS-1$ //$NON-NLS-2$
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
index 58beb54..863c050 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
@@ -189,6 +189,8 @@
     private EntityModel vmBackupModel;
     private EntityModel templateBackupModel;
     private ListModel dcListModel;
+    private ListModel vmRegisterListModel;
+    private ListModel templateRegisterListModel;
     private ListModel vmListModel;
     private ListModel templateListModel;
     private ListModel isoListModel;
@@ -225,6 +227,12 @@
         templateBackupModel = new TemplateBackupModel();
         templateBackupModel.setIsAvailable(false);
 
+        vmRegisterListModel = new StorageRegisterVmListModel();
+        vmRegisterListModel.setIsAvailable(false);
+
+        templateRegisterListModel = new StorageRegisterTemplateListModel();
+        templateRegisterListModel.setIsAvailable(false);
+
         vmListModel = new StorageVmListModel();
         vmListModel.setIsAvailable(false);
 
@@ -245,6 +253,8 @@
         list.add(dcListModel);
         list.add(vmBackupModel);
         list.add(templateBackupModel);
+        list.add(vmRegisterListModel);
+        list.add(templateRegisterListModel);
         list.add(vmListModel);
         list.add(templateListModel);
         list.add(isoListModel);
@@ -1065,6 +1075,8 @@
 
             vmListModel.setIsAvailable(isDataStorage);
             templateListModel.setIsAvailable(isDataStorage);
+            vmRegisterListModel.setIsAvailable(isDataStorage);
+            templateRegisterListModel.setIsAvailable(isDataStorage);
             diskListModel.setIsAvailable(isDataStorage);
             snapshotListModel.setIsAvailable(isDataStorage);
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterEntityListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterEntityListModel.java
new file mode 100644
index 0000000..362e2d7
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterEntityListModel.java
@@ -0,0 +1,34 @@
+package org.ovirt.engine.ui.uicommonweb.models.storage;
+
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
+
+public abstract class StorageRegisterEntityListModel extends 
SearchableListModel {
+
+    public StorageRegisterEntityListModel() {
+        setIsTimerDisabled(true);
+    }
+
+    @Override
+    protected void onEntityChanged() {
+        super.onEntityChanged();
+        getSearchCommand().execute();
+    }
+
+    @Override
+    public StorageDomain getEntity() {
+        return (StorageDomain) super.getEntity();
+    }
+
+    public void setEntity(StorageDomain value)
+    {
+        super.setEntity(value);
+    }
+
+    @Override
+    public void search() {
+        if (getEntity() != null) {
+            super.search();
+        }
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterTemplateListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterTemplateListModel.java
new file mode 100644
index 0000000..54bda9a
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterTemplateListModel.java
@@ -0,0 +1,45 @@
+package org.ovirt.engine.ui.uicommonweb.models.storage;
+
+import org.ovirt.engine.core.common.businessentities.VM;
+import 
org.ovirt.engine.core.common.queries.UnregisteredEntitiesQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
+import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+import java.util.ArrayList;
+
+public class StorageRegisterTemplateListModel extends 
StorageRegisterEntityListModel {
+
+    public StorageRegisterTemplateListModel() {
+        
setTitle(ConstantsManager.getInstance().getConstants().templateImportTitle());
+        setHelpTag(HelpTag.register_templates);
+        setHashName("register_templates"); //$NON-NLS-1$
+    }
+
+    @Override
+    protected void syncSearch() {
+        if (getEntity() == null) {
+            return;
+        }
+
+        UnregisteredEntitiesQueryParameters parameters = new 
UnregisteredEntitiesQueryParameters((getEntity()).getId());
+        parameters.setRefresh(getIsQueryFirstTime());
+
+        
Frontend.getInstance().runQuery(VdcQueryType.GetUnregisteredVmTemplates, 
parameters,
+                new AsyncQuery(this, new INewAsyncCallback() {
+                    @Override
+                    public void onSuccess(Object model, Object ReturnValue) {
+                        setItems((ArrayList<VM>) ((VdcQueryReturnValue) 
ReturnValue).getReturnValue());
+                    }
+                }));
+    }
+
+    @Override
+    protected String getListName() {
+        return "StorageRegisterTemplateListModel"; //$NON-NLS-1$
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterVmListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterVmListModel.java
new file mode 100644
index 0000000..8172d0a
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageRegisterVmListModel.java
@@ -0,0 +1,45 @@
+package org.ovirt.engine.ui.uicommonweb.models.storage;
+
+import org.ovirt.engine.core.common.businessentities.VM;
+import 
org.ovirt.engine.core.common.queries.UnregisteredEntitiesQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
+import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+import java.util.ArrayList;
+
+public class StorageRegisterVmListModel extends StorageRegisterEntityListModel 
{
+
+    public StorageRegisterVmListModel() {
+        
setTitle(ConstantsManager.getInstance().getConstants().vmImportTitle());
+        setHelpTag(HelpTag.register_vms);
+        setHashName("register_vms"); //$NON-NLS-1$
+    }
+
+    @Override
+    protected void syncSearch() {
+        if (getEntity() == null) {
+            return;
+        }
+
+        UnregisteredEntitiesQueryParameters parameters = new 
UnregisteredEntitiesQueryParameters((getEntity()).getId());
+        parameters.setRefresh(getIsQueryFirstTime());
+
+        Frontend.getInstance().runQuery(VdcQueryType.GetUnregisteredVms, 
parameters,
+                new AsyncQuery(this, new INewAsyncCallback() {
+                    @Override
+                    public void onSuccess(Object model, Object ReturnValue) {
+                        setItems((ArrayList<VM>) ((VdcQueryReturnValue) 
ReturnValue).getReturnValue());
+                    }
+                }));
+    }
+
+    @Override
+    protected String getListName() {
+        return "StorageRegisterVmListModel"; //$NON-NLS-1$
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
index 21a5151..f3885f0 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java
@@ -109,6 +109,8 @@
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageIsoListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterTemplateListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterVmListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageSnapshotListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageTemplateListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageVmListModel;
@@ -143,7 +145,7 @@
 
 import com.gwtplatform.mvp.client.annotations.DefaultGatekeeper;
 
-/**                                                                            
                           H
+/**
  * WebAdmin {@code Ginjector} extension interface.
  */
 public interface ClientGinjectorExtension {
@@ -221,6 +223,10 @@
 
     SearchableDetailModelProvider<VmTemplate, StorageListModel, 
TemplateBackupModel> getSubTabStorageTemplateBackupModelProvider();
 
+    SearchableDetailModelProvider<VM, StorageListModel, 
StorageRegisterVmListModel> getSubTabStorageRegisterVmModelProvider();
+
+    SearchableDetailModelProvider<VmTemplate, StorageListModel, 
StorageRegisterTemplateListModel> 
getSubTabStorageRegisterTemplateModelProvider();
+
     SearchableDetailModelProvider<VM, StorageListModel, StorageVmListModel> 
getSubTabStorageVmModelProvider();
 
     SearchableDetailModelProvider<VmTemplate, StorageListModel, 
StorageTemplateListModel> getSubTabStorageTemplateModelProvider();
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 09ead93..fbf27ee 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
@@ -199,6 +199,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageGeneralPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageIsoPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStoragePermissionPresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageRegisterTemplatePresenter;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageRegisterVmPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageSnapshotPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageTemplateBackupPresenter;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageTemplatePresenter;
@@ -425,6 +427,8 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageGeneralView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageIsoView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStoragePermissionView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageRegisterTemplateView;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageRegisterVmView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageSnapshotView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageTemplateBackupView;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.storage.SubTabStorageTemplateView;
@@ -643,6 +647,14 @@
                 SubTabStorageTemplateBackupPresenter.ViewDef.class,
                 SubTabStorageTemplateBackupView.class,
                 SubTabStorageTemplateBackupPresenter.ProxyDef.class);
+        bindPresenter(SubTabStorageRegisterVmPresenter.class,
+                SubTabStorageRegisterVmPresenter.ViewDef.class,
+                SubTabStorageRegisterVmView.class,
+                SubTabStorageRegisterVmPresenter.ProxyDef.class);
+        bindPresenter(SubTabStorageRegisterTemplatePresenter.class,
+                SubTabStorageRegisterTemplatePresenter.ViewDef.class,
+                SubTabStorageRegisterTemplateView.class,
+                SubTabStorageRegisterTemplatePresenter.ProxyDef.class);
         bindPresenter(SubTabStorageVmPresenter.class,
                 SubTabStorageVmPresenter.ViewDef.class,
                 SubTabStorageVmView.class,
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
index b4d09ff..2940762 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/StorageModule.java
@@ -30,6 +30,8 @@
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageIsoListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterTemplateListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterVmListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageSnapshotListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageTemplateListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.StorageVmListModel;
@@ -313,6 +315,26 @@
 
     @Provides
     @Singleton
+    public SearchableDetailModelProvider<VM, StorageListModel, 
StorageRegisterVmListModel> getStorageRegisterVmListProvider(
+            EventBus eventBus, 
Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider) {
+        return new SearchableDetailTabModelProvider<VM, StorageListModel, 
StorageRegisterVmListModel>(
+                eventBus, defaultConfirmPopupProvider,
+                StorageListModel.class,
+                StorageRegisterVmListModel.class);
+    }
+
+    @Provides
+    @Singleton
+    public SearchableDetailModelProvider<VmTemplate, StorageListModel, 
StorageRegisterTemplateListModel> getStorageRegisterTemplateListProvider(
+            EventBus eventBus, 
Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider) {
+        return new SearchableDetailTabModelProvider<VmTemplate, 
StorageListModel, StorageRegisterTemplateListModel>(
+                eventBus, defaultConfirmPopupProvider,
+                StorageListModel.class,
+                StorageRegisterTemplateListModel.class);
+    }
+
+    @Provides
+    @Singleton
     public SearchableDetailModelProvider<VM, StorageListModel, VmBackupModel> 
getVmBackupProvider(EventBus eventBus,
             Provider<DefaultConfirmationPopupPresenterWidget> 
defaultConfirmPopupProvider,
             final Provider<ImportVmPopupPresenterWidget> importVmPopupProvider,
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterTemplatePresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterTemplatePresenter.java
new file mode 100644
index 0000000..428d90b
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterTemplatePresenter.java
@@ -0,0 +1,60 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage;
+
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
+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.storage.StorageListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterTemplateListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.StorageSelectionChangeEvent;
+
+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.PlaceRequest;
+import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace;
+
+public class SubTabStorageRegisterTemplatePresenter extends 
AbstractSubTabPresenter<StorageDomain, StorageListModel, 
StorageRegisterTemplateListModel, 
SubTabStorageRegisterTemplatePresenter.ViewDef, 
SubTabStorageRegisterTemplatePresenter.ProxyDef> {
+
+    @ProxyCodeSplit
+    @NameToken(ApplicationPlaces.storageTemplateBackupSubTabPlace)
+    public interface ProxyDef extends 
TabContentProxyPlace<SubTabStorageRegisterTemplatePresenter> {
+    }
+
+    public interface ViewDef extends 
AbstractSubTabPresenter.ViewDef<StorageDomain> {
+    }
+
+    @TabInfo(container = StorageSubTabPanelPresenter.class)
+    static TabData getTabData(ApplicationConstants applicationConstants,
+            SearchableDetailModelProvider<VmTemplate, StorageListModel, 
StorageRegisterTemplateListModel> modelProvider) {
+        return new 
ModelBoundTabData(applicationConstants.storageTemplateBackupSubTabLabel(), 3, 
modelProvider);
+    }
+
+    @Inject
+    public SubTabStorageRegisterTemplatePresenter(EventBus eventBus, ViewDef 
view, ProxyDef proxy,
+                                                  PlaceManager placeManager,
+                                                  
SearchableDetailModelProvider<VmTemplate, StorageListModel, 
StorageRegisterTemplateListModel> modelProvider) {
+        super(eventBus, view, proxy, placeManager, modelProvider,
+                StorageSubTabPanelPresenter.TYPE_SetTabContent);
+    }
+
+    @Override
+    protected PlaceRequest getMainTabRequest() {
+        return PlaceRequestFactory.get(ApplicationPlaces.storageMainTabPlace);
+    }
+
+    @ProxyEvent
+    public void onStorageSelectionChange(StorageSelectionChangeEvent event) {
+        updateMainTabSelection(event.getSelectedItems());
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterVmPresenter.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterVmPresenter.java
new file mode 100644
index 0000000..4b9b9b8
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/SubTabStorageRegisterVmPresenter.java
@@ -0,0 +1,60 @@
+package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage;
+
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.VM;
+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.storage.StorageListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterVmListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.StorageSelectionChangeEvent;
+
+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.PlaceRequest;
+import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace;
+
+public class SubTabStorageRegisterVmPresenter extends 
AbstractSubTabPresenter<StorageDomain, StorageListModel, 
StorageRegisterVmListModel, SubTabStorageRegisterVmPresenter.ViewDef, 
SubTabStorageRegisterVmPresenter.ProxyDef> {
+
+    @ProxyCodeSplit
+    @NameToken(ApplicationPlaces.storageVmBackupSubTabPlace)
+    public interface ProxyDef extends 
TabContentProxyPlace<SubTabStorageRegisterVmPresenter> {
+    }
+
+    public interface ViewDef extends 
AbstractSubTabPresenter.ViewDef<StorageDomain> {
+    }
+
+    @TabInfo(container = StorageSubTabPanelPresenter.class)
+    static TabData getTabData(ApplicationConstants applicationConstants,
+            SearchableDetailModelProvider<VM, StorageListModel, 
StorageRegisterVmListModel> modelProvider) {
+        return new 
ModelBoundTabData(applicationConstants.storageVmBackupSubTabLabel(), 2, 
modelProvider);
+    }
+
+    @Inject
+    public SubTabStorageRegisterVmPresenter(EventBus eventBus, ViewDef view, 
ProxyDef proxy,
+                                            PlaceManager placeManager,
+                                            SearchableDetailModelProvider<VM, 
StorageListModel, StorageRegisterVmListModel> modelProvider) {
+        super(eventBus, view, proxy, placeManager, modelProvider,
+                StorageSubTabPanelPresenter.TYPE_SetTabContent);
+    }
+
+    @Override
+    protected PlaceRequest getMainTabRequest() {
+        return PlaceRequestFactory.get(ApplicationPlaces.storageMainTabPlace);
+    }
+
+    @ProxyEvent
+    public void onStorageSelectionChange(StorageSelectionChangeEvent event) {
+        updateMainTabSelection(event.getSelectedItems());
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterTemplateView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterTemplateView.java
new file mode 100644
index 0000000..8ccbfea
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterTemplateView.java
@@ -0,0 +1,101 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.tab.storage;
+
+import org.ovirt.engine.core.common.businessentities.OriginType;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
+import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
+import org.ovirt.engine.ui.common.widget.table.column.EnumColumn;
+import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterTemplateListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageRegisterTemplatePresenter;
+import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView;
+
+import com.google.inject.Inject;
+import org.ovirt.engine.ui.webadmin.widget.table.column.GeneralDateTimeColumn;
+
+import java.util.Date;
+
+public class SubTabStorageRegisterTemplateView extends 
AbstractSubTabTableView<StorageDomain, VmTemplate, StorageListModel, 
StorageRegisterTemplateListModel>
+        implements SubTabStorageRegisterTemplatePresenter.ViewDef {
+
+    @Inject
+    public 
SubTabStorageRegisterTemplateView(SearchableDetailModelProvider<VmTemplate, 
StorageListModel, StorageRegisterTemplateListModel> modelProvider,
+                                             ApplicationResources resources, 
ApplicationConstants constants) {
+        super(modelProvider);
+        initTable(resources, constants);
+        initWidget(getTable());
+    }
+
+    void initTable(ApplicationResources resources, final ApplicationConstants 
constants) {
+        getTable().enableColumnResizing();
+
+        TextColumnWithTooltip<VmTemplate> nameColumn = new 
TextColumnWithTooltip<VmTemplate>() {
+            @Override
+            public String getValue(VmTemplate object) {
+                return object.getName();
+            }
+        };
+        getTable().addColumn(nameColumn, constants.nameVm(), "150px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VmTemplate> originColumn = new 
EnumColumn<VmTemplate, OriginType>() {
+            @Override
+            protected OriginType getRawValue(VmTemplate object) {
+                return object.getOrigin();
+            }
+        };
+        getTable().addColumn(originColumn, constants.originVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VmTemplate> memoryColumn = new 
TextColumnWithTooltip<VmTemplate>() {
+            @Override
+            public String getValue(VmTemplate object) {
+                return String.valueOf(object.getMemSizeMb()) + " MB"; 
//$NON-NLS-1$
+            }
+        };
+        getTable().addColumn(memoryColumn, constants.memoryVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VmTemplate> cpuColumn = new 
TextColumnWithTooltip<VmTemplate>() {
+            @Override
+            public String getValue(VmTemplate object) {
+                return String.valueOf(object.getNumOfCpus());
+            }
+        };
+        getTable().addColumn(cpuColumn, constants.cpusVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VmTemplate> archColumn = new 
TextColumnWithTooltip<VmTemplate>() {
+            @Override
+            public String getValue(VmTemplate object) {
+                return String.valueOf(object.getClusterArch());
+            }
+        };
+        getTable().addColumn(archColumn, constants.architectureVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VmTemplate> diskColumn = new 
TextColumnWithTooltip<VmTemplate>() {
+            @Override
+            public String getValue(VmTemplate object) {
+                return String.valueOf(object.getDiskList().size());
+            }
+        };
+        getTable().addColumn(diskColumn, constants.disksVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VmTemplate> creationDateColumn = new 
GeneralDateTimeColumn<VmTemplate>() {
+            @Override
+            protected Date getRawValue(VmTemplate object) {
+                return object.getCreationDate();
+            }
+        };
+        getTable().addColumn(creationDateColumn, constants.creationDateVm(), 
"200px"); //$NON-NLS-1$
+
+        TextColumnWithTooltip<VmTemplate> exportDateColumn = new 
GeneralDateTimeColumn<VmTemplate>() {
+            @Override
+            protected Date getRawValue(VmTemplate object) {
+                return object.getExportDate();
+            }
+        };
+        getTable().addColumn(exportDateColumn, constants.exportDateVm(), 
"200px"); //$NON-NLS-1$
+
+        getTable().showRefreshButton();
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterVmView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterVmView.java
new file mode 100644
index 0000000..b0f1511
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/storage/SubTabStorageRegisterVmView.java
@@ -0,0 +1,101 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.tab.storage;
+
+import org.ovirt.engine.core.common.businessentities.OriginType;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
+import org.ovirt.engine.ui.common.widget.table.column.EnumColumn;
+import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.models.storage.StorageListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.storage.StorageRegisterVmListModel;
+import org.ovirt.engine.ui.webadmin.ApplicationConstants;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.storage.SubTabStorageRegisterVmPresenter;
+import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView;
+
+import com.google.inject.Inject;
+import org.ovirt.engine.ui.webadmin.widget.table.column.GeneralDateTimeColumn;
+
+import java.util.Date;
+
+public class SubTabStorageRegisterVmView extends 
AbstractSubTabTableView<StorageDomain, VM, StorageListModel, 
StorageRegisterVmListModel>
+        implements SubTabStorageRegisterVmPresenter.ViewDef {
+
+    @Inject
+    public SubTabStorageRegisterVmView(SearchableDetailModelProvider<VM, 
StorageListModel, StorageRegisterVmListModel> modelProvider,
+                                       ApplicationResources resources, 
ApplicationConstants constants) {
+        super(modelProvider);
+        initTable(resources, constants);
+        initWidget(getTable());
+    }
+
+    void initTable(ApplicationResources resources, final ApplicationConstants 
constants) {
+        getTable().enableColumnResizing();
+
+        TextColumnWithTooltip<VM> nameColumn = new TextColumnWithTooltip<VM>() 
{
+            @Override
+            public String getValue(VM object) {
+                return object.getName();
+            }
+        };
+        getTable().addColumn(nameColumn, constants.nameVm(), "150px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VM> originColumn = new EnumColumn<VM, 
OriginType>() {
+            @Override
+            protected OriginType getRawValue(VM object) {
+                return object.getOrigin();
+            }
+        };
+        getTable().addColumn(originColumn, constants.originVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VM> memoryColumn = new 
TextColumnWithTooltip<VM>() {
+            @Override
+            public String getValue(VM object) {
+                return String.valueOf(object.getVmMemSizeMb()) + " MB"; 
//$NON-NLS-1$
+            }
+        };
+        getTable().addColumn(memoryColumn, constants.memoryVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VM> cpuColumn = new TextColumnWithTooltip<VM>() {
+            @Override
+            public String getValue(VM object) {
+                return String.valueOf(object.getNumOfCpus());
+            }
+        };
+        getTable().addColumn(cpuColumn, constants.cpusVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VM> archColumn = new TextColumnWithTooltip<VM>() 
{
+            @Override
+            public String getValue(VM object) {
+                return String.valueOf(object.getClusterArch());
+            }
+        };
+        getTable().addColumn(archColumn, constants.architectureVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VM> diskColumn = new TextColumnWithTooltip<VM>() 
{
+            @Override
+            public String getValue(VM object) {
+                return String.valueOf(object.getDiskMap().size());
+            }
+        };
+        getTable().addColumn(diskColumn, constants.disksVm(), "100px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<VM> creationDateColumn = new 
GeneralDateTimeColumn<VM>() {
+            @Override
+            protected Date getRawValue(VM object) {
+                return object.getVmCreationDate();
+            }
+        };
+        getTable().addColumn(creationDateColumn, constants.creationDateVm(), 
"200px"); //$NON-NLS-1$
+
+        TextColumnWithTooltip<VM> exportDateColumn = new 
GeneralDateTimeColumn<VM>() {
+            @Override
+            protected Date getRawValue(VM object) {
+                return object.getExportDate();
+            }
+        };
+        getTable().addColumn(exportDateColumn, constants.exportDateVm(), 
"200px"); //$NON-NLS-1$
+
+        getTable().showRefreshButton();
+    }
+}


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

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

Reply via email to