Frank Kobzik has uploaded a new change for review.

Change subject: frontend: Couple of changes in console invocation
......................................................................

frontend: Couple of changes in console invocation

This patch contains some changes in consoles:
1. It brings to life spice-html5 radio button.
2. It adds a newline character to generated RDP descriptor.
3. Biggest change: modification of 'Console Options' dialog availability
   condition - now user can open this dialog for VM if it's running.

Change-Id: I7d8b2d781f2bec3102e3efd0e1a6027372e2af46
Signed-off-by: Frantisek Kobzik <fkob...@redhat.com>
---
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/RdpNativeImpl.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java
A 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/AbstractConsoleButtonCell.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleButtonCell.java
A 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleEditButtonCell.java
8 files changed, 150 insertions(+), 117 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/65/17065/1

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 d9dca66..25ad026 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
@@ -322,6 +322,13 @@
                         
getView().selectSpiceImplementation(SpiceConsoleModel.ClientConsoleMode.Plugin);
                     }
                 }));
+        registerHandler(getView().getSpiceHtml5ImplRadioButton()
+                .addValueChangeHandler(new ValueChangeHandler<Boolean>() {
+                    @Override
+                    public void onValueChange(ValueChangeEvent<Boolean> event) 
{
+                        
getView().selectSpiceImplementation(SpiceConsoleModel.ClientConsoleMode.Html5);
+                    }
+                }));
 
          registerHandler(getView().getNoVncImplRadioButton()
                 .addValueChangeHandler(new ValueChangeHandler<Boolean>() {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/RdpNativeImpl.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/RdpNativeImpl.java
index 35c6a77..6204c2d 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/RdpNativeImpl.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/RdpNativeImpl.java
@@ -82,7 +82,7 @@
         
configBuilder.append("\nredirectprinters:i:").append(booleanToInt(getRedirectPrinters()));//$NON-NLS-1$
         
configBuilder.append("\nredirectsmartcards:i:").append(booleanToInt(getRedirectSmartCards()));//$NON-NLS-1$
         
configBuilder.append("\nredirectclipboard:i:").append(booleanToInt(getRedirectClipboard()));//$NON-NLS-1$
-        
configBuilder.append("username:s:").append(getVdcUserNameAndDomain());//$NON-NLS-1$
+        
configBuilder.append("\nusername:s:").append(getVdcUserNameAndDomain());//$NON-NLS-1$
 
         ConsoleModel.makeConsoleConfigRequest("console.rdp", "application/rdp; 
charset=UTF-8", configBuilder.toString());//$NON-NLS-1$$NON-NLS-2$
     }
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 7ccb0c2..3504e67 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
@@ -2323,7 +2323,11 @@
                 || (getSelectedItem() != null && getSelectedItems() != null && 
getSelectedItems().size() == 1));
 
         
getConsoleConnectCommand().setIsExecutionAllowed(isConsoleCommandsExecutionAllowed());
-        
getEditConsoleCommand().setIsExecutionAllowed(isConsoleCommandsExecutionAllowed());
+        getEditConsoleCommand().setIsExecutionAllowed(isConsoleEditEnabled());
+    }
+
+    private boolean isConsoleEditEnabled() {
+        return getSelectedItem() != null && ((VM) 
getSelectedItem()).isRunningOrPaused();
     }
 
     private boolean isConsoleCommandsExecutionAllowed() {
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
index cf6caa7..8939c7d 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
@@ -4,7 +4,6 @@
 import java.util.Map;
 
 import org.ovirt.engine.core.common.businessentities.DiskImage;
-import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.presenter.popup.ConsoleModelChangedEvent;
 import 
org.ovirt.engine.ui.common.presenter.popup.ConsoleModelChangedEvent.ConsoleModelChangedHandler;
@@ -184,13 +183,7 @@
     }
 
     private boolean isEditConsoleEnabled(UserPortalItemModel item) {
-        if (!item.isPool() && consoleUtils.determineConnectionProtocol(item) 
!= null
-                && item.getStatus().equals(VMStatus.Up)) {
-
-            return true;
-        }
-
-        return false;
+        return item.getVM() != null && item.getVM().isRunningOrPaused();
     }
 
 }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java
index a6d6a81..a8fc1d4 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java
@@ -24,9 +24,10 @@
 import org.ovirt.engine.ui.userportal.uicommon.model.vm.UserPortalListProvider;
 import org.ovirt.engine.ui.userportal.widget.action.UserPortalButtonDefinition;
 import 
org.ovirt.engine.ui.userportal.widget.basic.MainTabBasicListItemMessagesTranslator;
+import 
org.ovirt.engine.ui.userportal.widget.extended.vm.AbstractConsoleButtonCell;
 import org.ovirt.engine.ui.userportal.widget.extended.vm.BorderedCompositeCell;
 import org.ovirt.engine.ui.userportal.widget.extended.vm.ConsoleButtonCell;
-import 
org.ovirt.engine.ui.userportal.widget.extended.vm.ConsoleButtonCell.ConsoleButtonCommand;
+import org.ovirt.engine.ui.userportal.widget.extended.vm.ConsoleEditButtonCell;
 import org.ovirt.engine.ui.userportal.widget.extended.vm.ImageButtonCell;
 import org.ovirt.engine.ui.userportal.widget.extended.vm.ImageMaskCell;
 import 
org.ovirt.engine.ui.userportal.widget.extended.vm.ImageMaskCell.ShowMask;
@@ -188,7 +189,7 @@
                 
applicationResources.sideTabExtendedVmStyle().enabledConsoleButton(),
                 
applicationResources.sideTabExtendedVmStyle().disabledConsoleButton(),
                 constants.openConsoleLabel(),
-                new ConsoleButtonCommand() {
+                new AbstractConsoleButtonCell.ConsoleButtonCommand() {
                     @Override
                     public void execute(UserPortalItemModel model) {
                         String message =
@@ -203,12 +204,11 @@
 
         getTable().addColumn(new UserPortalItemSimpleColumn(openConsoleCell), 
constants.empty(), "100px"); //$NON-NLS-1$
 
-        ConsoleButtonCell consoleEditCell = new ConsoleButtonCell(
-                consoleUtils,
+        ConsoleEditButtonCell consoleEditCell = new ConsoleEditButtonCell(
                 
applicationResources.sideTabExtendedVmStyle().enabledEditConsoleButton(),
                 
applicationResources.sideTabExtendedVmStyle().disabledEditConsoleButton(),
                 constants.editConsoleLabel(),
-                new ConsoleButtonCommand() {
+                new AbstractConsoleButtonCell.ConsoleButtonCommand() {
                     @Override
                     public void execute(UserPortalItemModel model) {
                         getModel().getEditConsoleCommand().execute();
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/AbstractConsoleButtonCell.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/AbstractConsoleButtonCell.java
new file mode 100644
index 0000000..a97a364
--- /dev/null
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/AbstractConsoleButtonCell.java
@@ -0,0 +1,112 @@
+package org.ovirt.engine.ui.userportal.widget.extended.vm;
+
+
+import com.google.gwt.cell.client.AbstractCell;
+import com.google.gwt.cell.client.ValueUpdater;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.dom.client.DivElement;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.EventTarget;
+import com.google.gwt.dom.client.NativeEvent;
+import com.google.gwt.safehtml.client.SafeHtmlTemplates;
+import com.google.gwt.safehtml.shared.SafeHtml;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+import com.google.gwt.user.client.DOM;
+import org.ovirt.engine.ui.common.utils.ElementIdUtils;
+import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalItemModel;
+
+public abstract class AbstractConsoleButtonCell extends 
AbstractCell<UserPortalItemModel> {
+
+
+    public static interface ConsoleButtonCommand {
+
+        public void execute(UserPortalItemModel model);
+
+    }
+
+    interface CellTemplate extends SafeHtmlTemplates {
+
+        @Template("<div id=\"{0}\" title=\"{1}\" class=\"{2}\" 
data-class=\"consoleButton\" />")
+        SafeHtml consoleButton(String id, String title, String className);
+
+    }
+
+    private final ConsoleButtonCommand command;
+
+    private final String enabledCss;
+
+    private final String disabledCss;
+
+    private final String title;
+
+    // DOM element ID settings for the text container element
+    private String elementIdPrefix = DOM.createUniqueId();
+    private String columnId;
+
+    private static CellTemplate template;
+
+    public AbstractConsoleButtonCell(String enabledCss, String disabledCss,
+            String title, ConsoleButtonCommand command) {
+        super("click"); //$NON-NLS-1$
+        this.enabledCss = SafeHtmlUtils.htmlEscape(enabledCss);
+        this.disabledCss = SafeHtmlUtils.htmlEscape(disabledCss);
+        this.title = SafeHtmlUtils.htmlEscape(title);
+        this.command = command;
+
+        // Delay cell template creation until the first time it's needed
+        if (template == null) {
+            template = GWT.create(CellTemplate.class);
+        }
+    }
+
+    public void setElementIdPrefix(String elementIdPrefix) {
+        this.elementIdPrefix = elementIdPrefix;
+    }
+
+    public void setColumnId(String columnId) {
+        this.columnId = columnId;
+    }
+
+    @Override
+    public void onBrowserEvent(Context context, Element parent,
+            final UserPortalItemModel model, NativeEvent event,
+            ValueUpdater<UserPortalItemModel> valueUpdater) {
+        super.onBrowserEvent(context, parent, model, event, valueUpdater);
+
+        EventTarget eventTarget = event.getEventTarget();
+
+        // Skip events other than 'click'
+        if (!"click".equals(event.getType())) { //$NON-NLS-1$
+            return;
+        }
+
+        // Skip events that don't target consoleButton DIV element
+        if (!DivElement.is(eventTarget) || 
!"consoleButton".equals(DivElement.as(eventTarget).getAttribute("data-class"))) 
{ //$NON-NLS-1$ //$NON-NLS-2$
+            return;
+        }
+
+        if (shouldRenderCell(model)) {
+            // deferred because first the row has to be selected and then the 
console can be shown
+            Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+                @Override
+                public void execute() {
+                    command.execute(model);
+                }
+            });
+        }
+    }
+
+    @Override
+    public void render(Context context, UserPortalItemModel model, 
SafeHtmlBuilder sb) {
+        sb.append(template.consoleButton(
+                ElementIdUtils.createTableCellElementId(elementIdPrefix, 
columnId, context),
+                title,
+                shouldRenderCell(model) ? enabledCss : disabledCss));
+    }
+
+    protected abstract boolean shouldRenderCell(UserPortalItemModel model);
+
+}
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleButtonCell.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleButtonCell.java
index 5a1a7b2..477963b 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleButtonCell.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleButtonCell.java
@@ -1,120 +1,22 @@
 package org.ovirt.engine.ui.userportal.widget.extended.vm;
 
-import org.ovirt.engine.ui.common.utils.ElementIdUtils;
 import org.ovirt.engine.ui.uicommonweb.ConsoleUtils;
 import org.ovirt.engine.ui.uicommonweb.models.ConsoleProtocol;
 import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalItemModel;
 
-import com.google.gwt.cell.client.AbstractCell;
-import com.google.gwt.cell.client.ValueUpdater;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.dom.client.DivElement;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.EventTarget;
-import com.google.gwt.dom.client.NativeEvent;
-import com.google.gwt.safehtml.client.SafeHtmlTemplates;
-import com.google.gwt.safehtml.shared.SafeHtml;
-import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
-import com.google.gwt.safehtml.shared.SafeHtmlUtils;
-import com.google.gwt.user.client.DOM;
-
-public class ConsoleButtonCell extends AbstractCell<UserPortalItemModel> {
-
-    public static interface ConsoleButtonCommand {
-
-        public void execute(UserPortalItemModel model);
-
-    }
-
-    interface CellTemplate extends SafeHtmlTemplates {
-
-        @Template("<div id=\"{0}\" title=\"{1}\" class=\"{2}\" 
data-class=\"consoleButton\" />")
-        SafeHtml consoleButton(String id, String title, String className);
-
-    }
+public class ConsoleButtonCell extends AbstractConsoleButtonCell {
 
     private final ConsoleUtils consoleUtils;
 
-    private final ConsoleButtonCommand command;
+    public ConsoleButtonCell(ConsoleUtils consoleUtils, String enabledCss, 
String disabledCss, String title, ConsoleButtonCommand command) {
+        super(enabledCss, disabledCss, title, command);
 
-    private final String enabledCss;
-
-    private final String disabledCss;
-
-    private final String title;
-
-    // DOM element ID settings for the text container element
-    private String elementIdPrefix = DOM.createUniqueId();
-    private String columnId;
-
-    private static CellTemplate template;
-
-    public ConsoleButtonCell(ConsoleUtils consoleUtils,
-            String enabledCss, String disabledCss,
-            String title, ConsoleButtonCommand command) {
-        super("click"); //$NON-NLS-1$
         this.consoleUtils = consoleUtils;
-        this.enabledCss = SafeHtmlUtils.htmlEscape(enabledCss);
-        this.disabledCss = SafeHtmlUtils.htmlEscape(disabledCss);
-        this.title = SafeHtmlUtils.htmlEscape(title);
-        this.command = command;
-
-        // Delay cell template creation until the first time it's needed
-        if (template == null) {
-            template = GWT.create(CellTemplate.class);
-        }
-    }
-
-    public void setElementIdPrefix(String elementIdPrefix) {
-        this.elementIdPrefix = elementIdPrefix;
-    }
-
-    public void setColumnId(String columnId) {
-        this.columnId = columnId;
     }
 
     @Override
-    public void onBrowserEvent(Context context, Element parent,
-            final UserPortalItemModel model, NativeEvent event,
-            ValueUpdater<UserPortalItemModel> valueUpdater) {
-        super.onBrowserEvent(context, parent, model, event, valueUpdater);
-
-        EventTarget eventTarget = event.getEventTarget();
-
-        // Skip events other than 'click'
-        if (!"click".equals(event.getType())) { //$NON-NLS-1$
-            return;
-        }
-
-        // Skip events that don't target consoleButton DIV element
-        if (!DivElement.is(eventTarget) || 
!"consoleButton".equals(DivElement.as(eventTarget).getAttribute("data-class"))) 
{ //$NON-NLS-1$ //$NON-NLS-2$
-            return;
-        }
-
-        if (isConsoleEnabled(model)) {
-            // deferred because first the row has to be selected and then the 
console can be shown
-            Scheduler.get().scheduleDeferred(new ScheduledCommand() {
-                @Override
-                public void execute() {
-                    command.execute(model);
-                }
-            });
-        }
-    }
-
-    @Override
-    public void render(Context context, UserPortalItemModel model, 
SafeHtmlBuilder sb) {
-        sb.append(template.consoleButton(
-                ElementIdUtils.createTableCellElementId(elementIdPrefix, 
columnId, context),
-                title,
-                isConsoleEnabled(model) ? enabledCss : disabledCss));
-    }
-
-    protected boolean isConsoleEnabled(UserPortalItemModel model) {
+    protected boolean shouldRenderCell(UserPortalItemModel model) {
         ConsoleProtocol protocol = 
consoleUtils.determineConnectionProtocol(model);
         return consoleUtils.canShowConsole(protocol, model);
     }
-
 }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleEditButtonCell.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleEditButtonCell.java
new file mode 100644
index 0000000..d685d66
--- /dev/null
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/extended/vm/ConsoleEditButtonCell.java
@@ -0,0 +1,15 @@
+package org.ovirt.engine.ui.userportal.widget.extended.vm;
+
+import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalItemModel;
+
+public class ConsoleEditButtonCell extends AbstractConsoleButtonCell {
+
+    public ConsoleEditButtonCell(String enabledCss, String disabledCss, String 
title, ConsoleButtonCommand command) {
+        super(enabledCss, disabledCss, title, command);
+    }
+
+    @Override
+    protected boolean shouldRenderCell(UserPortalItemModel model) {
+        return model.getVM() != null && model.getVM().isRunningOrPaused();
+    }
+}


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

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