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
