Tomas Jelinek has uploaded a new change for review. Change subject: webadmin: WIP added rest of the fields to VM popup ......................................................................
webadmin: WIP added rest of the fields to VM popup Change-Id: I96f95d2d520d82423d718381cc08f1a9eceab703 Signed-off-by: Tomas Jelinek <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/EntityModelDetachableWidgetWithInfo.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml 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/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmInstanceTypeManager.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/InstanceTypeManager.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInstanceTypeManager.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/VmModelBehaviorBase.java 18 files changed, 337 insertions(+), 173 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/57/24957/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/EntityModelDetachableWidgetWithInfo.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/EntityModelDetachableWidgetWithInfo.java index 41166cd..798ab5d 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/EntityModelDetachableWidgetWithInfo.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/EntityModelDetachableWidgetWithInfo.java @@ -3,7 +3,6 @@ import com.google.gwt.user.client.ui.HasEnabled; import org.ovirt.engine.ui.common.widget.editor.EntityModelLabel; import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelDetachableWidget; -import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelDetachableWidgetWithLabel; public class EntityModelDetachableWidgetWithInfo extends EntityModelWidgetWithInfo implements HasDetachable, HasEnabled { diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java index cf9cf13..16c59859 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/BaseEntityModelDetachableWidget.java @@ -3,15 +3,10 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.resources.client.CssResource; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HasEnabled; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.UIObject; -import com.google.gwt.user.client.ui.Widget; import org.ovirt.engine.ui.common.CommonApplicationResources; -import org.ovirt.engine.ui.common.widget.AbstractValidatedWidget; import org.ovirt.engine.ui.common.widget.HasDetachable; public abstract class BaseEntityModelDetachableWidget extends Composite implements HasDetachable { @@ -56,10 +51,10 @@ protected void changeWidgetStyle(UIObject widget, boolean detachableIconVisible) { if (detachableIconVisible) { widget.removeStyleName(style.contentWidgetWithoutDetachable()); - widget.setStyleName(style.contentWidgetWithDetachable()); + widget.addStyleName(style.contentWidgetWithDetachable()); } else { widget.removeStyleName(style.contentWidgetWithDetachable()); - widget.setStyleName(style.contentWidgetWithoutDetachable()); + widget.addStyleName(style.contentWidgetWithoutDetachable()); } } @@ -67,4 +62,6 @@ public void setAttached(boolean attached) { attachedSeparatedImage.setResource(attached ? resource.joinedIcon() : resource.separatedIcon()); } + + } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.java new file mode 100644 index 0000000..b620c47 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.java @@ -0,0 +1,45 @@ +package org.ovirt.engine.ui.common.widget.editor.generic; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiChild; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget; + +/** + * Takes a AbstractValidatedWidgetWithLabel, decorates it with the detachable icon but does not render it's label + */ +public class DetachableLabel extends BaseEntityModelDetachableWidget { + + interface WidgetUiBinder extends UiBinder<Widget, DetachableLabel> { + WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); + } + + interface Style extends BaseStyle { + } + + @UiField + Image attachedSeparatedImage; + + @UiField(provided = true) + Label decorated; + + @UiField + Style style; + + @UiChild(tagname = "decorated", limit = 1) + public void setHeader(Label decorated) { + this.decorated = decorated; + + initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); + + initialize(decorated, attachedSeparatedImage, style); + } + + public void setContentWidgetStyleName(String contentWidgetStyleName) { + decorated.setStyleName(contentWidgetStyleName); + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml new file mode 100644 index 0000000..f2ea006 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DetachableLabel.ui.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> +<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"> + + <ui:with field='resources' type='org.ovirt.engine.ui.common.CommonApplicationResources'/> + + <ui:style type="org.ovirt.engine.ui.common.widget.editor.generic.DetachableLabel.Style"> + .image { + vertical-align: -4px; + } + + .wrapper { + text-align: left; + } + + .contentWrapper { + float: left; + width: 100%; + } + + .contentWidgetWithoutDetachable, .contentWidgetWithDetachable { + float: left; + } + + </ui:style> + + <g:FlowPanel addStyleNames="{style.contentWrapper}"> + <g:Label ui:field="decorated"/> + <g:Image ui:field="attachedSeparatedImage" addStyleNames="{style.image}"/> + </g:FlowPanel> + +</ui:UiBinder> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.java index f6ca691..bbe4a22 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.java @@ -1,14 +1,17 @@ package org.ovirt.engine.ui.common.widget.editor.generic; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style; import com.google.gwt.dom.client.Style.Float; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HasEnabled; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel; +import org.ovirt.engine.ui.common.widget.Align; /** * Takes a AbstractValidatedWidgetWithLabel, decorates it with the detachable icon but does not render it's label @@ -20,6 +23,8 @@ } interface Style extends BaseStyle { + String contentWrapperImageOnRight(); + String contentWrapper(); } @UiField @@ -31,16 +36,31 @@ private AbstractValidatedWidgetWithLabel decorated; @UiField + FlowPanel contentWrapper; + + @UiField Style style; - public EntityModelDetachableWidget(AbstractValidatedWidgetWithLabel decorated) { + public EntityModelDetachableWidget(AbstractValidatedWidgetWithLabel decorated, Align attachedImageAlign) { this.decorated = decorated; this.contentWidgetContainer = decorated.getContentWidgetContainer(); - contentWidgetContainer.getElement().getStyle().setFloat(Float.RIGHT); initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); + if (attachedImageAlign == Align.LEFT) { + contentWidgetContainer.getElement().getStyle().setFloat(Float.RIGHT); + } else { + contentWidgetContainer.getElement().getStyle().setFloat(Float.LEFT); + contentWidgetContainer.getElement().getStyle().setWidth(230, com.google.gwt.dom.client.Style.Unit.PX); + contentWrapper.removeStyleName(style.contentWrapper()); + contentWrapper.addStyleName(style.contentWrapperImageOnRight()); + } + initialize(contentWidgetContainer, attachedSeparatedImage, style); + } + + public EntityModelDetachableWidget(AbstractValidatedWidgetWithLabel decorated) { + this(decorated, Align.LEFT); } @Override @@ -52,4 +72,5 @@ public void setEnabled(boolean enabled) { decorated.setEnabled(enabled); } + } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml index f34fce2..4dc893b 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidget.ui.xml @@ -12,11 +12,16 @@ .wrapper { text-align: left; + clear: both; } .contentWrapper { float: right; width: 230px; + padding: 0 5px; + } + + .contentWrapperImageOnRight { padding: 0 5px; } @@ -30,14 +35,19 @@ .contentWidgetWithDetachable { padding: 0 0px; + width: 200px; + } + + .contentWidgetContainer { + /*width: 230px;*/ } </ui:style> <g:HTMLPanel ui:field="wrapperPanel" addStyleNames="{style.wrapper}"> - <g:FlowPanel addStyleNames="{style.contentWrapper}"> + <g:FlowPanel ui:field="contentWrapper" addStyleNames="{style.contentWrapper}"> <g:Image ui:field="attachedSeparatedImage" addStyleNames="{style.image}" /> - <g:SimplePanel ui:field="contentWidgetContainer" /> + <g:SimplePanel ui:field="contentWidgetContainer" addStyleNames="{style.contentWidgetContainer}" /> </g:FlowPanel> </g:HTMLPanel> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.java index abb1047..38b49d7 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.java @@ -2,18 +2,13 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.LabelElement; -import com.google.gwt.dom.client.Style.Display; -import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HasEnabled; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import org.ovirt.engine.ui.common.CommonApplicationResources; import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel; -import org.ovirt.engine.ui.common.widget.HasDetachable; import org.ovirt.engine.ui.common.widget.HasLabel; public class EntityModelDetachableWidgetWithLabel extends BaseEntityModelDetachableWidget implements HasLabel, HasEnabled { diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml index 2189af8..91f0009 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelDetachableWidgetWithLabel.ui.xml @@ -29,6 +29,7 @@ .contentWidgetWithDetachable { padding: 0 0px; + width: 200px; } .label { 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 f0e5adb..073fe1f 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 @@ -42,6 +42,7 @@ import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxOnlyEditor; import org.ovirt.engine.ui.common.widget.editor.ListModelTypeAheadListBoxEditor; import org.ovirt.engine.ui.common.widget.editor.VncKeyMapRenderer; +import org.ovirt.engine.ui.common.widget.editor.generic.DetachableLabel; import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxOnlyEditor; import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelDetachableWidget; @@ -245,19 +246,23 @@ @Ignore Panel vcpusAdvancedParameterExpanderContent; - @UiField(provided = true) @Path(value = "numOfSockets.selectedItem") @WithElementId("numOfSockets") public ListModelListBoxEditor<Integer> numOfSocketsEditor; - @UiField(provided = true) @Path(value = "coresPerSocket.selectedItem") @WithElementId("coresPerSocket") public ListModelListBoxEditor<Integer> corePerSocketEditor; + @UiField(provided = true) + public EntityModelDetachableWidgetWithLabel numOfSocketsEditorWithDetachable; + + @UiField(provided = true) + public EntityModelDetachableWidgetWithLabel corePerSocketEditorWithDetachable; + @UiField @Ignore - public Label ssoMethodLabel; + public DetachableLabel ssoMethodLabel; @UiField(provided = true) @Path(value = "ssoMethodNone.entity") @@ -269,10 +274,13 @@ @WithElementId("ssoMethodGuestAgent") public EntityModelRadioButtonEditor ssoMethodGuestAgent; - @UiField(provided = true) @Path(value = "isSoundcardEnabled.entity") @WithElementId("isSoundcardEnabled") public EntityModelCheckBoxEditor isSoundcardEnabledEditor; + + @UiField(provided = true) + @Ignore + public EntityModelDetachableWidget isSoundcardEnabledEditorWithDetachable; @UiField(provided = true) @Path("copyPermissions.entity") @@ -437,20 +445,26 @@ @WithElementId("isRunAndPause") public EntityModelCheckBoxEditor isRunAndPauseEditor; - @UiField(provided = true) @Path(value = "isSmartcardEnabled.entity") @WithElementId("isSmartcardEnabled") public EntityModelCheckBoxEditor isSmartcardEnabledEditor; + + @UiField(provided = true) + public EntityModelDetachableWidget isSmartcardEnabledEditorWithDetachable; @UiField(provided = true) @Path(value = "allowConsoleReconnect.entity") @WithElementId("allowConsoleReconnect") public EntityModelCheckBoxEditor allowConsoleReconnectEditor; - @UiField(provided = true) + @Path(value = "isConsoleDeviceEnabled.entity") @WithElementId("isConsoleDeviceEnabled") public EntityModelCheckBoxEditor isConsoleDeviceEnabledEditor; + + @UiField(provided = true) + @Ignore + public EntityModelDetachableWidget isConsoleDeviceEnabledEditorWithDetachable; @UiField @Path(value = "spiceProxy.entity") @@ -795,6 +809,9 @@ private void initDetachableFields() { detachableMemSizeEditor = new EntityModelDetachableWidgetWithLabel(memSizeEditor); + isSmartcardEnabledEditorWithDetachable = new EntityModelDetachableWidget(isSmartcardEnabledEditor, Align.RIGHT); + isSoundcardEnabledEditorWithDetachable = new EntityModelDetachableWidget(isSoundcardEnabledEditor, Align.RIGHT); + isConsoleDeviceEnabledEditorWithDetachable = new EntityModelDetachableWidget(isConsoleDeviceEnabledEditor, Align.RIGHT); } protected void initialize() { @@ -1006,7 +1023,9 @@ ); numOfSocketsEditor = new ListModelListBoxEditor<Integer>(new ModeSwitchingVisibilityRenderer()); + numOfSocketsEditorWithDetachable = new EntityModelDetachableWidgetWithLabel(numOfSocketsEditor); corePerSocketEditor = new ListModelListBoxEditor<Integer>(new ModeSwitchingVisibilityRenderer()); + corePerSocketEditorWithDetachable = new EntityModelDetachableWidgetWithLabel(corePerSocketEditor); // Pools poolTypeEditor = new ListModelListBoxEditor<EntityModel<VmPoolType>>(new NullSafeRenderer<EntityModel<VmPoolType>>() { @@ -1202,8 +1221,8 @@ memSizeEditor.setLabel(constants.memSizeVmPopup()); detachableMemSizeEditor.setLabel(constants.memSizeVmPopup()); totalvCPUsEditor.setLabel(constants.numOfVCPUs()); - corePerSocketEditor.setLabel(constants.coresPerSocket()); - numOfSocketsEditor.setLabel(constants.numOfSockets()); + corePerSocketEditorWithDetachable.setLabel(constants.coresPerSocket()); + numOfSocketsEditorWithDetachable.setLabel(constants.numOfSockets()); } protected void applyStyles() { 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 8258f2f..405c49c 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 @@ -79,44 +79,44 @@ } <!-- turns off the original styles --> - .checkboxWithLongLabel,.checkbox { - margin-left: -9px; - } + .checkboxWithLongLabel, .checkbox { + margin-left: -9px; + } - .checkboxWithLongLabel label { - margin-left: 26px; - margin-top: -26px; - display: block; - line-height: 20px; - } + .checkboxWithLongLabel label { + margin-left: 26px; + margin-top: -26px; + display: block; + line-height: 20px; + } - .longCheckboxContent { - width: 90%; - } + .longCheckboxContent { + width: 90%; + } - .provisioningEditor { - padding-right: 25px; - } + .provisioningEditor { + padding-right: 25px; + } - .provisioningEditorContent { - display: none; - } + .provisioningEditorContent { + display: none; + } - .provisioningRadioContent { - padding-top: 3px; - width: 100%; - } + .provisioningRadioContent { + padding-top: 3px; + width: 100%; + } - .disksAllocation { - padding-left: 5px; - padding-top: 10px; - } + .disksAllocation { + padding-left: 5px; + padding-top: 10px; + } - .disksAllocationPanel { - width: 490px; - padding-top: 5px; - padding-bottom: 10px; - } + .disksAllocationPanel { + width: 490px; + padding-top: 5px; + padding-bottom: 10px; + } .textBox { width: 30px; @@ -138,124 +138,122 @@ text-align: right; } - .radioButton { + .radioButton { - } + } - .radioButtonSpecificHost { + .radioButtonSpecificHost { margin-left: 5px; - } + } - .label { - width: 350px; - } + .label { + width: 350px; + } .labelDisabled { color: gray; } - .runHostPanel { + .runHostPanel { - } + } - .attachCdPanel { - width: 100%; - } + .attachCdPanel { + width: 100%; + } .cdAttachedLabelWidth { width: 30px; } - .hostRunMigrationOptions { - margin-left: 6px; - } + .hostRunMigrationOptions { + margin-left: 6px; + } - .warningMessageLabel { - color: #CD2127; - position: absolute; - bottom: 10px; - } + .warningMessageLabel { + color: #CD2127; + position: absolute; + bottom: 10px; + } - - - .cpuPinningStyle { + .cpuPinningStyle { float: left; - } + } - .expanderContent,.generalExpanderContent { - padding-left: 10px; - } - - .monitorsStyles { - width: 40px; - padding-left: 5px; - } + .expanderContent, .generalExpanderContent { + padding-left: 10px; + } - .expanderContent { - float: left; - } + .monitorsStyles { + width: 40px; + padding-left: 5px; + } - .warningLabel { + .expanderContent { + float: left; + } + + .warningLabel { color: red; font-weight: bold; margin-bottom: 10px; } - + .poolEditVms, .name { - line-height: 30px; - padding: 0 5px; - padding-bottom: 35px; + line-height: 30px; + padding: 0 5px; + padding-bottom: 35px; } - - .prestartedVmsEditorContent,.nameEditorContent,.maxAssignedVmsPerUserEditorContent { - width: 230px; + + .prestartedVmsEditorContent, .nameEditorContent, .maxAssignedVmsPerUserEditorContent { + width: 230px; } - - .prestartedVmsEditor,.nameEditor,.maxAssignedVmsPerUserEditor { - float: right; - width: 230px; + + .prestartedVmsEditor, .nameEditor, .maxAssignedVmsPerUserEditor { + float: right; + width: 230px; } - - .editPrestartedVmsEditor,.editMaxAssignedVmsPerUserEditor { - float: left; - padding-right: 10px; + + .editPrestartedVmsEditor, .editMaxAssignedVmsPerUserEditor { + float: left; + padding-right: 10px; } - + .infoIcon, .prestartedVmsIcon, .poolNameIcon, .maxAssignedVmsPerUserIcon { - float: left; - padding-top: 5px; + float: left; + padding-top: 5px; padding-left: 2px; } - - .prestartedLabelWithHelp,.increasePrestartedLabel,.maxAssignedVmsPerUserLabel { - float: left; + + .prestartedLabelWithHelp, .increasePrestartedLabel, .maxAssignedVmsPerUserLabel { + float: left; } - .editPrestartedVms,.editIncreaseVms,.editMaxAssignedVmsPerUser { + .editPrestartedVms, .editIncreaseVms, .editMaxAssignedVmsPerUser { float: right; - width: 250px; + width: 250px; } - + .prestartedLabel, .nameLabel { - float: left; - color: #333333; - } - - .increaseVmsInPoolVms,.maxAssignedVmsPerUserVms { - float: left; + float: left; + color: #333333; } - .migrationSelect { - margin-right: 7px; - } + .increaseVmsInPoolVms, .maxAssignedVmsPerUserVms { + float: left; + } - .generalTabExtendedRightWidgetWidth { - width: 250px !important; + .migrationSelect { + margin-right: 7px; + } + + .generalTabExtendedRightWidgetWidth { + width: 250px !important; } .headerPanel { - padding-bottom: 6px; - } + padding-bottom: 6px; + } .refreshButton { float: right; @@ -270,14 +268,14 @@ } .cdImageEditor { - width: 197px; + width: 197px; } .isVirtioScsiEnabledEditor { width: 100%; } - .monitorPanel { + .monitorPanel { line-height: 30px; padding-bottom: 0; padding-left: 5px; @@ -293,9 +291,9 @@ width: 265px; } - .hostSelector { - width: 416px; - } + .hostSelector { + width: 416px; + } .labelToCouple { line-height: 30px; @@ -306,7 +304,7 @@ .labelToCoupleLabel { color: gray; - font-family: Verdana,sans-serif; + font-family: Verdana, sans-serif; font-size: 13px; line-height: 30px; padding: 0 5px; @@ -341,14 +339,18 @@ padding-left: 5px; } - .migrationSelectorInner { - width: 260px; - } + .migrationSelectorInner { + width: 260px; + } .headerCol { float: left; } - </ui:style> + + .floatLeft { + float: left; + } + </ui:style> <t:DialogTabPanel width="100%" height="100%" ui:field="mainTabPanel"> <t:header> @@ -449,8 +451,8 @@ <g:FlowPanel addStyleNames="{style.sectionPanel}"> <d:AdvancedParametersExpander ui:field="vcpusAdvancedParameterExpander"/> <g:FlowPanel ui:field="vcpusAdvancedParameterExpanderContent" addStyleNames="{style.generalExpanderContent}"> - <e:ListModelListBoxEditor ui:field="corePerSocketEditor" /> - <e:ListModelListBoxEditor ui:field="numOfSocketsEditor" /> + <ge:EntityModelDetachableWidgetWithLabel ui:field="corePerSocketEditorWithDetachable" /> + <ge:EntityModelDetachableWidgetWithLabel ui:field="numOfSocketsEditorWithDetachable" /> </g:FlowPanel> </g:FlowPanel> <g:Label ui:field="generalLabel" addStyleNames="{style.sectionLabel}" text="{constants.initialRunGeneral}" /> @@ -496,9 +498,14 @@ </g:HorizontalPanel> </g:FlowPanel> </g:FlowPanel> - <ge:EntityModelCheckBoxEditor ui:field="isSmartcardEnabledEditor" addStyleNames="{style.checkbox}" /> + <ge:EntityModelDetachableWidget ui:field="isSmartcardEnabledEditorWithDetachable" addStyleNames="{style.checkbox}, {style.floatLeft}" /> <g:Label ui:field="nativeUsbWarningMessage" text="{constants.nativeUsbSupportWarning}" addStyleNames="{style.warningMessageLabel}" /> - <g:Label ui:field="ssoMethodLabel" text="{constants.ssoMethod}" addStyleNames="{style.sectionLabel}" /> + <ge:DetachableLabel ui:field="ssoMethodLabel" contentWidgetStyleName="{style.sectionLabel}"> + <ge:decorated> + <g:Label text="{constants.ssoMethod}" /> + </ge:decorated> + </ge:DetachableLabel> + <g:FlowPanel> <ge:EntityModelRadioButtonEditor ui:field="ssoMethodNone"/> <ge:EntityModelRadioButtonEditor ui:field="ssoMethodGuestAgent"/> @@ -508,8 +515,11 @@ <g:Label addStyleNames="{style.warningLabel}" text="{constants.advancedOptionsLabel}" /> <ge:EntityModelCheckBoxEditor ui:field="allowConsoleReconnectEditor" addStyleNames="{style.checkboxWithLongLabel}" /> </g:FlowPanel> - <ge:EntityModelCheckBoxEditor ui:field="isSoundcardEnabledEditor" addStyleNames="{style.checkbox}" /> - <ge:EntityModelCheckBoxEditor ui:field="isConsoleDeviceEnabledEditor" addStyleNames="{style.checkbox}" /> + + <g:FlowPanel> + <ge:EntityModelDetachableWidget ui:field="isSoundcardEnabledEditorWithDetachable" /> + <ge:EntityModelDetachableWidget ui:field="isConsoleDeviceEnabledEditorWithDetachable" /> + </g:FlowPanel> <w:EntityModelWidgetWithInfo ui:field="spiceProxyEnabledCheckboxWithInfoIcon" /> <ge:StringEntityModelTextBoxEditor ui:field="spiceProxyEditor"/> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java index 50d6585..180ba81 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java @@ -49,6 +49,12 @@ return super.createWidgetConfiguration(). putAll(poolSpecificFields(), hiddenField()). putOne(totalvCPUsEditorWithInfoIcon, simpleField().detachable().visibleInAdvancedModeOnly()). + putOne(numOfSocketsEditorWithDetachable, simpleField().detachable().visibleInAdvancedModeOnly()). + putOne(corePerSocketEditorWithDetachable, simpleField().detachable().visibleInAdvancedModeOnly()). + putOne(isSmartcardEnabledEditorWithDetachable, simpleField().detachable().visibleInAdvancedModeOnly()). + putOne(isConsoleDeviceEnabledEditorWithDetachable, simpleField().detachable().visibleInAdvancedModeOnly()). + putOne(isSoundcardEnabledEditorWithDetachable, simpleField().detachable().visibleInAdvancedModeOnly()). + putOne(ssoMethodLabel, simpleField().detachable().visibleInAdvancedModeOnly()). putOne(detachableMemSizeEditor, simpleField().detachable().visibleInAdvancedModeOnly()); } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmInstanceTypeManager.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmInstanceTypeManager.java index e8a9f3e..2316792 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmInstanceTypeManager.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmInstanceTypeManager.java @@ -19,13 +19,14 @@ super.postInit(); deactivate(); + // will be activated inside the callback doUpdateInstanceTypeFieldsFrom(vm.getStaticData()); - activate(); + } @Override - protected void doUpdateInstanceTypeFieldsFrom(VmBase template) { - super.doUpdateInstanceTypeFieldsFrom(template); + protected void doUpdateInstanceTypeFieldsFrom(VmBase vmBase) { + super.doUpdateInstanceTypeFieldsFrom(vmBase); updateNetworkInterfaces(networkBehavior, null); } 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 0f21991..15cb31b 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 @@ -176,7 +176,7 @@ getModel().setBootSequence(vm.getDefaultBootSequence()); getModel().getIsHighlyAvailable().setEntity(vm.isAutoStartup()); - getModel().getTotalCPUCores().setEntity(Integer.toString(vm.getNumOfCpus())); + getModel().getTotalCPUCores().setIsChangable(!vm.isRunning()); getModel().getIsStateless().setEntity(vm.isStateless()); @@ -190,7 +190,6 @@ getModel().getIsDeleteProtected().setEntity(vm.isDeleteProtected()); getModel().selectSsoMethod(vm.getSsoMethod()); - getModel().getNumOfSockets().setSelectedItem(vm.getNumOfSockets()); getModel().getNumOfSockets().setIsChangable(isHotSetCpuSupported() || !vm.isRunning()); getModel().getCoresPerSocket().setIsChangable(!vm.isRunning()); @@ -221,8 +220,6 @@ } } })); - - updateConsoleDevice(getVm().getId()); updateVirtioScsiEnabled(getVm().getId(), getVm().getVmOsId()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/InstanceTypeManager.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/InstanceTypeManager.java index dd9f293..de4ad7a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/InstanceTypeManager.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/InstanceTypeManager.java @@ -6,6 +6,7 @@ import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VnicProfileView; import org.ovirt.engine.core.common.queries.ConfigurationValues; +import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -15,9 +16,11 @@ import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.IEventListener; +import org.ovirt.engine.ui.uicompat.UIConstants; import java.util.ArrayList; import java.util.List; @@ -25,6 +28,8 @@ public abstract class InstanceTypeManager implements IEventListener { private final UnitVmModel model; + + private final UIConstants constants = ConstantsManager.getInstance().getConstants(); // needs explicit activation after the whole model is fully populated private boolean active = true; @@ -98,10 +103,6 @@ public void deactivate() { active = false; - } - - private void registerFieldsAttachedToInstanceType() { - model.getMemSize().getEntityChangedEvent().addListener(this); } @Override @@ -182,16 +183,53 @@ return; } + // will be activated inside the callback deactivate(); model.startProgress(null); - doUpdateInstanceTypeFieldsFrom(template); - - activate(); } } - protected void doUpdateInstanceTypeFieldsFrom(VmBase template) { - model.getMemSize().setEntity(template.getMemSizeMb()); + /** + * All the fields which are hard bound to the instance type (e.g. if changed, the + * VM gets detouched from the instance type + */ + private void registerFieldsAttachedToInstanceType() { + model.getMemSize().getEntityChangedEvent().addListener(this); + model.getTotalCPUCores().getEntityChangedEvent().addListener(this); + model.getNumOfSockets().getSelectedItemChangedEvent().addListener(this); + model.getCoresPerSocket().getSelectedItemChangedEvent().addListener(this); + model.getSsoMethodGuestAgent().getEntityChangedEvent().addListener(this); + model.getSsoMethodNone().getEntityChangedEvent().addListener(this); + model.getIsSmartcardEnabled().getEntityChangedEvent().addListener(this); + model.getIsSoundcardEnabled().getEntityChangedEvent().addListener(this); + model.getIsConsoleDeviceEnabled().getEntityChangedEvent().addListener(this); + } + + protected void doUpdateInstanceTypeFieldsFrom(final VmBase vmBase) { + model.getMemSize().setEntity(vmBase.getMemSizeMb()); + model.getTotalCPUCores().setEntity(Integer.toString(vmBase.getNumOfCpus())); + model.getNumOfSockets().setSelectedItem(vmBase.getNumOfSockets()); + model.getCoresPerSocket().setSelectedItem(vmBase.getCpuPerSocket()); + model.selectSsoMethod(vmBase.getSsoMethod()); + model.getIsSmartcardEnabled().setEntity(vmBase.isSmartcardEnabled()); + + AsyncDataProvider.isSoundcardEnabled(new AsyncQuery(model, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + getModel().getIsSoundcardEnabled().setEntity((Boolean) returnValue); + + Frontend.getInstance().runQuery(VdcQueryType.GetConsoleDevices, new IdQueryParameters(vmBase.getId()), new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object returnValue) { + List<String> consoleDevices = ((VdcQueryReturnValue)returnValue).getReturnValue(); + getModel().getIsConsoleDeviceEnabled().setEntity(!consoleDevices.isEmpty()); + activate(); + getModel().stopProgress(); + } + })); + + } + }), vmBase.getId()); } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInstanceTypeManager.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInstanceTypeManager.java index 4135377..ab6ca58 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInstanceTypeManager.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInstanceTypeManager.java @@ -35,10 +35,10 @@ } @Override - protected void doUpdateInstanceTypeFieldsFrom(VmBase template) { - super.doUpdateInstanceTypeFieldsFrom(template); + protected void doUpdateInstanceTypeFieldsFrom(VmBase vmBase) { + super.doUpdateInstanceTypeFieldsFrom(vmBase); - updateNetworkInterfacesByTemplate(template); + updateNetworkInterfacesByTemplate(vmBase); } public void updateNetworkInterfacesByTemplate(VmBase template) { 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 708d6ce..bf15ba0 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 @@ -94,8 +94,8 @@ } else { setSelectedOSById(template.getOsId()); } - getModel().getTotalCPUCores().setEntity(Integer.toString(template.getNumOfCpus())); - getModel().getNumOfSockets().setSelectedItem(template.getNumOfSockets()); + + getModel().getNumOfMonitors().setSelectedItem(template.getNumOfMonitors()); getModel().getIsSingleQxlEnabled().setEntity(template.getSingleQxlPci()); getModel().setBootSequence(template.getDefaultBootSequence()); @@ -105,7 +105,6 @@ doChangeDefautlHost(template.getDedicatedVmForVds()); getModel().getIsDeleteProtected().setEntity(template.isDeleteProtected()); - getModel().selectSsoMethod(template.getSsoMethod()); getModel().setSelectedMigrationDowntime(template.getMigrationDowntime()); getModel().getIsStateless().setEntity(template.isStateless()); @@ -118,7 +117,6 @@ getModel().getCdImage().setSelectedItem(template.getIsoPath()); } - updateConsoleDevice(template.getId()); updateVirtioScsiEnabled(template.getId(), template.getOsId()); updateTimeZone(template.getTimeZone()); @@ -145,7 +143,6 @@ getModel().getDisplayProtocol().setSelectedItem(displayProtocol); getModel().getUsbPolicy().setSelectedItem(template.getUsbPolicy()); getModel().getVncKeyboardLayout().setSelectedItem(template.getVncKeyboardLayout()); - getModel().getIsSmartcardEnabled().setEntity(template.isSmartcardEnabled()); // By default, take kernel params from template. getModel().getKernel_path().setEntity(template.getKernelUrl()); @@ -162,7 +159,6 @@ getModel().getCopyPermissions().setIsAvailable(true); getModel().getAllowConsoleReconnect().setEntity(template.isAllowConsoleReconnect()); initDisks(); - initSoundCard(template.getId()); } else { 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 9d5eb66..55c1d8c 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 @@ -127,7 +127,6 @@ } updateTimeZone(vmBase.getTimeZone()); - updateConsoleDevice(vmBase.getId()); updateVirtioScsiEnabled(vmBase.getId(), vmBase.getOsId()); // Update domain list diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java index 35e5ffa..505118f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java @@ -50,8 +50,6 @@ private final UIConstants constants = ConstantsManager.getInstance().getConstants(); - private InstanceTypeManager instanceTypeManager; - private TModel privateModel; private HashMap<Guid, List<VmTemplate>> baseTemplateToSubTemplates = new HashMap<Guid, List<VmTemplate>>(); -- To view, visit http://gerrit.ovirt.org/24957 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I96f95d2d520d82423d718381cc08f1a9eceab703 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
