Tomas Jelinek has uploaded a new change for review.

Change subject: userportal,webadmin: keep proper USB support selection
......................................................................

userportal,webadmin: keep proper USB support selection

There were 2 problems:
1: the UnitVmModel.updateDisplayProtocol() did set the display protocol always
   to disabled.
   Fixed by making sure that if the previously selected still applys than
   select it

2:

Change-Id: I7e1b1048784e9d0c289fab13b4d8b9b80afd6cc9
Bug-Url: https://bugzilla.redhat.com/966415
Bug-Url: https://bugzilla.redhat.com/1080144
Signed-off-by: Tomas Jelinek <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
2 files changed, 22 insertions(+), 53 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/45/27045/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 7aff0d8..e9876d6 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
@@ -2,6 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -1735,6 +1736,9 @@
         }
 
         getUsbPolicy().setIsChangable(true);
+
+        UsbPolicy prevSelectedUsbPolicy = getUsbPolicy().getSelectedItem();
+
         if (Version.v3_1.compareTo(cluster.getcompatibility_version()) > 0) {
             if (AsyncDataProvider.isWindowsOsType(osType)) {
                 getUsbPolicy().setItems(Arrays.asList(
@@ -1743,7 +1747,6 @@
                         ));
             } else {
                 getUsbPolicy().setItems(Arrays.asList(UsbPolicy.DISABLED));
-                getUsbPolicy().setSelectedItem(UsbPolicy.DISABLED);
                 getUsbPolicy().setIsChangable(false);
             }
         }
@@ -1768,7 +1771,12 @@
             getUsbPolicy().setIsChangable(false);
         }
 
-        getUsbPolicy().setSelectedItem(UsbPolicy.DISABLED);
+        Collection<UsbPolicy> policies = getUsbPolicy().getItems();
+        if (policies.contains(prevSelectedUsbPolicy)) {
+            getUsbPolicy().setSelectedItem(prevSelectedUsbPolicy);
+        } else if (policies.size() > 0) {
+            getUsbPolicy().setSelectedItem(policies.iterator().next());
+        }
     }
 
     private void updateMigrationOptions()
@@ -1800,6 +1808,7 @@
     private void updateDisplayProtocol()
     {
         DisplayType oldDisplayProtocolOption = null;
+        EntityModel<DisplayType> oldDisplayProtocolEntity = null;
 
         if (getDisplayProtocol().getSelectedItem() != null) {
             oldDisplayProtocolOption = 
getDisplayProtocol().getSelectedItem().getEntity();
@@ -1820,6 +1829,9 @@
             
vncProtocol.setTitle(ConstantsManager.getInstance().getConstants().VNCTitle());
             vncProtocol.setEntity(DisplayType.vnc);
             displayProtocolOptions.add(vncProtocol);
+            if (DisplayType.vnc == oldDisplayProtocolOption) {
+                oldDisplayProtocolEntity = vncProtocol;
+            }
         }
 
         if (displayTypes.contains(DisplayType.qxl)) {
@@ -1827,11 +1839,16 @@
             
spiceProtocol.setTitle(ConstantsManager.getInstance().getConstants().spiceTitle());
             spiceProtocol.setEntity(DisplayType.qxl);
             displayProtocolOptions.add(spiceProtocol);
+            if (oldDisplayProtocolOption == DisplayType.qxl) {
+                oldDisplayProtocolEntity = spiceProtocol;
+            }
         }
 
-        getDisplayProtocol().setItems(displayProtocolOptions);
-
-        behavior.postDisplayTypeItemChanged(oldDisplayProtocolOption);
+        if (displayProtocolOptions.contains(oldDisplayProtocolEntity)) {
+            getDisplayProtocol().setItems(displayProtocolOptions, 
oldDisplayProtocolEntity);
+        } else if (displayProtocolOptions.size() > 0) {
+            getDisplayProtocol().setItems(displayProtocolOptions, 
displayProtocolOptions.iterator().next());
+        }
     }
 
     private void initFirstBootDevice()
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
index cc66f42..dacfcd0 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
@@ -15,7 +15,6 @@
 import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.DiskInterface;
-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.QuotaEnforcementTypeEnum;
@@ -275,53 +274,6 @@
         final Collection<TimeZoneModel> timeZones = 
TimeZoneModel.getTimeZones(getTimeZoneType());
         getModel().getTimeZone().setItems(timeZones);
         
getModel().getTimeZone().setSelectedItem(Linq.firstOrDefault(timeZones, new 
Linq.TimeZonePredicate(selectedTimeZone)));
-    }
-
-    /**
-     * This method checks the item that will be selected.
-     * For a good UX, if the getItems contains the last selected item, this 
one not will be changed.
-     * @param oldDisplayProtocolOption
-     */
-    public void postDisplayTypeItemChanged(DisplayType 
oldDisplayProtocolOption) {
-
-        List<DisplayType> displayProtocolOptions = new 
ArrayList<DisplayType>();
-
-        if (getModel().getDisplayProtocol().getItems() != null) {
-            for (EntityModel<DisplayType> item : 
(ArrayList<EntityModel<DisplayType>>) 
getModel().getDisplayProtocol().getItems()) {
-                displayProtocolOptions.add(item.getEntity());
-            }
-        }
-
-        if (oldDisplayProtocolOption != null
-                && displayProtocolOptions.contains(oldDisplayProtocolOption)) {
-            selectDisplayProtocol(oldDisplayProtocolOption);
-        }
-
-    }
-
-    private void selectDisplayProtocol(DisplayType displayProtocol) {
-        if (getModel().getDisplayProtocol().getItems() == null)
-            return;
-
-        EntityModel selectedDisplayProtocol = null;
-        boolean isFirst = true;
-        for (Object item : getModel().getDisplayProtocol().getItems())
-        {
-            EntityModel a = (EntityModel) item;
-            if (isFirst)
-            {
-                selectedDisplayProtocol = a;
-                isFirst = false;
-            }
-            DisplayType dt = (DisplayType) a.getEntity();
-            if (dt == displayProtocol)
-            {
-                selectedDisplayProtocol = a;
-                break;
-            }
-        }
-
-        
getModel().getDisplayProtocol().setSelectedItem(selectedDisplayProtocol);
     }
 
     public TimeZoneType getTimeZoneType() {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7e1b1048784e9d0c289fab13b4d8b9b80afd6cc9
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