Frank Kobzik has uploaded a new change for review.

Change subject: frontend: ctrl-alt-delete changes
......................................................................

frontend: ctrl-alt-delete changes

this patch
 - removes "pass c-a-d to vm" from console options as this option
   doesn't behave well on windows > xp
 - adds a function "remap c-a-d to control-alt-end" for spice and vnc

Change-Id: I0ef2c0a2c071cafa13ec90a10635ea61b78344a1
Signed-off-by: Frantisek Kobzik <fkob...@redhat.com>
Bug-Url: https://bugzilla.redhat.com/1029441
---
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/presenter/popup/ConsolePopupPresenterWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtilsImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_de_DE.properties
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_es_ES.properties
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_fr_FR.properties
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ja_JP.properties
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ko_KR.properties
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_pt_BR.properties
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_zh_CN.properties
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleUtils.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
24 files changed, 210 insertions(+), 121 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/74/21174/1

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 2418a9e..61a686b 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
@@ -1367,9 +1367,6 @@
     @DefaultStringValue("SPICE HTML5 browser client (Tech preview)")
     String spiceHtml5();
 
-    @DefaultStringValue("Pass Ctrl-Alt-Del to virtual machine")
-    String ctrlAltDel();
-
     @DefaultStringValue("Enable USB Auto-Share")
     String usbAutoshare();
 
@@ -1378,9 +1375,6 @@
 
     @DefaultStringValue("Enable SPICE Proxy")
     String enableSpiceProxy();
-
-    @DefaultStringValue("Ctrl-Alt-Del is always passed for this client OS")
-    String ctrlAltDeletIsNotSupportedOnWindows();
 
     @DefaultStringValue("Your browser doesn't support SPICE plugin")
     String spicePluginNotSupportedByBrowser();
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 ab015b7..676232c 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
@@ -131,4 +131,7 @@
 
     @DefaultMessage("Role: {0} on User {1}")
     SafeHtml roleOnUser(String roleName, String userName);
+
+    @DefaultMessage("Map control-alt-del shortcut to {0}")
+    String remapCtrlAltDelete(String hotkey);
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
index 03a291c..11e443b 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java
@@ -98,8 +98,6 @@
 
         void setDisableSmartcardVisible(boolean visible);
 
-        void setCtrlAltDelEnabled(boolean enabled, String reason);
-
         void setSpiceProxyEnabled(boolean enabled, String reason);
 
         void selectVncImplementation(VncConsoleModel.ClientConsoleMode 
clientConsoleMode);
@@ -110,6 +108,7 @@
 
         void flushToPrivateModel();
 
+        void setCtrlAltDeleteRemapHotkey(String hotkey);
     }
 
     private final ConsoleUtils consoleUtils;
@@ -146,6 +145,7 @@
 
         String vmName = model.getModel().getVM().getName();
         getView().setVmName(vmName);
+        
getView().setCtrlAltDeleteRemapHotkey(consoleUtils.getRemapCtrlAltDelHotkey());
 
         super.init(model);
     }
@@ -258,9 +258,6 @@
 
         getView().setAdditionalConsoleAvailable(rdpAvailable);
         
getView().setSpiceConsoleAvailable(currentItem.getDefaultConsoleModel() 
instanceof SpiceConsoleModel);
-
-        boolean ctrlAltDelEnabled = consoleUtils.isCtrlAltDelEnabled();
-        getView().setCtrlAltDelEnabled(ctrlAltDelEnabled, 
constants.ctrlAltDeletIsNotSupportedOnWindows());
 
         boolean spiceProxyEnabled = consoleUtils.isSpiceProxyDefined();
         getView().setSpiceProxyEnabled(spiceProxyEnabled, 
constants.spiceProxyCanBeEnabledOnlyWhenDefined());
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
index 0579f96..0d03431 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractSpice.java
@@ -4,6 +4,8 @@
 import java.util.List;
 
 import org.ovirt.engine.core.compat.Version;
+import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
+import org.ovirt.engine.ui.uicommonweb.TypeResolver;
 import org.ovirt.engine.ui.uicommonweb.models.vms.SpiceConsoleModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.WANDisableEffects;
 import org.ovirt.engine.ui.uicommonweb.models.vms.WanColorDepth;
@@ -47,6 +49,7 @@
     protected String menu;
     protected String guestID;
     protected boolean noTaskMgrExecution;
+    protected boolean remapCtrlAltDelete;
     protected boolean sendCtrlAltDelete;
     protected boolean usbAutoShare;
     protected String usbFilter;
@@ -65,14 +68,15 @@
     // even the spice proxy is globally configured, user can choose to disable 
it for specific VM
     private boolean spiceProxyEnabled;
 
+    private final ConsoleUtils consoleUtils = (ConsoleUtils) 
TypeResolver.getInstance().resolve(ConsoleUtils.class);
+
     public AbstractSpice() {
         setWANDisableEffects(new ArrayList<WANDisableEffects>());
         setWanOptionsEnabled(false);
         setWANColorDepth(WanColorDepth.depth16);
-
-        // send the ctrl + alt + delete by default
-        setSendCtrlAltDelete(true);
-        setNoTaskMgrExecution(true);
+        setRemapCtrlAltDel(true);
+        setNoTaskMgrExecution(false);
+        setSendCtrlAltDelete(false);
     }
 
     public void setWANDisableEffects(List<WANDisableEffects> disableEffects) {
@@ -314,12 +318,20 @@
         this.noTaskMgrExecution = noTaskMgrExecution;
     }
 
+    public boolean isRemapCtrlAltDel() {
+        return remapCtrlAltDelete;
+    }
+
+    public void setRemapCtrlAltDel(boolean remapCtrlAltDelete) {
+        this.remapCtrlAltDelete = remapCtrlAltDelete;
+    }
+
     public boolean getSendCtrlAltDelete() {
         return sendCtrlAltDelete;
     }
 
-    public void setSendCtrlAltDelete(boolean sendCtrlAltDelete) {
-        this.sendCtrlAltDelete = sendCtrlAltDelete;
+    public void setSendCtrlAltDelete(boolean value) {
+        this.sendCtrlAltDelete = value;
     }
 
     public boolean getUsbAutoShare() {
@@ -417,4 +429,8 @@
         return spiceProxyEnabled;
     }
 
+    protected String getSecureAttentionMapping() {
+        return consoleUtils.getRemapCtrlAltDelHotkey();
+    }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
index 429a83a..4b48694 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/AbstractVnc.java
@@ -1,11 +1,22 @@
 package org.ovirt.engine.ui.common.uicommon;
 
+import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
+import org.ovirt.engine.ui.uicommonweb.TypeResolver;
+
 public class AbstractVnc {
 
     private String vncHost;
     private String vncPort;
     private String ticket;
     private String title;
+    private boolean remapCtrlAltDelete;
+
+    private final ConsoleUtils consoleUtils = (ConsoleUtils) 
TypeResolver.getInstance().resolve(ConsoleUtils.class);
+
+
+    public AbstractVnc() {
+        setRemapCtrlAltDelete(true);
+    }
 
     public String getTitle() {
         return title;
@@ -39,4 +50,16 @@
         this.ticket = ticket;
     }
 
+    public boolean isRemapCtrlAltDelete() {
+        return remapCtrlAltDelete;
+    }
+
+    public void setRemapCtrlAltDelete(boolean remapCtrlAltDelete) {
+        this.remapCtrlAltDelete = remapCtrlAltDelete;
+    }
+
+    protected String getSecureAttentionMapping() {
+        return consoleUtils.getRemapCtrlAltDelHotkey();
+    }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
index b7ca3b1..b915054 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpiceNativeImpl.java
@@ -1,6 +1,8 @@
 package org.ovirt.engine.ui.common.uicommon;
 
 import org.ovirt.engine.core.compat.StringHelper;
+import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
+import org.ovirt.engine.ui.uicommonweb.TypeResolver;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ISpiceNative;
 
@@ -73,6 +75,10 @@
             
configBuilder.append("\nrelease-cursor=").append(getReleaseCursorHotKey()); 
//$NON-NLS-1$
         }
 
+        if (isRemapCtrlAltDel() && 
!StringHelper.isNullOrEmpty(getSecureAttentionMapping())) {
+            
configBuilder.append("\nsecure-attention=").append(getSecureAttentionMapping());
 //$NON-NLS-1$
+        }
+
         if (!StringHelper.isNullOrEmpty(getSpiceProxy())) {
             configBuilder.append("\nproxy=").append(getSpiceProxy()); 
//$NON-NLS-1$
         }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java
index 343faeb..3c6404e 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java
@@ -1,5 +1,7 @@
 package org.ovirt.engine.ui.common.uicommon;
 
+import java.util.LinkedList;
+import java.util.List;
 import java.util.logging.Logger;
 
 import org.ovirt.engine.core.compat.StringHelper;
@@ -46,20 +48,37 @@
     }
 
     public String getHotKeysAsString() {
-        if (StringHelper.isNullOrEmpty(getToggleFullscreenHotKey()) && 
StringHelper.isNullOrEmpty(getReleaseCursorHotKey())) {
+        List<String> hotKeysList = getHotKeysAsList();
+
+        if (hotKeysList.size() == 0) {
             return null;
         }
 
-        String comma = (!StringHelper.isNullOrEmpty(getReleaseCursorHotKey()) 
&& !StringHelper.isNullOrEmpty(getToggleFullscreenHotKey())) ? "," //$NON-NLS-1$
-                            : ""; //$NON-NLS-1$
+        StringBuilder hotKeysAsString = new StringBuilder();
+        for (String hotkey : hotKeysList) {
+            hotKeysAsString.append(hotkey);
+            hotKeysAsString.append(","); // $NON-NLS-1$
+        }
 
-        String releaseCursorKeysParameter =
-                StringHelper.isNullOrEmpty(getReleaseCursorHotKey()) ? "" : 
"release-cursor=" + getReleaseCursorHotKey(); //$NON-NLS-1$ //$NON-NLS-2$
+        return hotKeysAsString.substring(0, hotKeysAsString.length() - 1); // 
chop last comma
+    }
 
-        String toggleFullScreenKeysParameter =
-                StringHelper.isNullOrEmpty(getToggleFullscreenHotKey()) ? "" : 
"toggle-fullscreen=" + getToggleFullscreenHotKey(); //$NON-NLS-1$ //$NON-NLS-2$
+    private List<String> getHotKeysAsList() {
+        List<String> result = new LinkedList<String>();
 
-        return releaseCursorKeysParameter + comma + 
toggleFullScreenKeysParameter;
+        if (!StringHelper.isNullOrEmpty(getReleaseCursorHotKey())) {
+            result.add("release-cursor=" + getReleaseCursorHotKey()); // 
$NON-NLS-1$
+        }
+
+        if (!StringHelper.isNullOrEmpty(getToggleFullscreenHotKey())) {
+            result.add("toggle-fullscreen=" + getToggleFullscreenHotKey()); // 
$NON-NLS-1$
+        }
+
+        if (isRemapCtrlAltDel() && 
!StringHelper.isNullOrEmpty(getSecureAttentionMapping())) {
+            result.add("secure-attention=" + getSecureAttentionMapping()); // 
$NON-NLS-1$
+        }
+
+        return result;
     }
 
     public native String loadActiveX(String id, String codebase, String 
classId) /*-{
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
index 378706e..8824457 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/VncNativeImpl.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.ui.common.uicommon;
 
+import org.ovirt.engine.core.compat.StringHelper;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.IVnc;
 
@@ -15,6 +16,10 @@
                 .append("\ndelete-this-file=1") //$NON-NLS-1$
                 .append("\ntitle=").append(getTitle()); //$NON-NLS-1$
 
+        if (isRemapCtrlAltDelete() && 
!StringHelper.isNullOrEmpty(getSecureAttentionMapping())) {
+            
configBuilder.append("\nsecure-attention=").append(getSecureAttentionMapping());
 //$NON-NLS-1$
+        }
+
         ConsoleModel.makeConsoleConfigRequest("console.vv", 
"application/x-virt-viewer; charset=UTF-8", configBuilder.toString()); 
//$NON-NLS-1$ $NON-NLS-2$
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
index 6b59aca..9299d29 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java
@@ -21,15 +21,16 @@
 
     // spice options
     private static final String SPICE_CLIENT_MODE = "_spiceClientMode"; 
//$NON-NLS-1$
-    private static final String CTRL_ALT_DEL = "_ctrlAltDel"; //$NON-NLS-1$
     private static final String OPEN_IN_FULL_SCREEN = "_openInFullScreen"; 
//$NON-NLS-1$
     private static final String SMARTCARD_ENABLED_OVERRIDDEN = 
"_smartcardEnabledOverridden"; //$NON-NLS-1$
     private static final String WAN_OPTIONS = "_wanOptions"; //$NON-NLS-1$
     private static final String USB_AUTOSHARE = "_usbAutoshare"; //$NON-NLS-1$
     private static final String SPICE_PROXY_ENABLED = "_spiceProxyEnabled"; 
//$NON-NLS-1$
+    private static final String REMAP_CAD_SPICE = "_remapCtrlAltDelSpice"; 
//$NON-NLS-1$
 
     // vnc options
     private static final String VNC_CLIENT_MODE = "_vncClientMode"; 
//$NON-NLS-1$
+    private static final String REMAP_CAD_VNC = "_remapCtrlAltDelVnc"; 
//$NON-NLS-1$
 
     // rdp options
     private static final String RDP_CLIENT_MODE = "_rdpClientMode"; 
//$NON-NLS-1$
@@ -102,6 +103,7 @@
         try {
             
asVncConsoleModel(model).setVncImplementation(VncConsoleModel.ClientConsoleMode
                     
.valueOf(clientStorage.getLocalItem(keyMaker.make(VNC_CLIENT_MODE))));
+            
asVncConsoleModel(model).getVncImpl().setRemapCtrlAltDelete(readBool(keyMaker.make(REMAP_CAD_VNC)));
         } catch (Exception e) {
         }
     }
@@ -117,18 +119,19 @@
         clientStorage.setLocalItem(keyMaker.make(SPICE_CLIENT_MODE),
                 consoleModel.getClientConsoleMode().toString());
 
-        storeBool(keyMaker.make(CTRL_ALT_DEL), spice.getSendCtrlAltDelete());
         storeBool(keyMaker.make(OPEN_IN_FULL_SCREEN), spice.isFullScreen());
         storeBool(keyMaker.make(SMARTCARD_ENABLED_OVERRIDDEN), 
spice.isSmartcardEnabledOverridden());
         storeBool(keyMaker.make(WAN_OPTIONS), spice.isWanOptionsEnabled());
         storeBool(keyMaker.make(USB_AUTOSHARE), spice.getUsbAutoShare());
         storeBool(keyMaker.make(SPICE_PROXY_ENABLED), 
spice.isSpiceProxyEnabled());
+        storeBool(keyMaker.make(REMAP_CAD_SPICE), spice.isRemapCtrlAltDel());
     }
 
     private void storeVncData(HasConsoleModel model, KeyMaker keyMaker) {
         VncConsoleModel consoleModel = asVncConsoleModel(model);
         if (consoleModel != null) {
             clientStorage.setLocalItem(keyMaker.make(VNC_CLIENT_MODE), 
consoleModel.getClientConsoleMode().toString());
+            storeBool(keyMaker.make(REMAP_CAD_VNC), 
consoleModel.getVncImpl().isRemapCtrlAltDelete());
         }
     }
 
@@ -168,10 +171,6 @@
 
         ISpice spice = asSpice(model);
 
-        if (consoleUtils.isCtrlAltDelEnabled()) {
-            spice.setSendCtrlAltDelete(readBool(keyMaker.make(CTRL_ALT_DEL)));
-        }
-
         if (consoleUtils.isWanOptionsAvailable(model)) {
             spice.setWanOptionsEnabled(readBool(keyMaker.make(WAN_OPTIONS)));
         }
@@ -183,6 +182,7 @@
         spice.setFullScreen(readBool(keyMaker.make(OPEN_IN_FULL_SCREEN)));
         
spice.setOverrideEnabledSmartcard(readBool(keyMaker.make(SMARTCARD_ENABLED_OVERRIDDEN)));
         spice.setUsbAutoShare(readBool(keyMaker.make(USB_AUTOSHARE)));
+        spice.setRemapCtrlAltDel(readBool(keyMaker.make(REMAP_CAD_SPICE)));
     }
 
     protected ISpice asSpice(HasConsoleModel model) {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtilsImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtilsImpl.java
index e01fa8f..5273334 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtilsImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtilsImpl.java
@@ -24,6 +24,8 @@
     private final ClientAgentType clientAgentType;
     private final Configurator configurator;
 
+    private static final String SECURE_ATTENTION_MAPPING = "ctrl+alt+end";// 
$NON-NLS-1$
+
     @Inject
     public ConsoleUtilsImpl(Configurator configurator, 
CommonApplicationConstants constants) {
         this.configurator= configurator;
@@ -138,29 +140,6 @@
         return null;
     }
 
-    /**
-     * The ctrl+alt+del is enabled for all OS except windows newer than 7
-     * @return false if and only if the client OS type is Windows 7 or newer 
otherwise returns true
-     */
-    @Override
-    public boolean isCtrlAltDelEnabled() {
-        if (!configurator.isClientWindows()) {
-            return true;
-        }
-
-        float ntVersion = extractNtVersion(getUserAgentString());
-
-        // For Windows 7 and Windows Server 2008 R2 it is NT 6.1
-        // For Windows 8 and Windows Server 2012 it is NT 6.2
-        // The passing of ctrl+alt+del is enabled only on windows older
-        // than Windows 7, so NT less than 6.1
-        if (ntVersion >= 6.1f) {
-            return false;
-        }
-
-        return true;
-    }
-
     private float extractNtVersion(String userAgentType) {
         RegExp pattern = RegExp.compile(".*windows nt (\\d+\\.\\d+).*"); 
//$NON-NLS-1$
         MatchResult matcher = pattern.exec(userAgentType.toLowerCase());
@@ -219,6 +198,11 @@
     }
 
     @Override
+    public String getRemapCtrlAltDelHotkey() {
+        return SECURE_ATTENTION_MAPPING;
+    }
+
+    @Override
     public boolean isBrowserPluginSupported(ConsoleProtocol protocol) {
         switch (protocol) {
         case SPICE:
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
index 449cf8a..81248df 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.ConsoleProtocol;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ISpice;
+import org.ovirt.engine.ui.uicommonweb.models.vms.IVnc;
 import org.ovirt.engine.ui.uicommonweb.models.vms.RdpConsoleModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.SpiceConsoleModel;
 
@@ -43,7 +44,7 @@
     }
 
     interface Style extends CssResource {
-        String ctrlAltDelContentWidget();
+        String remapCADContentWidget();
         String consoleResourcesLink();
     }
 
@@ -83,7 +84,11 @@
 
     @UiField(provided = true)
     @WithElementId
-    EntityModelValueCheckBoxEditor<ConsoleModel> ctrlAltDel;
+    EntityModelValueCheckBoxEditor<ConsoleModel> remapCtrlAltDeleteSpice;
+
+    @UiField(provided = true)
+    @WithElementId
+    EntityModelValueCheckBoxEditor<ConsoleModel> remapCtrlAltDeleteVnc;
 
     @UiField(provided = true)
     @WithElementId
@@ -222,21 +227,30 @@
         });
         wanEnabled.setLabel(constants.enableWanOptions());
 
-        ctrlAltDel = new 
EntityModelValueCheckBoxEditor<ConsoleModel>(Align.RIGHT, new SpiceRenderer() {
+        remapCtrlAltDeleteSpice = new 
EntityModelValueCheckBoxEditor<ConsoleModel>(Align.RIGHT, new SpiceRenderer() {
             @Override
             protected void updateModel(ISpice spice, boolean value) {
-                spice.setSendCtrlAltDelete(value);
-                spice.setNoTaskMgrExecution(value);
+                spice.setRemapCtrlAltDel(value);
             }
 
             @Override
             protected boolean extractBoolean(ISpice spice) {
-                return spice.getSendCtrlAltDelete();
+                return spice.isRemapCtrlAltDel();
             }
 
         });
 
-        ctrlAltDel.setLabel(constants.ctrlAltDel());
+        remapCtrlAltDeleteVnc = new 
EntityModelValueCheckBoxEditor<ConsoleModel>(Align.RIGHT, new VncRenderer() {
+            @Override
+            protected void updateModel(IVnc vnc, boolean value) {
+                vnc.setRemapCtrlAltDelete(value);
+            }
+
+            @Override
+            protected boolean extractBoolean(IVnc vnc) {
+                return vnc.isRemapCtrlAltDelete();
+            }
+        });
 
         enableUsbAutoshare = new 
EntityModelValueCheckBoxEditor<ConsoleModel>(Align.RIGHT, new SpiceRenderer() {
 
@@ -319,7 +333,8 @@
         rdpPanel.setVisible(false);
 
         
clientConsoleResourcesUrl.asWidget().addStyleName(style.consoleResourcesLink());
-        
ctrlAltDel.getContentWidgetContainer().addStyleName(style.ctrlAltDelContentWidget());
+        
remapCtrlAltDeleteSpice.getContentWidgetContainer().addStyleName(style.remapCADContentWidget());
+        
remapCtrlAltDeleteVnc.getContentWidgetContainer().addStyleName(style.remapCADContentWidget());
         asWidget().addStatusWidget(clientConsoleResourcesUrl);
     }
 
@@ -331,7 +346,8 @@
         ConsoleModel defaultConsole =
                 model.getModel().getDefaultConsoleModel();
         editCheckBoxes(defaultConsole,
-                ctrlAltDel,
+                remapCtrlAltDeleteSpice,
+                remapCtrlAltDeleteVnc,
                 enableUsbAutoshare,
                 openInFullScreen,
                 enableSpiceProxy,
@@ -365,13 +381,20 @@
         }
 
         flushCheckBoxes(
-                ctrlAltDel,
+                remapCtrlAltDeleteSpice,
+                remapCtrlAltDeleteVnc,
                 enableUsbAutoshare,
                 openInFullScreen,
                 enableSpiceProxy,
                 useLocalDrives,
                 wanEnabled,
                 disableSmartcard);
+    }
+
+    @Override
+    public void setCtrlAltDeleteRemapHotkey(String hotkey) {
+        remapCtrlAltDeleteSpice.setLabel(messages.remapCtrlAltDelete(hotkey));
+        remapCtrlAltDeleteVnc.setLabel(messages.remapCtrlAltDelete(hotkey));
     }
 
     private void setSelectedSpiceImpl() {
@@ -551,9 +574,36 @@
         protected abstract boolean extractBoolean(ISpice spice);
     }
 
+    private abstract class VncRenderer implements 
ValueCheckboxRenderer<ConsoleModel> {
+
+
+        @Override
+        public boolean render(ConsoleModel value) {
+            if (value instanceof VncConsoleModel) {
+                return extractBoolean(((VncConsoleModel) value).getVncImpl());
+            }
+
+            return false;
+        }
+
+        @Override
+        public ConsoleModel read(boolean value, ConsoleModel model) {
+            if (model instanceof VncConsoleModel) {
+                updateModel(((VncConsoleModel) model).getVncImpl(), value);
+            }
+
+            return model;
+        }
+
+        protected abstract void updateModel(IVnc spice, boolean value);
+
+        protected abstract boolean extractBoolean(IVnc spice);
+    }
+
+
     @Override
     public void setSpiceConsoleAvailable(boolean hasSpiceConsole) {
-        ctrlAltDel.setVisible(hasSpiceConsole);
+        remapCtrlAltDeleteSpice.setVisible(hasSpiceConsole);
         enableUsbAutoshare.setVisible(hasSpiceConsole);
         openInFullScreen.setVisible(hasSpiceConsole);
     }
@@ -576,14 +626,6 @@
     @Override
     public void setVmName(String vmName) {
         consoleTitle.setText(messages.selectConsoleFor(vmName));
-    }
-
-    @Override
-    public void setCtrlAltDelEnabled(boolean enabled, String reason) {
-        ctrlAltDel.setEnabled(enabled);
-        if (!enabled) {
-            ctrlAltDel.setTitle(reason);
-        }
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
index fa7d7cb..9e5dd57 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/ConsolePopupView.ui.xml
@@ -9,41 +9,41 @@
        <ui:with field='constants' 
type='org.ovirt.engine.ui.common.CommonApplicationConstants' />
 
        <ui:style 
type="org.ovirt.engine.ui.common.view.popup.ConsolePopupView.Style">
-               .explanationLabel {
-                       font-style: italic;
-                       margin-left: 40px;
-                       margin-bottom: 10px;
-                       width: 300px;
-               }
+        .explanationLabel {
+            font-style: italic;
+            margin-left: 40px;
+            margin-bottom: 10px;
+            width: 300px;
+        }
 
-               .fullWidth {
-                       width: 100%;
-               }
+        .fullWidth {
+            width: 100%;
+        }
 
-               .labelStyle {
-                       font-size: 11px;
-                       font-weight: bold;
-                       color: #333333;
-               }
+        .labelStyle {
+            font-size: 11px;
+            font-weight: bold;
+            color: #333333;
+        }
 
-               .ctrlAltDelContentWidget {
-                       width: 300px;
-               }
+        .remapCADContentWidget {
+            width: 300px;
+        }
 
-               .protocolRadioButton {
-                   float:left;
-                   display:inline;
-           }
+        .protocolRadioButton {
+            float: left;
+            display: inline;
+        }
 
-           .protocolPanel {
-               float: left;
+        .protocolPanel {
+            float: left;
             width: 90%;
-           }
+        }
 
         .consoleResourcesLink {
             margin-left: 12px;
-           }
-       </ui:style>
+        }
+    </ui:style>
 
        <d:SimpleDialogPanel width="500px" height="420px">
                <d:content>
@@ -65,7 +65,7 @@
                                        <e:EntityModelRadioButtonEditor 
ui:field="spiceHtml5ImplRadioButton" title="{constants.spiceInvokeHtml5}"/>
 
                                        <g:Label ui:field="spiceTitle" 
text="{constants.spiceOptions}" addStyleNames="{style.labelStyle}" />
-                                       <w:EntityModelValueCheckBoxEditor 
ui:field="ctrlAltDel" />
+                                       <w:EntityModelValueCheckBoxEditor 
ui:field="remapCtrlAltDeleteSpice" />
                                        <w:EntityModelValueCheckBoxEditor 
ui:field="enableUsbAutoshare" />
                                        <w:EntityModelValueCheckBoxEditor 
ui:field="openInFullScreen" />
                                        <w:EntityModelValueCheckBoxEditor 
ui:field="enableSpiceProxy" />
@@ -83,6 +83,7 @@
                                        <g:Label 
text="{constants.consoleInvocation}" addStyleNames="{style.labelStyle}" />
                                        <e:EntityModelRadioButtonEditor 
ui:field="vncNativeImplRadioButton" title="{constants.nativeClient}"/>
                                        <e:EntityModelRadioButtonEditor 
ui:field="noVncImplRadioButton" title="{constants.noVnc}"/>
+                    <w:EntityModelValueCheckBoxEditor 
ui:field="remapCtrlAltDeleteVnc" />
                                </g:FlowPanel>
 
                                <g:FlowPanel ui:field="rdpPanel" 
addStyleNames="{style.protocolPanel}">
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_de_DE.properties
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_de_DE.properties
index 4490ec6..ee77d6e 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_de_DE.properties
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_de_DE.properties
@@ -103,7 +103,7 @@
 cpuSocketsVmPopup=CPU Sockets
 createSnapshot=Erstellen
 creationDateDisk=Erstellungsdatum
-ctrlAltDel=\u00DCbergabe von Strg-Alt-Del zur virtuellen Maschine
+remapCtrlAltDelete=\u00DCbergabe von Strg-Alt-Del zur virtuellen Maschine
 ctrlAltDeletIsNotSupportedOnWindows=Ctrl-Alt-Del wird immer f\u00FCr dieses 
Client OS weitergegeben
 currentQuota=Aktuell
 currentSnapshotLabel=Aktuell
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_es_ES.properties
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_es_ES.properties
index 57599c9..31bc67a 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_es_ES.properties
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_es_ES.properties
@@ -140,7 +140,7 @@
 createSnapshot=Crear
 # auto translated by TM merge
 creationDateDisk=Fecha de creaci\u00F3n
-ctrlAltDel=Pulse Ctrl-Alt-Borrar para la m\u00E1quina virtual
+remapCtrlAltDelete=Pulse Ctrl-Alt-Borrar para la m\u00E1quina virtual
 ctrlAltDeletIsNotSupportedOnWindows=Siempre se pasaCtrl-Alt-Borr para el SO de 
este cliente
 currentQuota=Actual
 # auto translated by TM merge
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_fr_FR.properties
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_fr_FR.properties
index 3335c93..e2a0fe6 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_fr_FR.properties
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_fr_FR.properties
@@ -110,7 +110,7 @@
 # auto translated by TM merge
 createSnapshot=Cr\u00E9er
 creationDateDisk=Date de cr\u00E9ation
-ctrlAltDel=Passer Ctrl-Alt-Del \u00E0 la machine virtuelle
+remapCtrlAltDelete=Passer Ctrl-Alt-Del \u00E0 la machine virtuelle
 ctrlAltDeletIsNotSupportedOnWindows=Ctrl-Alt-Del est toujours pass\u00E9 pour 
ce Client OS
 currentQuota=En cours
 currentSnapshotLabel=En cours
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ja_JP.properties
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ja_JP.properties
index 75c3a5e..16d3870 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ja_JP.properties
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ja_JP.properties
@@ -103,7 +103,7 @@
 cpuSocketsVmPopup=CPU \u30BD\u30B1\u30C3\u30C8
 createSnapshot=\u4F5C\u6210
 creationDateDisk=\u4F5C\u6210\u65E5
-ctrlAltDel=\u4EEE\u60F3\u30DE\u30B7\u30F3\u306B Ctrl-Alt-Del 
\u3092\u9001\u4FE1\u3059\u308B
+remapCtrlAltDelete=\u4EEE\u60F3\u30DE\u30B7\u30F3\u306B Ctrl-Alt-Del 
\u3092\u9001\u4FE1\u3059\u308B
 
ctrlAltDeletIsNotSupportedOnWindows=\u3053\u306E\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u3067\u306F
 Ctrl-Alt-Del \u3092\u5E38\u306B\u9001\u4FE1
 currentQuota=\u73FE\u5728
 currentSnapshotLabel=\u73FE\u5728
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ko_KR.properties
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ko_KR.properties
index 68ec3b1..74b8170 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ko_KR.properties
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_ko_KR.properties
@@ -56,7 +56,7 @@
 createSnapshot=\uC0DD\uC131
 creationDateDisk=\uC0DD\uC131 \uC77C\uC790
 # translation auto-copied from project oVirt, version master, document 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/org.ovirt.engine.ui.userportal.ApplicationConstants,
 author Junwan Park
-ctrlAltDel=\uAC00\uC0C1\uBA38\uC2E0\uC5D0 Ctrl-Alt-Del \uC804\uC1A1
+remapCtrlAltDelete=\uAC00\uC0C1\uBA38\uC2E0\uC5D0 Ctrl-Alt-Del \uC804\uC1A1
 currentQuota=\uD604\uC7AC
 currentSnapshotLabel=\uD604\uC7AC
 customEventIdEvent=\uC0AC\uC6A9\uC790 \uC815\uC758 \uC774\uBC34\uD2B8 ID
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_pt_BR.properties
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_pt_BR.properties
index 3e44867..56ffa93 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_pt_BR.properties
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_pt_BR.properties
@@ -142,7 +142,7 @@
 createSnapshot=Criar
 # auto translated by TM merge from project: oVirt, version: master, DocId: 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/org.ovirt.engine.ui.webadmin.ApplicationConstants
 creationDateDisk=Data da Cria\u00E7\u00E3o
-ctrlAltDel=Efetuar Ctrl-Alt-Del \u00E0 m\u00E1quina virtual
+remapCtrlAltDelete=Efetuar Ctrl-Alt-Del \u00E0 m\u00E1quina virtual
 ctrlAltDeletIsNotSupportedOnWindows=Ctrl-Alt-Del \u00E9 sempre passado a estes 
clientes OS
 # auto translated by TM merge from project: oVirt, version: master, DocId: 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/org.ovirt.engine.ui.webadmin.ApplicationConstants
 currentQuota=Atual
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_zh_CN.properties
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_zh_CN.properties
index 2e6d388..f202e00 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_zh_CN.properties
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants_zh_CN.properties
@@ -144,7 +144,7 @@
 createSnapshot=\u521B\u5EFA
 # auto translated by TM merge
 creationDateDisk=\u521B\u5EFA\u65E5\u671F
-ctrlAltDel=\u4F20\u9012 Ctrl-Alt-Del \u7ED9\u865A\u62DF\u673A
+remapCtrlAltDelete=\u4F20\u9012 Ctrl-Alt-Del \u7ED9\u865A\u62DF\u673A
 ctrlAltDeletIsNotSupportedOnWindows=Ctrl-Alt-Del 
\u603B\u662F\u4F20\u9012\u7ED9\u8FD9\u4E2A\u5BA2\u6237\u64CD\u4F5C\u7CFB\u7EDF
 # auto translated by TM merge
 currentQuota=\u5F53\u524D\u7684
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleUtils.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleUtils.java
index 990b92b2..08b5578 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleUtils.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleUtils.java
@@ -18,12 +18,6 @@
     public boolean canShowConsole(ConsoleProtocol selectedProtocol, 
HasConsoleModel item);
 
     /**
-     * The ctrl+alt+del is enabled for all OS except windows newer than 7
-     * @return false if and only if the client OS type is Windows 7 or newer 
otherwise returns true
-     */
-    public boolean isCtrlAltDelEnabled();
-
-    /**
      * Returns true if the smartcard is enabled for the specific VM entity 
(edit VM popup)
      */
     public boolean isSmartcardGloballyEnabled(HasConsoleModel item);
@@ -40,4 +34,7 @@
     public boolean isSpiceProxyDefined();
 
     public boolean isWebSocketProxyDefined();
+
+    public String getRemapCtrlAltDelHotkey();
+
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
index c2fd62d..ced3405 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ISpice.java
@@ -115,6 +115,10 @@
 
     void setNoTaskMgrExecution(boolean value);
 
+    boolean isRemapCtrlAltDel();
+
+    void setRemapCtrlAltDel(boolean value);
+
     boolean getSendCtrlAltDelete();
 
     void setSendCtrlAltDelete(boolean value);
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
index 3d58739..a597437 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/IVnc.java
@@ -6,6 +6,8 @@
     void setVncPort(String port);
     void setTicket(String ticket);
     void setTitle(String title);
+    boolean isRemapCtrlAltDelete();
+    void setRemapCtrlAltDelete(boolean remapCtrlAltDelete);
 
     void invokeClient();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
index 0e8a7af..f33f54f 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java
@@ -34,7 +34,6 @@
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.BaseCommandTarget;
-import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
 import org.ovirt.engine.ui.uicommonweb.ILogger;
 import org.ovirt.engine.ui.uicommonweb.TypeResolver;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
@@ -155,13 +154,6 @@
             // If it is not windows or SPICE guest agent is not installed, 
make sure the WAN options are disabled.
             if (!AsyncDataProvider.isWindowsOsType(getEntity().getVmOsId()) || 
!getEntity().getHasSpiceDriver()) {
                 getspice().setWanOptionsEnabled(false);
-            }
-
-            // make sure to not send the ctrl+alt+delete and TaskMgrExecution 
if not supported
-            ConsoleUtils consoleUtils = (ConsoleUtils) 
TypeResolver.getInstance().resolve(ConsoleUtils.class);
-            if (!consoleUtils.isCtrlAltDelEnabled()) {
-                getspice().setSendCtrlAltDelete(false);
-                getspice().setNoTaskMgrExecution(false);
             }
 
             UICommand setVmTicketCommand = new UICommand("setVmCommand", new 
BaseCommandTarget() { //$NON-NLS-1$
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
index f849059..a1be177 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VncConsoleModel.java
@@ -60,6 +60,10 @@
         this.vncImpl = (IVnc) TypeResolver.getInstance().resolve(implClass);
     }
 
+    public IVnc getVncImpl() {
+        return vncImpl;
+    }
+
     public ClientConsoleMode getClientConsoleMode() {
         return consoleMode;
     }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0ef2c0a2c071cafa13ec90a10635ea61b78344a1
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Frank Kobzik <fkob...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to