Martin Beták has uploaded a new change for review.

Change subject: engine: Frontend support for setting per-VM VncKeyboardLayout
......................................................................

engine: Frontend support for setting per-VM VncKeyboardLayout

Added combobox to EditVM dialog for setting the VncKeyboardLayout per
individual VM.

Change-Id: I8f143e5b8425805ea87651ec382f0bc95f584591
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=916866
Signed-off-by: Martin Betak <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
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/templates/TemplateListModel.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/NewVmModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
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/VmListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
16 files changed, 86 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/87/12787/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
index 836ea6d..98d13d3 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
@@ -81,7 +81,9 @@
     GlusterVolumeOptionOwnerGroupVirtValue,
     CpuPinningEnabled,
     CpuPinMigrationEnabled,
-    MigrationSupportForNativeUsb(ConfigAuthType.User)
+    MigrationSupportForNativeUsb(ConfigAuthType.User),
+    VncKeyboardLayout(ConfigAuthType.User),
+    VncKeyboardLayoutValidValues(ConfigAuthType.User)
     ;
 
     public static enum ConfigAuthType {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
index 3428f34..320db35 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
@@ -370,6 +370,9 @@
     @DefaultStringValue("Protocol")
     String protocolVmPopup();
 
+    @DefaultStringValue("VNC Keyboard Layout")
+    String vncKeyboardLayoutVmPopup();
+
     @DefaultStringValue("USB Support")
     String usbPolicyVmPopup();
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
index b0d7bf9..2c8fecd 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
@@ -88,4 +88,7 @@
 
     @DefaultMessage("{0} ({1} GB free of {2} GB)")
     String storageDomainFreeSpace(String name, int free, int total);
+
+    @DefaultMessage("default [{0}]")
+    String globalVncKeyboardLayoutCaption(String currentDefault);
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
index 3eeac7f..44b47b5 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
@@ -263,6 +263,11 @@
     public ListModelListBoxEditor<Object> displayProtocolEditor;
 
     @UiField(provided = true)
+    @Path(value = "vncKeyboardLayout.selectedItem")
+    @WithElementId("vncKeyboardLayout")
+    public ListModelListBoxEditor<Object> vncKeyboardLayoutEditor;
+
+    @UiField(provided = true)
     @Path(value = "usbPolicy.selectedItem")
     @WithElementId("usbPolicy")
     public ListModelListBoxEditor<Object> usbSupportEditor;
@@ -640,6 +645,21 @@
             }
         });
 
+        vncKeyboardLayoutEditor = new ListModelListBoxEditor<Object>(new 
AbstractRenderer<Object>() {
+
+            final String globalLayout = 
(String)AsyncDataProvider.GetConfigValuePreConverted(ConfigurationValues.VncKeyboardLayout);
+
+            @Override
+            public String render(Object object) {
+                if (object == null) {
+                    return 
messages.globalVncKeyboardLayoutCaption(globalLayout);
+                } else {
+                    return object.toString();
+                }
+            }
+
+        });
+
         // Host Tab
         specificHost = new RadioButton("runVmOnHostGroup"); //$NON-NLS-1$
         isAutoAssignEditor = new 
EntityModelRadioButtonEditor("runVmOnHostGroup"); //$NON-NLS-1$
@@ -718,6 +738,7 @@
         // Console Tab
         consoleTab.setLabel(constants.consoleVmPopup());
         displayProtocolEditor.setLabel(constants.protocolVmPopup());
+        vncKeyboardLayoutEditor.setLabel(constants.vncKeyboardLayoutVmPopup());
         usbSupportEditor.setLabel(constants.usbPolicyVmPopup());
         numOfMonitorsEditor.setLabel(constants.monitorsVmPopup());
         
allowConsoleReconnectEditor.setLabel(constants.allowConsoleReconnect());
@@ -1089,6 +1110,7 @@
         // ==Console Tab==
         nextTabIndex = consoleTab.setTabIndexes(nextTabIndex);
         displayProtocolEditor.setTabIndex(nextTabIndex++);
+        vncKeyboardLayoutEditor.setTabIndex(nextTabIndex++);
         usbSupportEditor.setTabIndex(nextTabIndex++);
         numOfMonitorsEditor.setTabIndex(nextTabIndex++);
         isSmartcardEnabledEditor.setTabIndex(nextTabIndex++);
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
index 6aef823..60c8646 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
@@ -303,6 +303,7 @@
                                <t:content>
                                        <g:FlowPanel>
                                                <e:ListModelListBoxEditor 
ui:field="displayProtocolEditor" />
+                                               <e:ListModelListBoxEditor 
ui:field="vncKeyboardLayoutEditor" />
                                                <e:ListModelListBoxEditor 
ui:field="usbSupportEditor" />
                                                <e:ListModelListBoxEditor 
ui:field="numOfMonitorsEditor" />
                                                <e:EntityModelCheckBoxEditor 
ui:field="isSmartcardEnabledEditor" addStyleNames="{style.checkbox}" />
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 f955970..1c95b64 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
@@ -19,11 +19,11 @@
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmOsType;
+import org.ovirt.engine.core.common.businessentities.VmPool;
 import org.ovirt.engine.core.common.businessentities.VmPoolType;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VmType;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
-import org.ovirt.engine.core.common.businessentities.VmPool;
 import org.ovirt.engine.core.common.interfaces.SearchType;
 import org.ovirt.engine.core.common.mode.ApplicationMode;
 import org.ovirt.engine.core.common.queries.GetVmdataByPoolIdParameters;
@@ -507,6 +507,7 @@
                         desktop.setKernelParams((String) 
model.getKernel_parameters().getEntity());
                         desktop.setInitrdUrl((String) 
model.getInitrd_path().getEntity());
                         desktop.setMigrationSupport(migrationSupport);
+                        desktop.setVncKeyboardLayout((String) 
model.getVncKeyboardLayout().getSelectedItem());
 
                         EntityModel displayProtocolSelectedItem =
                                 (EntityModel) 
model.getDisplayProtocol().getSelectedItem();
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
index e6053ab..52172fd 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
@@ -15,13 +15,13 @@
 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.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.UsbPolicy;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VmOsType;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VmTemplateStatus;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.interfaces.SearchType;
 import org.ovirt.engine.core.common.mode.ApplicationMode;
 import org.ovirt.engine.core.common.queries.SearchParameters;
@@ -526,6 +526,7 @@
         template.setKernelUrl((String) model.getKernel_path().getEntity());
         template.setKernelParams((String) 
model.getKernel_parameters().getEntity());
         template.setInitrdUrl((String) model.getInitrd_path().getEntity());
+        template.setVncKeyboardLayout((String) 
model.getVncKeyboardLayout().getSelectedItem());
 
         if (model.getQuota().getIsAvailable() && 
model.getQuota().getSelectedItem() != null) {
             template.setQuotaId(((Quota) 
model.getQuota().getSelectedItem()).getId());
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 9759ea9..65b7426 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
@@ -22,6 +22,7 @@
 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.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.UsbPolicy;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
@@ -32,7 +33,6 @@
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VmType;
 import org.ovirt.engine.core.common.businessentities.VolumeType;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.queries.GetAllDisksByVmIdParameters;
@@ -659,6 +659,7 @@
         tempVar.setInitrdUrl(vm.getInitrdUrl());
         tempVar.setKernelUrl(vm.getKernelUrl());
         tempVar.setKernelParams(vm.getKernelParams());
+        tempVar.setVncKeyboardLayout(vm.getVncKeyboardLayout());
         VM newvm = tempVar;
 
         EntityModel displayProtocolSelectedItem = (EntityModel) 
model.getDisplayProtocol().getSelectedItem();
@@ -1349,6 +1350,7 @@
         gettempVm().setIsoPath(model.getCdImage().getIsChangable() ? (String) 
model.getCdImage()
                 .getSelectedItem() : ""); //$NON-NLS-1$
         gettempVm().setAutoStartup((Boolean) 
model.getIsHighlyAvailable().getEntity());
+        gettempVm().setVncKeyboardLayout((String) 
model.getVncKeyboardLayout().getSelectedItem());
 
         gettempVm().setInitrdUrl((String) model.getInitrd_path().getEntity());
         gettempVm().setKernelUrl((String) 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 5214def..4e0d3b5 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
@@ -144,6 +144,8 @@
         
getModel().getCustomPropertySheet().setEntity(vm.getCustomProperties());
         getModel().getCpuPinning().setEntity(vm.getCpuPinning());
 
+        
getModel().getVncKeyboardLayout().setSelectedItem(vm.getVncKeyboardLayout());
+
         if (vm.isInitialized())
         {
             getModel().getTimeZone()
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 7f0e846..e6c03ec 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
@@ -199,6 +199,7 @@
         getModel().getIsStateless().setEntity(this.vm.isStateless());
         
getModel().getIsDeleteProtected().setEntity(this.vm.isDeleteProtected());
         
getModel().getIsSmartcardEnabled().setEntity(this.vm.isSmartcardEnabled());
+        
getModel().getVncKeyboardLayout().setSelectedItem(this.vm.getVncKeyboardLayout());
 
         if (!StringHelper.isNullOrEmpty(this.vm.getTimeZone()))
         {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
index 8d31041..ec72421 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
@@ -4,12 +4,12 @@
 
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
 import org.ovirt.engine.core.common.businessentities.StorageType;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VmType;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import org.ovirt.engine.core.compat.NGuid;
 import org.ovirt.engine.core.compat.StringHelper;
@@ -100,6 +100,7 @@
 
             
getModel().getIsSmartcardEnabled().setEntity(template.isSmartcardEnabled());
             
getModel().getIsDeleteProtected().setEntity(template.isDeleteProtected());
+            
getModel().getVncKeyboardLayout().setSelectedItem(template.getVncKeyboardLayout());
 
             if (getModel().getVmType() == VmType.Desktop) {
                 getModel().getIsStateless().setEntity(template.isStateless());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
index b3c23a5..e03a696 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
@@ -120,6 +120,7 @@
             
getModel().getIsHighlyAvailable().setEntity(vmBase.isAutoStartup());
             
getModel().getIsDeleteProtected().setEntity(vmBase.isDeleteProtected());
             
getModel().getIsSmartcardEnabled().setEntity(vmBase.isSmartcardEnabled());
+            
getModel().getVncKeyboardLayout().setSelectedItem(vmBase.getVncKeyboardLayout());
 
             boolean hasCd = !StringHelper.isNullOrEmpty(vmBase.getIsoPath());
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
index 8afb12b..5d89002 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
@@ -157,6 +157,7 @@
         getModel().getIsStateless().setEntity(this.template.isStateless());
         
getModel().getIsDeleteProtected().setEntity(this.template.isDeleteProtected());
         
getModel().getIsSmartcardEnabled().setEntity(this.template.isSmartcardEnabled());
+        
getModel().getVncKeyboardLayout().setSelectedItem(this.template.getVncKeyboardLayout());
 
         
getModel().getKernel_parameters().setEntity(this.template.getKernelParams());
         getModel().getKernel_path().setEntity(this.template.getKernelUrl());
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 6134b47..fb75f17 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
@@ -12,13 +12,14 @@
 import org.ovirt.engine.core.common.businessentities.BootSequence;
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.UsbPolicy;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VmOsType;
 import org.ovirt.engine.core.common.businessentities.VmType;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
+import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.NGuid;
@@ -115,6 +116,7 @@
             getNumOfMonitors().setIsChangable(false);
             getIsSmartcardEnabled().setIsChangable(false);
             getAllowConsoleReconnect().setIsChangable(false);
+            getVncKeyboardLayout().setIsChangable(false);
 
             // ==Host Tab==
             getIsAutoAssign().setIsChangable(false);
@@ -1034,6 +1036,17 @@
         this.cpuPinning = cpuPinning;
     }
 
+    private ListModel vncKeyboardLayout;
+
+    public ListModel getVncKeyboardLayout() {
+        return vncKeyboardLayout;
+    }
+
+    public void setVncKeyboardLayout(ListModel vncKeyboardLayout) {
+        this.vncKeyboardLayout = vncKeyboardLayout;
+    }
+
+
     public UnitVmModel(VmModelBehaviorBase behavior)
     {
         Frontend.getQueryStartedEvent().addListener(this);
@@ -1065,6 +1078,7 @@
         setIsStateless(new NotChangableForVmInPoolEntityModel());
         setIsSmartcardEnabled(new NotChangableForVmInPoolEntityModel());
         setIsDeleteProtected(new NotChangableForVmInPoolEntityModel());
+        setVncKeyboardLayout(new NotChangableForVmInPoolListModel());
 
         setCdImage(new NotChangableForVmInPoolListModel());
         getCdImage().setIsChangable(false);
@@ -1228,6 +1242,7 @@
         InitAllowConsoleReconnect();
         InitMinimalVmMemSize();
         InitMaximalVmMemSize32OS();
+        initVncKeyboardLayout();
 
         behavior.Initialize(SystemTreeSelectedItem);
     }
@@ -1553,6 +1568,17 @@
         getFirstBootDevice().setSelectedItem(hardDiskOption);
     }
 
+    private void initVncKeyboardLayout() {
+
+        final List<String> layouts = 
(List<String>)AsyncDataProvider.GetConfigValuePreConverted(ConfigurationValues.VncKeyboardLayoutValidValues);
+        final ArrayList<String> vncKeyboardLayoutItems = new 
ArrayList<String>();
+        vncKeyboardLayoutItems.add(null);   // null value means the global 
VncKeyboardLayout from vdc_options will be used
+        vncKeyboardLayoutItems.addAll(layouts);
+        getVncKeyboardLayout().setItems(vncKeyboardLayoutItems);
+
+        getVncKeyboardLayout().setIsAvailable(isVncSelected());
+    }
+
     private void DataCenter_SelectedItemChanged(Object sender, EventArgs args)
     {
         behavior.DataCenter_SelectedItemChanged();
@@ -1656,6 +1682,8 @@
         getUsbPolicy().setIsChangable(type == DisplayType.qxl);
         getIsSmartcardEnabled().setIsChangable(type == DisplayType.qxl);
 
+        getVncKeyboardLayout().setIsAvailable(type == DisplayType.vnc);
+
         UpdateNumOfMonitors();
     }
 
@@ -1735,8 +1763,7 @@
         behavior.updateCpuPinningVisibility();
     }
 
-    private void UpdateNumOfMonitors()
-    {
+    private boolean isVncSelected() {
         boolean isVnc = false;
 
         if (getDisplayProtocol().getSelectedItem() != null)
@@ -1745,7 +1772,12 @@
             isVnc = displayType == DisplayType.vnc;
         }
 
-        if (isVnc)
+        return isVnc;
+    }
+
+    private void UpdateNumOfMonitors()
+    {
+        if (isVncSelected())
         {
             getNumOfMonitors().setSelectedItem(1);
             getNumOfMonitors().setIsChangable(false);
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 475b1e2..1f97f77 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
@@ -1841,6 +1841,7 @@
         tempVar.setKernelParams(vm.getKernelParams());
         tempVar.setDedicatedVmForVds(vm.getDedicatedVmForVds());
         tempVar.setMigrationSupport(vm.getMigrationSupport());
+        tempVar.setVncKeyboardLayout(vm.getVncKeyboardLayout());
 
         VM newvm = tempVar;
 
@@ -2426,6 +2427,7 @@
 
         getcurrentVm().setCpuPinning((String) model.getCpuPinning()
                 .getEntity());
+        getcurrentVm().setVncKeyboardLayout((String) 
model.getVncKeyboardLayout().getSelectedItem());
 
         VDS defaultHost = (VDS) model.getDefaultHost().getSelectedItem();
         if ((Boolean) model.getIsAutoAssign().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 36d10a8..64bd3ed 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
@@ -587,6 +587,8 @@
             getcurrentVm().setQuotaId(((Quota) 
model.getQuota().getSelectedItem()).getId());
         }
 
+        getcurrentVm().setVncKeyboardLayout((String) 
model.getVncKeyboardLayout().getSelectedItem());
+
         EntityModel displayProtocolSelectedItem = (EntityModel) 
model.getDisplayProtocol().getSelectedItem();
         getcurrentVm().setDefaultDisplayType((DisplayType) 
displayProtocolSelectedItem.getEntity());
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8f143e5b8425805ea87651ec382f0bc95f584591
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Beták <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to