Kobi Ianko has uploaded a new change for review. Change subject: engine: Enable runOnce to choose a vnc keymap. ......................................................................
engine: Enable runOnce to choose a vnc keymap. Enable the selection of a specified vnc keymap when using runOnce popup window to run a vm. added a new combobox to the runOnce popup. tested the webAdmin and user portal web apps. Change-Id: Id908cbaca9f1b20b4b9868a87a8b21f318a493e6 Bug-Url: https://bugzilla.redhat.com/1031040 Signed-off-by: Kobi Ianko <k...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.ui.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmRunOncePopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmRunOncePopupView.java 19 files changed, 164 insertions(+), 22 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/22620/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java index 89d8330..8f51dbf 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java @@ -594,6 +594,14 @@ // the VM can run with display type which is different from its default display type (getParameters().getUseVnc() ? DisplayType.vnc : DisplayType.qxl)); + if (getParameters().getVncKeyboardLayout() == null) { + getVm().setVncKeyboardLayout(getVm().getDefaultVncKeyboardLayout()); + } else { + // if is not null it means runVM was launch from the run once command, thus + // the VM can run with keyboard layout type which is different from its default display type + getVm().setVncKeyboardLayout(getParameters().getVncKeyboardLayout()); + } + if (getParameters().getInitializationType() == null) { // if vm not initialized, use sysprep/cloud-init if (!getVm().isInitialized()) { @@ -727,6 +735,7 @@ @Override protected boolean canDoAction() { + VM vm = getVm(); if (vm == null) { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java index 047b6b6..0ca1626 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java @@ -4,6 +4,9 @@ import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.InitializationType; import org.ovirt.engine.core.common.businessentities.VmPayload; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.common.validation.annotation.NullOrStringContainedInConfigValueList; +import org.ovirt.engine.core.common.validation.group.StartEntity; import org.ovirt.engine.core.compat.Guid; public class RunVmParams extends VmOperationParameterBase { @@ -14,6 +17,10 @@ private boolean _kvmEnable; private Boolean _runAndPause; private Boolean _useVnc; + + @NullOrStringContainedInConfigValueList(configValue = ConfigValues.VncKeyboardLayoutValidValues, + groups = { StartEntity.class }, message = "VALIDATION.VM.INVALID_KEYBOARD_LAYOUT") + private String vncKeyboardLayout; private boolean _acpiEnable; private Boolean _win2kHackEnable; private String customProperties; @@ -222,4 +229,13 @@ public void setCpuShares(int cpuShares) { this.cpuShares = cpuShares; } + + public String getVncKeyboardLayout() { + return vncKeyboardLayout; + } + + public void setVncKeyboardLayout(String vncKeyboardLayout) { + this.vncKeyboardLayout = vncKeyboardLayout; + } + } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java index a11e6e4..6765d04 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java @@ -357,11 +357,11 @@ return vmStatic.getSsoMethod(); } - public String getVncKeyboardLayout() { + public String getDefaultVncKeyboardLayout() { return vmStatic.getVncKeyboardLayout(); } - public void setVncKeyboardLayout(String vncKeyboardLayout) { + public void setDefaultVncKeyboardLayout(String vncKeyboardLayout) { vmStatic.setVncKeyboardLayout(vncKeyboardLayout); } @@ -593,6 +593,14 @@ public void setDisplayType(DisplayType value) { this.vmDynamic.setDisplayType(value); + } + + public String getVncKeyboardLayout() { + return vmDynamic.getVncKeyboardLayout(); + } + + public void setVncKeyboardLayout(String vncKeyboardLayout) { + vmDynamic.setVncKeyboardLayout(vncKeyboardLayout); } public Boolean getKvmEnable() { @@ -1232,6 +1240,7 @@ // } setGuestOs(vm.getGuestOs()); setDisplayType(vm.getDisplayType()); + setVncKeyboardLayout(vm.getVncKeyboardLayout()); setDisplayIp(vm.getDisplayIp()); setKvmEnable(vm.getKvmEnable()); setAcpiEnable(vm.getAcpiEnable()); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java index 3bcd19a..85e4e44 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java @@ -31,6 +31,7 @@ private SessionState session; private String displayIp; private DisplayType displayType; + private String vncKeyboardLayout; private Boolean kvmEnable; private Integer displaySecurePort; private Integer utcDiff; @@ -64,6 +65,7 @@ result = prime * result + ((displayIp == null) ? 0 : displayIp.hashCode()); result = prime * result + ((displaySecurePort == null) ? 0 : displaySecurePort.hashCode()); result = prime * result + displayType.hashCode(); + result = prime * result + ((vncKeyboardLayout == null) ? 0 : vncKeyboardLayout.hashCode()); result = prime * result + ((consoleCurUserName == null) ? 0 : consoleCurUserName.hashCode()); result = prime * result + ((guestCurUserName == null) ? 0 : guestCurUserName.hashCode()); result = prime * result + ((consoleUserId == null) ? 0 : consoleUserId.hashCode()); @@ -117,6 +119,7 @@ && ObjectUtils.objectsEqual(displayIp, other.displayIp) && ObjectUtils.objectsEqual(displaySecurePort, other.displaySecurePort) && displayType == other.displayType + && ObjectUtils.objectsEqual(vncKeyboardLayout, other.vncKeyboardLayout) && ObjectUtils.objectsEqual(consoleCurUserName, other.consoleCurUserName) && ObjectUtils.objectsEqual(guestCurUserName, other.guestCurUserName) && ObjectUtils.objectsEqual(consoleUserId, other.consoleUserId) @@ -373,6 +376,14 @@ this.displayType = value; } + public String getVncKeyboardLayout() { + return vncKeyboardLayout; + } + + public void setVncKeyboardLayout(String vncKeyboardLayout) { + this.vncKeyboardLayout = vncKeyboardLayout; + } + public Boolean getKvmEnable() { return this.kvmEnable; } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java index e0d1d9a..0480e45 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java @@ -378,7 +378,7 @@ entity.setUseHostCpuFlags(rs.getBoolean("host_cpu_flags")); entity.setGuestAgentNicsHash(rs.getInt("guest_agent_nics_hash")); entity.setTunnelMigration((Boolean) rs.getObject("tunnel_migration")); - entity.setVncKeyboardLayout(rs.getString("vnc_keyboard_layout")); + entity.setDefaultVncKeyboardLayout(rs.getString("vnc_keyboard_layout")); entity.setRunAndPause(rs.getBoolean("is_run_and_pause")); entity.setLastWatchdogEvent(getLong(rs, "last_watchdog_event")); entity.setTrustedService(rs.getBoolean("trusted_service")); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java index ccd5f5b..541552b 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java @@ -427,7 +427,7 @@ model.getDisplay().setSingleQxlPci(entity.getSingleQxlPci()); model.getDisplay().setAllowOverride(entity.getAllowConsoleReconnect()); model.getDisplay().setSmartcardEnabled(entity.isSmartcardEnabled()); - model.getDisplay().setKeyboardLayout(entity.getVncKeyboardLayout()); + model.getDisplay().setKeyboardLayout(entity.getDefaultVncKeyboardLayout()); } model.setType(map(entity.getVmType(), null)); model.setStateless(entity.isStateless()); @@ -494,6 +494,12 @@ params.setUseVnc(displayType == DisplayType.VNC); } } + if (vm.isSetDisplay() && vm.getDisplay().isSetKeyboardLayout()) { + String vncKeyboardLayout = vm.getDisplay().getKeyboardLayout(); + if (vncKeyboardLayout != null) { + params.setVncKeyboardLayout(vncKeyboardLayout); + } + } if (vm.isSetOs() && vm.getOs().getBoot().size() > 0) { params.setBootSequence(map(vm.getOs().getBoot(), null)); } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java index 70dec10..21722bc 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java @@ -114,10 +114,15 @@ createInfo.put(VdsProperties.hiberVolHandle, vm.getHibernationVolHandle()); } - String keyboardLayout = vm.getVncKeyboardLayout(); // if set per VM use that value - if (keyboardLayout == null) { // otherwise fall back to global setting - keyboardLayout = Config.<String> getValue(ConfigValues.VncKeyboardLayout); + + String keyboardLayout = vm.getVncKeyboardLayout(); + if (keyboardLayout == null) { + keyboardLayout = vm.getDefaultVncKeyboardLayout(); + if (keyboardLayout == null) { + keyboardLayout = Config.<String> getValue(ConfigValues.VncKeyboardLayout); + } } + createInfo.put(VdsProperties.KeyboardLayout, keyboardLayout); if (osRepository.isLinux(vm.getVmOsId())) { createInfo.put(VdsProperties.PitReinjection, "false"); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.java index 4f42c18..49e1b6a 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.java @@ -1,9 +1,9 @@ package org.ovirt.engine.ui.common.widget.uicommon.popup.vm; -import com.google.gwt.event.dom.client.FocusEvent; -import com.google.gwt.event.dom.client.FocusHandler; import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.ui.common.CommonApplicationConstants; +import org.ovirt.engine.ui.common.CommonApplicationMessages; import org.ovirt.engine.ui.common.CommonApplicationResources; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.idhandler.WithElementId; @@ -16,6 +16,7 @@ import org.ovirt.engine.ui.common.widget.form.key_value.KeyValueWidget; import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer; import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.vms.BootSequenceModel; import org.ovirt.engine.ui.uicommonweb.models.vms.RunOnceModel; @@ -32,9 +33,12 @@ import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.FocusEvent; +import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.resources.client.CssResource; +import com.google.gwt.text.shared.AbstractRenderer; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiFactory; import com.google.gwt.uibinder.client.UiField; @@ -206,6 +210,11 @@ EntityModelRadioButtonEditor displayConsoleVncEditor; @UiField(provided = true) + @Path(value = "vncKeyboardLayout.selectedItem") + @WithElementId("vncKeyboardLayout") + public ListModelListBoxEditor<String> vncKeyboardLayoutEditor; + + @UiField(provided = true) @Path(value = "displayConsole_Spice_IsSelected.entity") @WithElementId("displayConsoleSpice") EntityModelRadioButtonEditor displayConsoleSpiceEditor; @@ -255,6 +264,7 @@ private final CommonApplicationResources resources; private final CommonApplicationConstants constants; + private final CommonApplicationMessages messages; @UiFactory protected DisclosurePanel createPanel(String label) @@ -262,11 +272,13 @@ return new DisclosurePanel(resources.decreaseIcon(), resources.increaseIcon(), label); } - public VmRunOncePopupWidget(CommonApplicationConstants constants, CommonApplicationResources resources) { + public VmRunOncePopupWidget(CommonApplicationConstants constants, CommonApplicationResources resources, CommonApplicationMessages messages) { this.constants = constants; this.resources = resources; + this.messages = messages; initCheckBoxEditors(); initRadioButtonEditors(); + initListBoxEditors(); initComboBox(); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); initBootSequenceBox(); @@ -302,6 +314,8 @@ // Display Protocol displayConsoleVncEditor.setLabel(constants.runOncePopupDisplayConsoleVncLabel()); + vncKeyboardLayoutEditor.setLabel(constants.vncKeyboardLayoutVmPopup()); + displayConsoleSpiceEditor.setLabel(constants.runOncePopupDisplayConsoleSpiceLabel()); // Host Tab @@ -317,6 +331,25 @@ cloudInitEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); } + void initListBoxEditors() { + + vncKeyboardLayoutEditor = new ListModelListBoxEditor<String>(new AbstractRenderer<String>() { + + final String globalLayout = + (String) AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.VncKeyboardLayout); + + @Override + public String render(String object) { + if (object == null) { + return messages.globalVncKeyboardLayoutCaption(globalLayout); + } else { + return object; + } + }; + }); + + } + void initRadioButtonEditors() { displayConsoleVncEditor = new EntityModelRadioButtonEditor("1"); //$NON-NLS-1$ displayConsoleSpiceEditor = new EntityModelRadioButtonEditor("1"); //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.ui.xml index 9578df4..f2ced6e 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmRunOncePopupWidget.ui.xml @@ -229,6 +229,7 @@ <g:DisclosurePanel ui:field="displayProtocolPanel" label="{constants.runOncePopupDisplayProtocolLabel}" addStyleNames="{style.panelStyle}"> <g:VerticalPanel> <e:EntityModelRadioButtonEditor ui:field="displayConsoleVncEditor" /> + <e:ListModelListBoxEditor ui:field="vncKeyboardLayoutEditor" /> <e:EntityModelRadioButtonEditor ui:field="displayConsoleSpiceEditor" /> </g:VerticalPanel> </g:DisclosurePanel> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java index 0ca9e64..54131c9 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java @@ -131,6 +131,7 @@ vm.setDisplayIp(instance.getDisplayIp()); vm.setDisplaySecurePort(instance.getDisplaySecurePort()); vm.setDisplayType(instance.getDisplayType()); + vm.setVncKeyboardLayout(instance.getVncKeyboardLayout()); vm.setElapsedTime(instance.getElapsedTime()); vm.setRoundedElapsedTime(instance.getRoundedElapsedTime()); vm.setExitMessage(instance.getExitMessage()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java index 5b98c45..c91c92a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java @@ -497,7 +497,7 @@ vm.setKernelParams(model.getKernel_parameters().getEntity()); vm.setInitrdUrl(model.getInitrd_path().getEntity()); vm.setMigrationSupport(model.getMigrationMode().getSelectedItem()); - vm.setVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem()); + vm.setDefaultVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem()); EntityModel<DisplayType> displayProtocolSelectedItem = model.getDisplayProtocol().getSelectedItem(); vm.setDefaultDisplayType(displayProtocolSelectedItem.getEntity()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java index 929cc0d..32dfd53 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java @@ -619,7 +619,7 @@ tempVar.setInitrdUrl(vm.getInitrdUrl()); tempVar.setKernelUrl(vm.getKernelUrl()); tempVar.setKernelParams(vm.getKernelParams()); - tempVar.setVncKeyboardLayout(vm.getVncKeyboardLayout()); + tempVar.setDefaultVncKeyboardLayout(vm.getDefaultVncKeyboardLayout()); VM newvm = tempVar; EntityModel<DisplayType> displayProtocolSelectedItem = model.getDisplayProtocol().getSelectedItem(); @@ -1046,7 +1046,7 @@ gettempVm().setIsoPath(model.getCdImage().getIsChangable() ? model.getCdImage() .getSelectedItem() : ""); //$NON-NLS-1$ gettempVm().setAutoStartup(model.getIsHighlyAvailable().getEntity()); - gettempVm().setVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem()); + gettempVm().setDefaultVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem()); gettempVm().setInitrdUrl(model.getInitrd_path().getEntity()); gettempVm().setKernelUrl(model.getKernel_path().getEntity()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java index 2643e1a..0e7773e 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java @@ -210,7 +210,7 @@ updateVirtioScsiEnabled(getVm().getId()); - getModel().getVncKeyboardLayout().setSelectedItem(vm.getVncKeyboardLayout()); + getModel().getVncKeyboardLayout().setSelectedItem(vm.getDefaultVncKeyboardLayout()); Frontend.getInstance().runQuery(VdcQueryType.IsBalloonEnabled, new IdQueryParameters(getVm().getId()), new AsyncQuery(this, new INewAsyncCallback() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java index b7d4e4d..eb66d3c 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java @@ -234,7 +234,7 @@ getModel().getUsbPolicy().setSelectedItem(this.vm.getUsbPolicy()); getModel().getIsSmartcardEnabled().setEntity(this.vm.isSmartcardEnabled()); - getModel().getVncKeyboardLayout().setSelectedItem(this.vm.getVncKeyboardLayout()); + getModel().getVncKeyboardLayout().setSelectedItem(this.vm.getDefaultVncKeyboardLayout()); initPriority(this.vm.getPriority()); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java index 36f2ad8..850bca0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/RunOnceModel.java @@ -3,12 +3,14 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; + import org.ovirt.engine.core.common.action.RunVmOnceParams; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.InitializationType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -357,6 +359,16 @@ privateDisplayConsole_Vnc_IsSelected = value; } + private ListModel<String> vncKeyboardLayout; + + public ListModel<String> getVncKeyboardLayout() { + return vncKeyboardLayout; + } + + public void setVncKeyboardLayout(ListModel<String> vncKeyboardLayout) { + this.vncKeyboardLayout = vncKeyboardLayout; + } + // Display Protocol tab private EntityModel privateDisplayConsole_Spice_IsSelected; @@ -582,6 +594,11 @@ setDisplayConsole_Vnc_IsSelected(new EntityModel()); getDisplayConsole_Vnc_IsSelected().getEntityChangedEvent().addListener(this); + setVncKeyboardLayout(new ListModel<String>()); + getVncKeyboardLayout().getSelectedItemChangedEvent().addListener(this); + initVncKeyboardLayout(); + getVncKeyboardLayout().setSelectedItem(vm.getDefaultVncKeyboardLayout()); + // Host tab setDefaultHost(new ListModel()); getDefaultHost().getSelectedItemChangedEvent().addListener(this); @@ -703,6 +720,8 @@ { params.setUseVnc((Boolean) getDisplayConsole_Vnc_IsSelected().getEntity()); } + + params.setVncKeyboardLayout(getVncKeyboardLayout().getSelectedItem()); String selectedDomain = (String) getSysPrepSelectedDomainName().getEntity(); if (!StringHelper.isNullOrEmpty(selectedDomain)) { @@ -898,10 +917,12 @@ else if (sender == getDisplayConsole_Vnc_IsSelected() && (Boolean) ((EntityModel) sender).getEntity()) { getDisplayConsole_Spice_IsSelected().setEntity(false); + getVncKeyboardLayout().setIsChangable(true); } else if (sender == getDisplayConsole_Spice_IsSelected() && (Boolean) ((EntityModel) sender).getEntity()) { getDisplayConsole_Vnc_IsSelected().setEntity(false); + getVncKeyboardLayout().setIsChangable(false); } else if (sender == getIsAutoAssign()) { @@ -1039,4 +1060,29 @@ } protected abstract void onRunOnce(); + + private void initVncKeyboardLayout() { + + final List<String> layouts = + (List<String>) AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.VncKeyboardLayoutValidValues); + final ArrayList<String> vncKeyboardLayoutItems = new ArrayList<String>(); + vncKeyboardLayoutItems.add(null); + vncKeyboardLayoutItems.addAll(layouts); + getVncKeyboardLayout().setItems(vncKeyboardLayoutItems); + + getVncKeyboardLayout().setIsChangable(false); + } + + private boolean isVncSelected() { + boolean isVnc = false; + + if (getDisplayProtocol().getSelectedItem() != null) + { + DisplayType displayType = ((EntityModel<DisplayType>) getDisplayProtocol().getSelectedItem()).getEntity(); + isVnc = displayType == DisplayType.vnc; + } + + return isVnc; + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index 446beeb..aad526c 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -1329,7 +1329,7 @@ tempVar.setKernelParams(vm.getKernelParams()); tempVar.setDedicatedVmForVds(vm.getDedicatedVmForVds()); tempVar.setMigrationSupport(vm.getMigrationSupport()); - tempVar.setVncKeyboardLayout(vm.getVncKeyboardLayout()); + tempVar.setDefaultVncKeyboardLayout(vm.getDefaultVncKeyboardLayout()); VM newvm = tempVar; @@ -1927,7 +1927,7 @@ getcurrentVm().setPriority(prioritySelectedItem.getEntity()); getcurrentVm().setCpuPinning(model.getCpuPinning().getEntity()); - getcurrentVm().setVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem()); + getcurrentVm().setDefaultVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem()); if (model.getCpuSharesAmount().getIsAvailable() && model.getCpuSharesAmount().getEntity() != null) { // $NON-NLS-1$ getcurrentVm().setCpuShares(model.getCpuSharesAmount().getEntity()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java index 15b2754..dac42a2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java @@ -604,7 +604,7 @@ getcurrentVm().setQuotaId(model.getQuota().getSelectedItem().getId()); } - getcurrentVm().setVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem()); + getcurrentVm().setDefaultVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem()); EntityModel<DisplayType> displayProtocolSelectedItem = model.getDisplayProtocol().getSelectedItem(); getcurrentVm().setDefaultDisplayType(displayProtocolSelectedItem.getEntity()); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmRunOncePopupView.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmRunOncePopupView.java index 66bdca1..4507176 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmRunOncePopupView.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmRunOncePopupView.java @@ -5,6 +5,7 @@ import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmRunOncePopupWidget; import org.ovirt.engine.ui.uicommonweb.models.vms.RunOnceModel; import org.ovirt.engine.ui.userportal.ApplicationConstants; +import org.ovirt.engine.ui.userportal.ApplicationMessages; import org.ovirt.engine.ui.userportal.ApplicationResources; import org.ovirt.engine.ui.userportal.section.main.presenter.popup.vm.VmRunOncePopupPresenterWidget; @@ -19,8 +20,11 @@ } @Inject - public VmRunOncePopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants) { - super(eventBus, resources, new VmRunOncePopupWidget(constants, resources), "490px", "540px"); //$NON-NLS-1$ //$NON-NLS-2$ + public VmRunOncePopupView(EventBus eventBus, + ApplicationResources resources, + ApplicationConstants constants, + ApplicationMessages messages) { + super(eventBus, resources, new VmRunOncePopupWidget(constants, resources, messages), "490px", "540px"); //$NON-NLS-1$ //$NON-NLS-2$ ViewIdHandler.idHandler.generateAndSetIds(this); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmRunOncePopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmRunOncePopupView.java index 31b8e26..8904abc 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmRunOncePopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmRunOncePopupView.java @@ -5,6 +5,7 @@ import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmRunOncePopupWidget; import org.ovirt.engine.ui.uicommonweb.models.vms.RunOnceModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationMessages; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmRunOncePopupPresenterWidget; @@ -19,8 +20,8 @@ } @Inject - public VmRunOncePopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants) { - super(eventBus, resources, new VmRunOncePopupWidget(constants, resources), "490px", "540px"); //$NON-NLS-1$ //$NON-NLS-2$ + public VmRunOncePopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants, ApplicationMessages messages) { + super(eventBus, resources, new VmRunOncePopupWidget(constants, resources, messages), "490px", "540px"); //$NON-NLS-1$ //$NON-NLS-2$ ViewIdHandler.idHandler.generateAndSetIds(this); } -- To view, visit http://gerrit.ovirt.org/22620 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id908cbaca9f1b20b4b9868a87a8b21f318a493e6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Kobi Ianko <k...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches