Lior Vernia has uploaded a new change for review.

Change subject: webadmin: Only set cluster once when opening VM dialog
......................................................................

webadmin: Only set cluster once when opening VM dialog

Previously the cluster could potentially be called twice in the
initialization of the dialog: once UiCommonEditorVisitor set the
selected item to be the first in the collection, then if the VM
belonged to another cluster the selection would change. This would
cause issues due to asynchronous tasks, triggered by the
selectedItemChangedEvent, returning in reversed order.

This is fixed by only triggering the chain of events due to selection
change, if the current selection is also the eventual selection (which
is already known at this point).

Change-Id: I53cb6ee7c60624de954a96d54e6e66980c65e095
Bug-Url: https://bugzilla.redhat.com/1070835
Signed-off-by: Lior Vernia <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
1 file changed, 9 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/25620/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
index 27d67ba..c9f76cb 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
@@ -63,6 +63,7 @@
     public static final int DESCRIPTION_MAX_LIMIT = 255;
 
     private boolean privateIsNew;
+    private DataCenterWithCluster selectedDcWithCluster;
 
     private EntityModel editingEnabled;
 
@@ -1384,7 +1385,8 @@
         {
             if (sender == getVmType()) {
                 vmTypeChanged();
-            } else if (sender == getDataCenterWithClustersList())
+            } else if (sender == getDataCenterWithClustersList()
+                    && 
selectedDcWithCluster.equals(getDataCenterWithClustersList().getSelectedItem()))
             {
                 dataCenterWithClusterSelectedItemChanged(sender, args);
                 initUsbPolicy();
@@ -1971,8 +1973,6 @@
                 dataCentersWithClusters.add(new 
DataCenterWithCluster(dataCenter, cluster));
             }
         }
-        getDataCenterWithClustersList().setItems(dataCentersWithClusters);
-
         selectDataCenterWithCluster(model, selectedCluster, 
dataCentersWithClusters);
     }
 
@@ -2001,20 +2001,18 @@
                 dataCentersWithClusters.add(new 
DataCenterWithCluster(dataCenter, cluster));
             }
         }
-        getDataCenterWithClustersList().setItems(dataCentersWithClusters);
-
         selectDataCenterWithCluster(model, selectedCluster, 
dataCentersWithClusters);
     }
 
     protected void selectDataCenterWithCluster(UnitVmModel model,
             Guid selectedCluster,
             List<DataCenterWithCluster> dataCentersWithClusters) {
-        if (selectedCluster == null) {
-            
getDataCenterWithClustersList().setSelectedItem(Linq.firstOrDefault(dataCentersWithClusters));
-        } else {
-            
model.getDataCenterWithClustersList().setSelectedItem(Linq.firstOrDefault(dataCentersWithClusters,
-                    new 
Linq.DataCenterWithClusterAccordingClusterPredicate((Guid) selectedCluster)));
-        }
+        selectedDcWithCluster =
+                (selectedCluster == null) ? 
Linq.firstOrDefault(dataCentersWithClusters)
+                        : Linq.firstOrDefault(dataCentersWithClusters,
+                                new 
Linq.DataCenterWithClusterAccordingClusterPredicate((Guid) selectedCluster));
+        getDataCenterWithClustersList().setItems(dataCentersWithClusters);
+        getDataCenterWithClustersList().setSelectedItem(selectedDcWithCluster);
     }
 
     private StoragePool getDataCenterAccordingSystemTree(UnitVmModel model, 
List<StoragePool> list) {


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

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

Reply via email to