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.initUsbPolicy() did set the USB policy always to "disabled". Fixed by making sure that if the previously selected still applys than select it 2: The UnitVmModel.updateDisplayProtocol() have delegated the selection of the old display protocol to behavior.postDisplayTypeItemChanged which is too late, because meanwhile the VNC has been selected by getDisplayProtocol().setItems() which fired an appropriate event which in turn changed the USB support to "disabled" Fixed by removing the logic from VmModelBehaviorBase and moved it into the updateDisplayProtocol() to make sure the event is fired only when needed. Change-Id: I7e1b1048784e9d0c289fab13b4d8b9b80afd6cc9 Bug-Url: https://bugzilla.redhat.com/966415 Bug-Url: https://bugzilla.redhat.com/1080144 Bug-Url: https://bugzilla.redhat.com/1147527 Signed-off-by: Tomas Jelinek <tjeli...@redhat.com> --- 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/80/33480/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 b6a96e8..2fdc256 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; @@ -1681,6 +1682,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( @@ -1689,7 +1693,6 @@ )); } else { getUsbPolicy().setItems(Arrays.asList(UsbPolicy.DISABLED)); - getUsbPolicy().setSelectedItem(UsbPolicy.DISABLED); getUsbPolicy().setIsChangable(false); } } @@ -1714,7 +1717,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 initDisplayProtocol() @@ -1725,6 +1733,7 @@ private void updateDisplayProtocol() { DisplayType oldDisplayProtocolOption = null; + EntityModel<DisplayType> oldDisplayProtocolEntity = null; if (getDisplayProtocol().getSelectedItem() != null) { oldDisplayProtocolOption = getDisplayProtocol().getSelectedItem().getEntity(); @@ -1745,6 +1754,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)) { @@ -1752,11 +1764,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 e3e4c03..2d2dde6 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 @@ -14,7 +14,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; @@ -276,53 +275,6 @@ getModel().getTimeZone().setSelectedItem(Linq.firstOrDefault(timeZones, new Linq.TimeZonePredicate(selectedTimeZone))); getModel().getTimeZone().setChangeProhibitionReason(constants.timeZoneNotChangeableForLinuxVms()); getModel().getTimeZone().setIsChangable(!getModel().getIsLinuxOS()); - } - - /** - * 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/33480 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7e1b1048784e9d0c289fab13b4d8b9b80afd6cc9 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Tomas Jelinek <tjeli...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches