Arik Hadas has uploaded a new change for review.

Change subject: webadmin: load vms from export domain on-demand
......................................................................

webadmin: load vms from export domain on-demand

Do not load VMs from the export domain until the user click a 'load'
button.

Change-Id: I17d884236e738835f909f96662eee7a9d2428378
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml
4 files changed, 84 insertions(+), 98 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/96/42096/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
index 31241b2..90098a6 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
@@ -388,6 +388,9 @@
     @DefaultStringValue("General")
     String generalLabel();
 
+    @DefaultStringValue("Load")
+    String loadLabel();
+
     @DefaultStringValue("Disks")
     String disksLabel();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java
index b788f60..22afca6 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmsModel.java
@@ -19,7 +19,6 @@
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.common.utils.ObjectUtils;
-import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
@@ -30,6 +29,9 @@
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListWithSimpleDetailsModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
+import org.ovirt.engine.ui.uicompat.Event;
+import org.ovirt.engine.ui.uicompat.EventArgs;
+import org.ovirt.engine.ui.uicompat.IEventListener;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 
 import com.google.inject.Inject;
@@ -94,44 +96,20 @@
         initDataCenters();
     }
 
-    private void onImportSourceChanged() {
-        final ImportSource source = importSources.getSelectedItem();
-        if (source == null) {
-            return;
-        }
-
-        importedVmModels.setItems(null);
-        externalVmModels.setItems(null);
-
-        switch(source) {
-        case EXPORT_DOMAIN:
-            onExportDomainChosen();
-            break;
-        default:
-        }
-    }
-
-    private void onExportDomainChosen() {
-        StoragePool dataCenter = dataCenters.getSelectedItem();
-
-        startProgress(null);
-        Frontend.getInstance().runQuery(
-                VdcQueryType.GetStorageDomainsByStoragePoolId,
-                new IdQueryParameters(dataCenter.getId()),
-                new AsyncQuery(this, 
createGetStorageDomainsByStoragePoolIdCallback(dataCenter)));
-    }
-
     private INewAsyncCallback 
createGetStorageDomainsByStoragePoolIdCallback(final StoragePool dataCenter) {
         return new INewAsyncCallback() {
             @Override
             public void onSuccess(Object model, Object ReturnValue) {
                 List<StorageDomain> storageDomains = ((VdcQueryReturnValue) 
ReturnValue).getReturnValue();
 
-               final StorageDomain exportDomain = 
getExportDomain(storageDomains);
-               if (exportDomain != null) {
+               exportDomain = getExportDomain(storageDomains);
+               if (exportDomain == null) {
+                   
setErrorToFetchData(ConstantsManager.getInstance().getConstants().notAvailableWithNoActiveExportDomain());
+                   stopProgress();
+               } else {
                    setExportName(exportDomain.getName());
                    setExportDescription(exportDomain.getDescription());
-
+                   // get export-path
                    AsyncQuery _asyncQuery = new AsyncQuery();
                    _asyncQuery.setModel(this);
                    _asyncQuery.asyncCallback = new INewAsyncCallback() {
@@ -140,37 +118,11 @@
                        {
                            StorageServerConnections connection = 
(StorageServerConnections) ReturnValue;
                            setExportPath(connection == null ? null : 
connection.getconnection());
-                           getVmsFromExportDomain(dataCenter.getId(), 
exportDomain.getId());
+                           stopProgress();
                        }
                    };
                    
AsyncDataProvider.getInstance().getStorageConnectionById(_asyncQuery, 
exportDomain.getStorage(), true);
-
                }
-               else {
-                   
setErrorToFetchData(ConstantsManager.getInstance().getConstants().notAvailableWithNoActiveExportDomain());
-                   stopProgress();
-               }
-            }
-        };
-    }
-
-    private void getVmsFromExportDomain(Guid dataCenterId, Guid 
storageDomainId) {
-        Frontend.getInstance().runQuery(VdcQueryType.GetVmsFromExportDomain,
-                new GetAllFromExportDomainQueryParameters(dataCenterId, 
storageDomainId),
-                new AsyncQuery(this, createGetVmsFromExportDomainCallback()));
-    }
-
-    private INewAsyncCallback createGetVmsFromExportDomainCallback() {
-        return new INewAsyncCallback() {
-            @Override
-            public void onSuccess(Object model, Object returnValue) {
-                List<EntityModel<VM>> externalVms = new 
ArrayList<EntityModel<VM>>();
-                for (VM vm : ((VdcQueryReturnValue) 
returnValue).<List<VM>>getReturnValue()) {
-                    externalVms.add(new EntityModel<VM>(vm));
-                }
-
-                ImportVmsModel.this.externalVmModels.setItems(externalVms);
-                stopProgress();
             }
         };
     }
@@ -186,6 +138,17 @@
     }
 
     private void initDataCenters() {
+        getDataCenters().getSelectedItemChangedEvent().addListener(new 
IEventListener<EventArgs>() {
+            @Override
+            public void eventRaised(Event<? extends EventArgs> ev, Object 
sender, EventArgs args) {
+                StoragePool dataCenter = dataCenters.getSelectedItem();
+                Frontend.getInstance().runQuery(
+                        VdcQueryType.GetStorageDomainsByStoragePoolId,
+                        new IdQueryParameters(dataCenter.getId()),
+                        new AsyncQuery(this, 
createGetStorageDomainsByStoragePoolIdCallback(dataCenter)));
+            }
+        });
+
         AsyncDataProvider.getInstance().getDataCenterList(new AsyncQuery(new 
INewAsyncCallback() {
             @Override
             public void onSuccess(Object model, Object returnValue) {
@@ -212,7 +175,18 @@
 
     private void initImportSources() {
         importSources.setItems(Arrays.asList(ImportSource.values()));
-        onImportSourceChanged();
+        importSources.setSelectedItem(ImportSource.EXPORT_DOMAIN);
+        importSources.getSelectedItemChangedEvent().addListener(new 
IEventListener<EventArgs>() {
+            @Override
+            public void eventRaised(Event<? extends EventArgs> ev, Object 
sender, EventArgs args) {
+                clearVms();
+            }
+        });
+    }
+
+    private void clearVms() {
+        importedVmModels.setItems(null);
+        externalVmModels.setItems(null);
     }
 
     @Override
@@ -226,8 +200,31 @@
         }
     }
 
+    public void loadVmsFromExportDomain() {
+        startProgress(null);
+        Frontend.getInstance().runQuery(VdcQueryType.GetVmsFromExportDomain,
+                new 
GetAllFromExportDomainQueryParameters(getDataCenters().getSelectedItem().getId(),
 exportDomain.getId()),
+                new AsyncQuery(this, new INewAsyncCallback() {
+                    @Override
+                    public void onSuccess(Object model, Object returnValue) {
+                        updateVms(((VdcQueryReturnValue) 
returnValue).<List<VM>>getReturnValue());
+                    }
+                }));
+    }
+
+    private void updateVms(List<VM> vms) {
+        clearVms();
+        List<EntityModel<VM>> externalVms = new ArrayList<>();
+        for (VM vm : vms) {
+            externalVms.add(new EntityModel<VM>(vm));
+        }
+
+        externalVmModels.setItems(externalVms);
+        stopProgress();
+    }
+
     public List<VM> getVmsToImport() {
-        List<VM> vmsToImport = new ArrayList<VM>();
+        List<VM> vmsToImport = new ArrayList<>();
         for (EntityModel<VM> externalVm : importedVmModels.getItems()) {
             vmsToImport.add(externalVm.getEntity());
         }
@@ -287,10 +284,6 @@
 
     private void setImportedVmModels(ListModel<EntityModel<VM>> 
importedVmModels) {
         this.importedVmModels = importedVmModels;
-    }
-
-    public void reload() {
-        onImportSourceChanged();
     }
 
     public EntityModel<Boolean> getImportSourceValid() {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java
index 80c8eb9..cca167c 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.java
@@ -4,6 +4,7 @@
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
+import org.ovirt.engine.ui.common.widget.UiCommandButton;
 import org.ovirt.engine.ui.common.widget.VerticalSplitTable;
 import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
@@ -20,20 +21,17 @@
 import org.ovirt.engine.ui.uicompat.EventArgs;
 import org.ovirt.engine.ui.uicompat.IEventListener;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
-import org.ovirt.engine.ui.webadmin.ApplicationResources;
-import org.ovirt.engine.ui.webadmin.ApplicationTemplates;
 import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.ImportVmsPopupPresenterWidget;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
 import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.resources.client.CssResource;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.client.ui.ButtonBase;
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.google.gwt.user.client.ui.Label;
 import com.google.inject.Inject;
@@ -79,8 +77,7 @@
     FlowPanel exportPanel;
 
     @UiField
-    @Ignore
-    public ButtonBase refreshButton;
+    UiCommandButton loadVmsFromExportDomainButton;
 
     @UiField
     @Ignore
@@ -98,16 +95,7 @@
     @Path("exportDescription")
     StringEntityModelLabelEditor exportDomainDescription;
 
-    private ImportVmsModel model;
-
-    private final static ApplicationTemplates templates = 
AssetProvider.getTemplates();
-    private final static ApplicationResources resources = 
AssetProvider.getResources();
     private final static ApplicationConstants constants = 
AssetProvider.getConstants();
-
-    @UiHandler("refreshButton")
-    void handleRefreshButtonClick(ClickEvent event) {
-        model.reload();
-    }
 
     @Inject
     public ImportVmsPopupView(EventBus eventBus) {
@@ -122,8 +110,8 @@
                 return new EnumRenderer<ImportSource>().render(is);
             }
         });
-        externalVms = new 
EntityModelCellTable<ListModel<EntityModel<VM>>>(true, false, true);
-        importedVms = new 
EntityModelCellTable<ListModel<EntityModel<VM>>>(true, false, true);
+        externalVms = new EntityModelCellTable<>(true, false, true);
+        importedVms = new EntityModelCellTable<>(true, false, true);
         splitTable =
                 new VerticalSplitTable<EntityModel<VM>>(externalVms,
                         importedVms,
@@ -144,6 +132,7 @@
         exportDomainDescription.setLabel(constants.descriptionLabel());
         exportDomainDescription.addWrapperStyleName(style.providersStyle());
 
+        loadVmsFromExportDomainButton.setLabel(constants.loadLabel());
         driver.initialize(this);
     }
 
@@ -165,7 +154,6 @@
 
     @Override
     public void edit(final ImportVmsModel model) {
-        this.model = model;
         splitTable.edit(
                 model.getExternalVmModels(),
                 model.getImportedVmModels(),
@@ -180,6 +168,13 @@
                 }
             };
         });
+
+        loadVmsButton.addClickHandler(new ClickHandler() {
+            @Override
+            public void onClick(ClickEvent event) {
+                model.loadVmsFromExportDomain();
+            }
+        });
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml
index 5d8dd87..c576e82 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/ImportVmsPopupView.ui.xml
@@ -24,25 +24,18 @@
                        height: 135px;
                }
 
-        .refreshButton {
-            float: left;
-            font-size: 12px;
-            height: 14px;
-            width: 12px;
-            margin-right: 5px;
-            margin-left: 200px;
-            margin-up: 10px;
-            padding: 2px;
-            background: transparent;
-            border: 1px solid transparent;
-        }
-
         .labelStyle {
             color: red;
             vertical-align: bottom;
             height: 20px;
             line-height: 15px;
             margin-left: 5px;
+        }
+
+               .loadButton {
+                       margin-top: 15px;
+            float: right;
+            margin-right: 5px;
         }
        </ui:style>
 
@@ -58,9 +51,11 @@
                                        <ge:StringEntityModelLabelEditor 
ui:field="exportDomainName"/>
                                        <ge:StringEntityModelLabelEditor 
ui:field="exportDomainPath"/>
                                        <ge:StringEntityModelLabelEditor 
ui:field="exportDomainDescription"/>
-                                       <g:PushButton ui:field="refreshButton" 
addStyleNames="{style.refreshButton} avmpw_refreshButton_pfly_fix">
-                                               <g:upFace 
image='{resources.refreshButtonImage}' />
-                                       </g:PushButton>
+                                   <g:FlowPanel 
addStyleNames="{style.providersStyle}">
+                                           <g:FlowPanel 
addStyleNames="{style.loadButton}">
+                                               <w:UiCommandButton 
ui:field="loadVmsFromExportDomainButton"/>
+                                           </g:FlowPanel>
+                                   </g:FlowPanel>
                                </g:FlowPanel>
 
                                <g:Label ui:field="message" 
addStyleNames="{style.labelStyle}" />


-- 
To view, visit https://gerrit.ovirt.org/42096
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to