Martin Betak has uploaded a new change for review.

Change subject: frontend: Split AbstractVmPopupWidget into separate tabs
......................................................................

frontend: Split AbstractVmPopupWidget into separate tabs

Change-Id: I72fc8a92c964d3b4acd840190ac727a3ada0c500
Signed-off-by: Martin Betak <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractModeSwitchingPopupWidget.java
D 
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/pool/PoolNewPopupWidget.java
R 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmPopupWidget.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmPopupWidget.ui.xml
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmTabContent.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ConsoleVmTabContent.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ConsoleVmTabContent.ui.xml
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/GeneralVmTabContent.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/GeneralVmTabContent.ui.xml
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SystemVmTabContent.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SystemVmTabContent.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java
13 files changed, 1,564 insertions(+), 1,201 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/31093/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractModeSwitchingPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractModeSwitchingPopupWidget.java
index a552b0d..193e2f8 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractModeSwitchingPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractModeSwitchingPopupWidget.java
@@ -79,7 +79,7 @@
         this.model = model;
     }
 
-    class ModeSwitchingVisibilityRenderer implements VisibilityRenderer {
+    public class ModeSwitchingVisibilityRenderer implements VisibilityRenderer 
{
 
         @Override
         public boolean render(Widget source, boolean desiredVisibility) {
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
deleted file mode 100644
index 3149e91..0000000
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
+++ /dev/null
@@ -1,738 +0,0 @@
-<?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"
-             xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"
-             xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
-             xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
-             
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
-             xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab"
-             
xmlns:s="urn:import:org.ovirt.engine.ui.common.widget.uicommon.storage"
-             
xmlns:k="urn:import:org.ovirt.engine.ui.common.widget.form.key_value"
-             xmlns:p="urn:import:org.ovirt.engine.ui.common.widget.profile"
-             
xmlns:vm="urn:import:org.ovirt.engine.ui.common.widget.uicommon.popup.vm">
-
-    <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
-    <ui:with field='constants' 
type='org.ovirt.engine.ui.common.CommonApplicationConstants'/>
-
-    <ui:style 
type="org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractVmPopupWidget.Style">
-
-      .sectionPanel {
-        margin-bottom: 20px;
-      }
-
-      .sectionPanelTight {
-        margin-bottom: 6px;
-        float: left;
-        width: 100%;
-      }
-
-      .sectionLabel {
-        font-weight: bold;
-        margin-top: 10px;
-        margin-bottom: 5px;
-      }
-
-      .sectionComment {
-        margin-top: 10px;
-        margin-left: 5px;
-        font-style: italic;
-      }
-
-      .horizontallyAlignedCheckBox {
-        float: left;
-        padding-right: 15px;
-      }
-
-      .horizontallyAlignedCheckBoxContent {
-      }
-
-      .migrationDowntimePanel {
-        padding-left: 1px;
-        line-height: 30px;
-      }
-
-      .overrideMigrationDowntime {
-        display: inline;
-        float: left;
-        width: 50px;
-      }
-
-      .overrideMigrationDowntime div {
-        width: 20px;
-        margin-top: 0;
-      }
-
-      .overrideMigrationDowntime>div {
-          width: 50px;
-      }
-
-      .migrationDowntimeLabel {
-        display: inline-block;
-        float: left;
-        max-width: 184px;
-      }
-
-      .migrationDowntimeInfoIcon {
-        display: inline;
-        float: left;
-      }
-
-      .migrationDowntime {
-        display: inline;
-        float: right;
-        padding-right: 9px;
-      }
-      <!--                     turns off the original styles -->
-
-        .checkbox {
-            margin-left: -9px;
-        }
-
-        .checkboxWithLongLabel {
-            width: 400px;
-            float: left;
-            clear: both;
-        }
-
-        .checkboxWithLongLabel label {
-            margin-left: 26px;
-            margin-top: -18px;
-            display: block;
-            line-height: 20px;
-            width: 400px;
-            float: left;
-        }
-
-        .longCheckboxContent {
-            width: 90%;
-        }
-
-        .provisioningEditor {
-            padding-right: 25px;
-        }
-
-        .provisioningEditorContent {
-            display: none;
-        }
-
-        .provisioningRadioContent {
-            padding-top: 3px;
-            width: 100%;
-        }
-
-        .disksPanel {
-            width: 490px;
-            margin: 10px 0;
-            display: inline-table;
-        }
-
-        .textBox {
-            width: 30px;
-            float: right;
-        }
-
-        .numOfVmsLabel {
-            margin-left: 5px;
-            color: #333333;
-        }
-
-        .assignedVmsLabel {
-            margin-left: 8px;
-        }
-
-        .prestartedHintLabel {
-            font-size: 7pt;
-            color: gray;
-            text-align: right;
-        }
-
-        .radioButton {
-
-        }
-
-        .radioButtonSpecificHost {
-            margin-left: 5px;
-        }
-
-        .label {
-            width: 350px;
-        }
-
-        .labelDisabled {
-            color: gray;
-        }
-
-        .runHostPanel {
-
-        }
-
-        .attachCdPanel {
-            width: 100%;
-        }
-
-        .cdAttachedLabelWidth {
-            width: 30px;
-        }
-
-        .hostRunMigrationOptions {
-            margin-left: 6px;
-        }
-
-        .warningMessageLabel {
-            color: #CD2127;
-            position: absolute;
-            bottom: 10px;
-        }
-
-        .cpuPinningStyle {
-            float: left;
-        }
-
-        .expanderContent,.generalExpanderContent {
-            padding-left: 10px;
-        }
-
-        .monitorsStyles {
-            width: 40px;
-            padding-left: 5px;
-        }
-
-        .monitorsStyles {
-            width: 40px;
-            padding-left: 5px;
-        }
-
-        .expanderContent {
-            float: left;
-        }
-
-        .warningLabel {
-            color: red;
-            font-weight: bold;
-            margin-bottom: 10px;
-        }
-
-        .poolEditVms, .name {
-            line-height: 30px;
-            padding: 0 5px;
-            padding-bottom: 35px;
-        }
-
-        .prestartedVmsEditorContent, .nameEditorContent, 
.maxAssignedVmsPerUserEditorContent {
-            width: 230px;
-        }
-
-        .prestartedVmsEditor, .nameEditor, .maxAssignedVmsPerUserEditor {
-            float: right;
-            width: 230px;
-        }
-
-        .editPrestartedVmsEditor, .editMaxAssignedVmsPerUserEditor {
-            float: left;
-            padding-right: 10px;
-        }
-
-        .infoIcon, .prestartedVmsIcon, .poolNameIcon, 
.maxAssignedVmsPerUserIcon {
-            float: left;
-            padding-top: 5px;
-            padding-left: 2px;
-        }
-
-        .prestartedLabelWithHelp, .increasePrestartedLabel, 
.maxAssignedVmsPerUserLabel {
-            float: left;
-        }
-
-        .editPrestartedVms, .editIncreaseVms, .editMaxAssignedVmsPerUser {
-            float: right;
-            /* width: 250px; pfly_fix */
-            width: 220px;
-        }
-
-        .prestartedLabel, .nameLabel {
-            float: left;
-            color: #333333;
-        }
-
-        .increaseVmsInPoolVms, .maxAssignedVmsPerUserVms {
-            float: left;
-        }
-
-        .migrationSelect {
-            margin-right: 7px;
-        }
-
-        .generalTabExtendedRightWidgetWidth {
-            /*  pfly_fix hack
-            width: 250px !important;
-            */
-        }
-
-        .generalTabExtendedRightWidgetWrapperWidth {
-            width: 280px !important;
-         }
-
-        .headerPanel {
-            padding-bottom: 6px;
-        }
-
-        .refreshButton {
-            float: right;
-            font-size: 12px;
-            height: 14px;
-            line-height: 14px;
-            width: 12px;
-            margin-right: 5px;
-            padding: 2px;
-            background: transparent;
-            border: 1px solid transparent;
-        }
-
-        .cdImageEditor {
-            width: 197px;
-        }
-
-        .isVirtioScsiEnabledEditor {
-            width: 100%;
-        }
-
-        .monitorPanel {
-            line-height: 30px;
-            padding-bottom: 0;
-            padding-left: 5px;
-            padding-right: 5px;
-            padding-top: 0;
-            width: 230px;
-            height: 30px;
-        }
-
-        .monitorsLabel {
-            float: left;
-            color: #333333;
-            width: 265px;
-        }
-
-        .hostSelector {
-            width: 416px;
-        }
-
-        .labelToCouple {
-            line-height: 30px;
-            text-align: left;
-            float: left;
-            width: 100%;
-        }
-
-        .labelToCoupleLabel {
-            color: gray;
-            font-family: Verdana, sans-serif;
-            font-size: 13px;
-            line-height: 30px;
-            padding: 0 5px;
-            float: left;
-        }
-
-        .labelToCoupleCouple {
-            float: right;
-            line-height: 30px;
-            padding: 0 5px;
-            width: 230px;
-        }
-
-        .labelToCoupleCoupleLeft {
-            float: left;
-        }
-
-        .labelToCoupleCoupleRight {
-            float: left;
-        }
-
-        .cpuSahresValueListBox, .cpuSahresValueTextBox {
-            width: 110px;
-        }
-
-        .cpuPinningTextBox {
-            width: 197px;
-            padding-left: 5px;
-        }
-
-        .cpuSahresValueTextBox {
-            padding-left: 5px;
-        }
-
-        .migrationSelectorInner {
-            width: 260px;
-        }
-
-        .headerCol {
-            float: left;
-        }
-
-        .floatLeft, .detachableCheckBox {
-            float: left;
-        }
-
-
-        .detachableCheckBox {
-            width: 400px;
-        }
-
-        .fullWidth {
-            width: 100%;
-        }
-
-        .detachableStyle {
-            display: inline-block;
-        }
-
-    </ui:style>
-
-    <t:DialogTabPanel width="100%" height="100%" ui:field="mainTabPanel">
-        <t:header>
-            <g:FlowPanel addStyleNames="{style.headerPanel}">
-                <e:ListModelTypeAheadListBoxEditor 
ui:field="dataCenterWithClusterEditor" />
-                <e:ListModelTypeAheadListBoxEditor ui:field="quotaEditor" />
-                <e:ListModelTypeAheadListBoxEditor 
ui:field="baseTemplateEditor"/>
-                <e:ListModelTypeAheadListBoxEditor ui:field="templateEditor" />
-                <e:ListModelListBoxEditor ui:field="oSTypeEditor" />
-                <e:ListModelTypeAheadListBoxEditor 
ui:field="instanceTypesEditor" />
-                <e:ListModelListBoxEditor ui:field="vmTypeEditor" />
-            </g:FlowPanel>
-        </t:header>
-        <t:tab>
-            <t:DialogTab ui:field="generalTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
-                            <g:FlowPanel addStyleNames="{style.name} 
avmpw_name_pfly_fix">
-                                <g:FlowPanel 
addStyleNames="{style.prestartedLabelWithHelp}">
-                                    <g:Label ui:field="nameLabel" 
addStyleNames="{style.nameLabel}" />
-                                    <d:InfoIcon ui:field="poolNameIcon" 
addStyleNames="{style.poolNameIcon} avmpw_infoIcon_pfly_fix" />
-                                </g:FlowPanel>
-                                <ge:EntityModelTextBoxOnlyEditor 
ui:field="nameEditor" addStyleNames="{style.nameEditor} 
avmpw_nameEditor_pfly_fix" contentWidgetStyleName="{style.nameEditorContent}"/>
-                            </g:FlowPanel>
-                            <ge:StringEntityModelTextBoxEditor 
ui:field="templateVersionNameEditor" />
-                            <ge:StringEntityModelTextBoxEditor 
ui:field="descriptionEditor" />
-                            <ge:StringEntityModelTextBoxEditor 
ui:field="commentEditor" />
-
-                            <!-- New VM Pool -->
-                            <ge:EntityModelTextBoxEditor 
ui:field="numOfVmsEditor" />
-                            <g:FlowPanel ui:field="newPoolEditVmsPanel" 
addStyleNames="{style.poolEditVms} avmpw_poolEditVms_pfly_fix">
-                                <g:FlowPanel 
addStyleNames="{style.prestartedLabelWithHelp}">
-                                    <g:Label ui:field="prestartedLabel" 
addStyleNames="{style.prestartedLabel}" />
-                                    <d:InfoIcon 
ui:field="newPoolPrestartedVmsIcon" addStyleNames="{style.prestartedVmsIcon} 
avmpw_infoIcon_pfly_fix" />
-                                </g:FlowPanel>
-                                <ge:IntegerEntityModelTextBoxOnlyEditor 
ui:field="prestartedVmsEditor" addStyleNames="{style.prestartedVmsEditor}" 
contentWidgetStyleName="{style.prestartedVmsEditorContent} 
avmpw_prestartedVmsEditorContent_pfly_fix" />
-                            </g:FlowPanel>
-
-                            <g:FlowPanel 
ui:field="newPoolEditMaxAssignedVmsPerUserPanel" 
addStyleNames="{style.poolEditVms} avmpw_poolEditVms_pfly_fix">
-                                <g:FlowPanel 
addStyleNames="{style.maxAssignedVmsPerUserLabel}">
-                                    <g:Label 
text="{constants.maxAssignedVmsPerUser}" 
addStyleNames="{style.maxAssignedVmsPerUserLabel}" />
-                                    <d:InfoIcon 
ui:field="newPoolMaxAssignedVmsPerUserIcon" 
addStyleNames="{style.maxAssignedVmsPerUserIcon} avmpw_infoIcon_pfly_fix" />
-                                </g:FlowPanel>
-                                <ge:EntityModelTextBoxOnlyEditor 
ui:field="maxAssignedVmsPerUserEditor" 
addStyleNames="{style.maxAssignedVmsPerUserEditor}" 
contentWidgetStyleName="{style.maxAssignedVmsPerUserEditorContent} 
avmpw_maxAssignedVmsPerUserEditorContent_pfly_fix" />
-                            </g:FlowPanel>
-
-                            <!-- Edit VM Pool -->
-                            <g:FlowPanel addStyleNames="{style.poolEditVms} 
avmpw_poolEditVms_pfly_fix" ui:field="editPoolEditVmsPanel">
-                                <g:FlowPanel 
addStyleNames="{style.prestartedLabelWithHelp}">
-                                    <g:Label ui:field="editPrestartedVmsLabel" 
addStyleNames="{style.prestartedLabel}" />
-                                    <d:InfoIcon 
ui:field="editPoolPrestartedVmsIcon" addStyleNames="{style.prestartedVmsIcon} 
avmpw_infoIcon_pfly_fix" />
-                                </g:FlowPanel>
-                                <g:FlowPanel ui:field="editPrestartedVmsPanel" 
addStyleNames="{style.editPrestartedVms}" >
-                                    <ge:IntegerEntityModelTextBoxOnlyEditor 
ui:field="editPrestartedVmsEditor" 
addStyleNames="{style.editPrestartedVmsEditor}" 
contentWidgetStyleName="{style.textBox}" />
-                                    <g:ValueLabel ui:field="outOfxInPool" />
-                                </g:FlowPanel>
-                            </g:FlowPanel>
-
-                            <g:FlowPanel 
ui:field="editPoolIncraseNumOfVmsPanel" addStyleNames="{style.poolEditVms} 
avmpw_poolEditVms_pfly_fix">
-                                <g:Label 
text="{constants.increaseNumberOfVMsInPoolBy}" 
addStyleNames="{style.increasePrestartedLabel}" />
-                                <g:FlowPanel ui:field="editIncreaseVmsPanel" 
addStyleNames="{style.editIncreaseVms}">
-                                    <ge:EntityModelTextBoxOnlyEditor 
ui:field="incraseNumOfVmsEditor" 
addStyleNames="{style.editPrestartedVmsEditor}" 
contentWidgetStyleName="{style.textBox}" />
-                                    <g:Label text="{constants.vms}" 
addStyleNames="{style.increaseVmsInPoolVms}" />
-                                </g:FlowPanel>
-                            </g:FlowPanel>
-
-                            <g:FlowPanel 
ui:field="editPoolEditMaxAssignedVmsPerUserPanel" 
addStyleNames="{style.poolEditVms} avmpw_poolEditVms_pfly_fix">
-                                <g:FlowPanel 
addStyleNames="{style.maxAssignedVmsPerUserLabel}">
-                                    <g:Label 
text="{constants.maxAssignedVmsPerUser}" 
addStyleNames="{style.maxAssignedVmsPerUserLabel}" />
-                                    <d:InfoIcon 
ui:field="editPoolMaxAssignedVmsPerUserIcon" 
addStyleNames="{style.maxAssignedVmsPerUserIcon} avmpw_infoIcon_pfly_fix" />
-                                </g:FlowPanel>
-                                <g:FlowPanel 
addStyleNames="{style.editMaxAssignedVmsPerUser}">
-                                    <ge:EntityModelTextBoxOnlyEditor 
ui:field="editMaxAssignedVmsPerUserEditor" 
addStyleNames="{style.editMaxAssignedVmsPerUserEditor}" 
contentWidgetStyleName="{style.textBox}" />
-                                    <g:Label text="{constants.vms}" 
addStyleNames="{style.maxAssignedVmsPerUserVms}" />
-                                </g:FlowPanel>
-                            </g:FlowPanel>
-                        </g:FlowPanel>
-                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
-                            <ge:EntityModelCheckBoxEditor 
ui:field="isStatelessEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
-                            <ge:EntityModelCheckBoxEditor 
ui:field="isRunAndPauseEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
-                            <ge:EntityModelCheckBoxEditor 
ui:field="isDeleteProtectedEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
-                            <ge:EntityModelCheckBoxEditor 
ui:field="copyTemplatePermissionsEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
-                        </g:FlowPanel>
-                        <g:FlowPanel ui:field="logicalNetworksEditorPanel" 
addStyleNames="{style.sectionPanel}">
-                            <p:ProfilesInstanceTypeEditor 
ui:field="profilesInstanceTypeEditor" />
-                         </g:FlowPanel>
-                        <g:Label ui:field="generalWarningMessage" 
addStyleNames="{style.warningMessageLabel}" />
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="systemTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <ge:EntityModelDetachableWidgetWithLabel 
ui:field="detachableMemSizeEditor"/>
-                        <w:EntityModelDetachableWidgetWithInfo 
ui:field="totalvCPUsEditorWithInfoIcon" />
-                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
-                            <d:AdvancedParametersExpander 
ui:field="vcpusAdvancedParameterExpander"/>
-                            <g:FlowPanel 
ui:field="vcpusAdvancedParameterExpanderContent" 
addStyleNames="{style.generalExpanderContent}">
-                                <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}" />
-                            <w:EntityModelWidgetWithInfo 
ui:field="timeZoneEditorWithInfo" />
-                            <vm:SerialNumberPolicyWidget 
ui:field="serialNumberPolicyEditor" />
-                        </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="poolTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <e:ListModelListBoxEditor ui:field="poolTypeEditor" />
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-               <t:DialogTab ui:field="initialRunTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <ge:EntityModelCheckBoxEditor 
ui:field="vmInitEnabledEditor"/>
-                        <vm:VmPopupVmInitWidget ui:field="vmInitEditor" />
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="consoleTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <e:ListModelListBoxEditor 
ui:field="displayProtocolEditor" />
-                        <e:ListModelListBoxEditor 
ui:field="vncKeyboardLayoutEditor" />
-                        <e:ListModelListBoxEditor ui:field="usbSupportEditor" 
/>
-                        <g:FlowPanel width="100%">
-                              <g:FlowPanel 
addStyleNames="{style.monitorPanel}">
-                                 <g:HorizontalPanel verticalAlignment="middle">
-                                 <g:Label text="{constants.monitors}" 
ui:field="numOfMonitorsLabel" addStyleNames="{style.monitorsLabel} 
avmpw_monitorsLabel_pfly_fix" />
-                                 <e:ListModelListBoxEditor 
ui:field="numOfMonitorsEditor" addStyleNames="{style.monitorsStyles}" />
-                                   <ge:EntityModelCheckBoxEditor 
ui:field="isSingleQxlEnabledEditor" addStyleNames="{style.checkbox}" />
-                                 </g:HorizontalPanel>
-                              </g:FlowPanel>
-                        </g:FlowPanel>
-                        <ge:EntityModelDetachableWidget 
ui:field="isSmartcardEnabledEditorWithDetachable" 
addStyleNames="{style.floatLeft} avmpw_smartcard_pfly_fix" />
-                        <g:Label ui:field="nativeUsbWarningMessage" 
text="{constants.nativeUsbSupportWarning}" 
addStyleNames="{style.warningMessageLabel}" />
-
-                        <g:Label ui:field="ssoMethodLabel" 
text="{constants.ssoMethod}" addStyleNames="{style.sectionLabel} 
{style.floatLeft} {style.fullWidth}" />
-                        <g:FlowPanel>
-                            <ge:EntityModelRadioButtonEditor 
ui:field="ssoMethodNone"/>
-                            <ge:EntityModelRadioButtonEditor 
ui:field="ssoMethodGuestAgent"/>
-                        </g:FlowPanel>
-                        <d:AdvancedParametersExpander ui:field="expander"/>
-                        <g:FlowPanel ui:field="expanderContent" 
addStyleNames="{style.expanderContent}">
-                            <g:Label addStyleNames="{style.warningLabel}" 
text="{constants.advancedOptionsLabel}" />
-                            <ge:EntityModelCheckBoxEditor 
ui:field="allowConsoleReconnectEditor" 
addStyleNames="{style.checkboxWithLongLabel}" />
-                        </g:FlowPanel>
-
-                        <ge:EntityModelDetachableWidget 
ui:field="isSoundcardEnabledEditorWithDetachable" 
addStyleNames="{style.checkboxWithLongLabel}" />
-                        <ge:EntityModelDetachableWidget 
ui:field="isConsoleDeviceEnabledEditorWithDetachable" 
addStyleNames="{style.checkboxWithLongLabel}" />
-
-                        <w:EntityModelWidgetWithInfo 
ui:field="spiceProxyEnabledCheckboxWithInfoIcon" />
-                        <ge:StringEntityModelTextBoxEditor 
ui:field="spiceProxyEditor" />
-
-                        <ge:EntityModelCheckBoxEditor 
ui:field="spiceFileTransferEnabledEditor" 
addStyleNames="{style.checkboxWithLongLabel}" />
-                        <ge:EntityModelCheckBoxEditor 
ui:field="spiceCopyPasteEnabledEditor" 
addStyleNames="{style.checkboxWithLongLabel}" />
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="hostTab">
-                <t:content>
-                    <g:FlowPanel>
-                    <g:FlowPanel ui:field="startRunningOnPanel">
-                        <d:InfoIcon ui:field="nonEditableWhileVmNotDownInfo" 
addStyleNames="{style.labelToCoupleCoupleLeft} avmpw_infoIcon_pfly_fix"/>
-                        <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.runOnVmPopup}" />
-                        <g:VerticalPanel addStyleNames="{style.runHostPanel}" 
verticalAlignment='ALIGN_MIDDLE'>
-                            <ge:EntityModelRadioButtonEditor 
ui:field="isAutoAssignEditor"
-                                addStyleNames="{style.radioButton}" />
-                            <g:HorizontalPanel 
verticalAlignment='ALIGN_MIDDLE'>
-                                <g:RadioButton ui:field="specificHost" 
addStyleNames="{style.radioButtonSpecificHost}" />
-                                <g:Label ui:field="specificHostLabel" 
text="{constants.specificVmPopup}" 
addStyleNames="avmpw_specificHostLabel_pfly_fix" />
-                                <e:ListModelListBoxEditor 
ui:field="defaultHostEditor" addStyleNames="{style.hostSelector}"/>
-                            </g:HorizontalPanel>
-                        </g:VerticalPanel>
-                    </g:FlowPanel>
-                        <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.runMigrationOptionsVmPopup}" />
-                        <g:VerticalPanel width="100%" 
addStyleNames="{style.hostRunMigrationOptions}">
-                             <ge:EntityModelDetachableWidget 
ui:field="migrationModeEditorWithDetachable" 
addStyleNames="{style.migrationSelect}"/>
-                             <g:FlowPanel 
addStyleNames="{style.migrationDowntimePanel}">
-                               <ge:EntityModelDetachableWidget 
ui:field="overrideMigrationDowntimeEditorWithDetachable" 
addStyleNames="{style.overrideMigrationDowntime} 
avmpw_overrideMigrationDowntime_pfly_fix" />
-                               <g:Label 
text="{constants.overrideMigrationDowntimeLabel}" 
addStyleNames="{style.migrationDowntimeLabel} 
avmpw_migrationDowntimeLabel_pfly_fix" />
-                               <d:InfoIcon 
ui:field="migrationDowntimeInfoIcon" 
addStyleNames="{style.migrationDowntimeInfoIcon} avmpw_infoIcon_pfly_fix" />
-                               <ge:IntegerEntityModelTextBoxOnlyEditor 
ui:field="migrationDowntimeEditor" addStyleNames="{style.migrationDowntime}" />
-                             </g:FlowPanel>
-                             <ge:EntityModelCheckBoxEditor 
ui:field="hostCpuEditor" addStyleNames="{style.checkbox}"/>
-                        </g:VerticalPanel>
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="highAvailabilityTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
-                            <ge:EntityModelDetachableWidget 
ui:field="isHighlyAvailableEditorWithDetachable" 
addStyleNames="{style.checkbox}" />
-                        </g:FlowPanel>
-                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
-                            <ge:DetachableLabel 
ui:field="priorityLabelWithDetachable" 
contentWidgetStyleName="{style.sectionLabel}">
-                                <ge:decorated>
-                                    <g:Label 
text="{constants.priorForRunMigrationQueueVmPopup}" />
-                                </ge:decorated>
-                            </ge:DetachableLabel>
-                            <e:EntityModelCellTable ui:field="priorityEditor" 
addStyleNames="{style.floatLeft}, {style.fullWidth}"/>
-
-                        </g:FlowPanel>
-                        <g:FlowPanel addStyleNames="{style.sectionPanel}, 
{style.floatLeft}" ui:field="watchdogPanel">
-                            <ge:DetachableLabel ui:field="watchdogLabel" 
contentWidgetStyleName="{style.sectionLabel}">
-                                <ge:decorated>
-                                    <g:Label text="{constants.watchdog}" />
-                                </ge:decorated>
-                            </ge:DetachableLabel>
-                            <e:ListModelListBoxEditor 
ui:field="watchdogModelEditor" />
-                            <e:ListModelListBoxEditor 
ui:field="watchdogActionEditor" />
-                        </g:FlowPanel>
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="resourceAllocationTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <g:FlowPanel addStyleNames="{style.sectionPanelTight}" 
ui:field="cpuAllocationPanel" >
-                            <g:Label text="{constants.cpuAllocVmPopup}" 
addStyleNames="{style.sectionLabel}" />
-                            <g:FlowPanel addStyleNames="{style.labelToCouple}">
-                                <g:Label ui:field="cpuSharesEditor" 
text="{constants.cpuShares}" addStyleNames="{style.labelToCoupleLabel}"/>
-                                <g:FlowPanel 
addStyleNames="{style.labelToCoupleCouple}">
-                                    <e:ListModelListBoxOnlyEditor 
ui:field="cpuSharesAmountSelectionEditor" 
addStyleNames="{style.labelToCoupleCoupleLeft}" 
contentWidgetStyleName="{style.cpuSahresValueListBox}" />
-                                    <ge:IntegerEntityModelTextBoxOnlyEditor 
ui:field="cpuSharesAmountEditor" 
addStyleNames="{style.labelToCoupleCoupleRight}" 
contentWidgetStyleName="{style.cpuSahresValueTextBox} 
avmpw_cpuSahresValueTextBox_pfly_fix" />
-                                </g:FlowPanel>
-                            </g:FlowPanel>
-
-                            <g:FlowPanel addStyleNames="{style.labelToCouple}">
-                                <g:Label text="{constants.cpuPinningLabel}" 
addStyleNames="{style.labelToCoupleLabel}"/>
-                                <g:FlowPanel 
addStyleNames="{style.labelToCoupleCouple}">
-                                    <d:InfoIcon ui:field="cpuPinningInfo" 
addStyleNames="{style.labelToCoupleCoupleLeft} avmpw_infoIcon_pfly_fix"/>
-                                    <ge:StringEntityModelTextBoxOnlyEditor 
ui:field="cpuPinning" addStyleNames="{style.labelToCoupleCoupleRight}" 
contentWidgetStyleName="{style.cpuPinningTextBox} 
avmpw_cpuPinningTextBox_pfly_fix"/>
-                                </g:FlowPanel>
-                            </g:FlowPanel>
-
-                        </g:FlowPanel>
-                        <g:FlowPanel addStyleNames="{style.sectionPanelTight}">
-                            <ge:DetachableLabel ui:field="memAllocationLabel" 
contentWidgetStyleName="{style.sectionLabel}">
-                                <ge:decorated>
-                                    <g:Label 
text="{constants.memAllocVmPopup}" />
-                                </ge:decorated>
-                            </ge:DetachableLabel>
-
-                            <ge:EntityModelTextBoxEditor 
ui:field="minAllocatedMemoryEditor" />
-                            <ge:EntityModelCheckBoxEditor 
addStyleNames="{style.checkbox}" ui:field="isMemoryBalloonDeviceEnabled"/>
-                        </g:FlowPanel>
-                        <g:FlowPanel ui:field="storageAllocationPanel" 
addStyleNames="{style.sectionPanelTight}">
-                            <g:HorizontalPanel>
-                                <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.storageAllocVmPopup}" />
-                                <g:Label 
addStyleNames="{style.sectionComment}" 
text="{constants.availOnlyTemplSelectedVmPopup}" />
-                            </g:HorizontalPanel>
-                            <g:HorizontalPanel 
ui:field="provisionSelectionPanel">
-                                <e:ListModelListBoxEditor 
ui:field="provisioningEditor" addStyleNames="{style.provisioningEditor}" />
-                                <g:VerticalPanel>
-                                    <ge:EntityModelRadioButtonEditor 
ui:field="provisioningThinEditor"/>
-                                    <ge:EntityModelRadioButtonEditor 
ui:field="provisioningCloneEditor"/>
-                                </g:VerticalPanel>
-                            </g:HorizontalPanel>
-                        </g:FlowPanel>
-                        <g:FlowPanel ui:field="disksAllocationPanel" 
addStyleNames="{style.sectionPanelTight}">
-                            <g:HorizontalPanel>
-                                <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.disksAllocation}" />
-                            </g:HorizontalPanel>
-                            <g:HorizontalPanel 
addStyleNames="{style.floatLeft}">
-                                <ge:EntityModelDetachableWidget 
ui:field="isVirtioScsiEnabledWithDetachable" addStyleNames="{style.checkbox}" />
-                                <d:InfoIcon 
ui:field="isVirtioScsiEnabledInfoIcon" addStyleNames="{style.infoIcon}" 
visible="false"/>
-                            </g:HorizontalPanel>
-                            <g:FlowPanel ui:field="disksPanel">
-                                <s:DisksAllocationView 
ui:field="disksAllocationView" listHeight="170px" listWidth="490px" 
showVolumeType="true" addStyleNames="{style.disksPanel}" />
-                            </g:FlowPanel>
-                        </g:FlowPanel>
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="bootOptionsTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
-                            <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.bootSequenceVmPopup}" />
-                            <e:ListModelListBoxEditor 
ui:field="firstBootDeviceEditor" />
-                            <e:ListModelListBoxEditor 
ui:field="secondBootDeviceEditor" />
-                            <g:HorizontalPanel 
addStyleNames="{style.attachCdPanel}" verticalAlignment="ALIGN_MIDDLE">
-                                <ge:EntityModelCheckBoxEditor 
label="{constants.attachCdVmPopup}" ui:field="cdAttachedEditor" />
-                                <e:ListModelListBoxEditor 
ui:field="cdImageEditor" addStyleNames="avmpw_cdImageEditor_pfly_fix" />
-                                <g:PushButton ui:field="refreshButton" 
addStyleNames="{style.refreshButton} avmpw_refreshButton_pfly_fix">
-                                    <g:upFace 
image='{resources.refreshButtonImage}' />
-                                </g:PushButton>
-                            </g:HorizontalPanel>
-                            <ge:EntityModelCheckBoxEditor 
ui:field="bootMenuEnabledEditor" label="{constants.bootMenuEnabled}" 
addStyleNames="{style.checkbox}" />
-                        </g:FlowPanel>
-                        <g:FlowPanel ui:field="linuxBootOptionsPanel" 
addStyleNames="{style.sectionPanel}" visible="false">
-                            <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.linuxBootOptionsVmPopup}" />
-                            <ge:StringEntityModelTextBoxEditor 
ui:field="kernel_pathEditor" />
-                            <ge:StringEntityModelTextBoxEditor 
ui:field="initrd_pathEditor" />
-                            <ge:StringEntityModelTextBoxEditor 
ui:field="kernel_parametersEditor" />
-                        </g:FlowPanel>
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="rngDeviceTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <w:EntityModelDetachableWidgetWithInfo 
ui:field="isRngEnabledCheckboxWithInfoIcon" addStyleNames="{style.checkbox}" />
-                        <g:FlowPanel ui:field="rngPanel">
-                            <ge:IntegerEntityModelTextBoxEditor 
ui:field="rngPeriodEditor"/>
-                            <ge:IntegerEntityModelTextBoxEditor 
ui:field="rngBytesEditor" />
-                            <g:Label ui:field="rngSourceLabel" 
text="{constants.deviceSource}" addStyleNames="{style.sectionLabel}" />
-                            <ge:EntityModelRadioButtonEditor 
ui:field="rngSourceRandom" />
-                            <ge:EntityModelRadioButtonEditor 
ui:field="rngSourceHwrng" />
-                        </g:FlowPanel>
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-        <t:tab>
-            <t:DialogTab ui:field="customPropertiesTab">
-                <t:content>
-                    <g:FlowPanel>
-                        <k:KeyValueWidget 
ui:field="customPropertiesSheetEditor"/>
-                    </g:FlowPanel>
-                </t:content>
-            </t:DialogTab>
-        </t:tab>
-    </t:DialogTabPanel>
-
-</ui:UiBinder>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/pool/PoolNewPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/pool/PoolNewPopupWidget.java
index 5c42755..1a080d0 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/pool/PoolNewPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/pool/PoolNewPopupWidget.java
@@ -12,7 +12,7 @@
 import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelTextBoxOnlyEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.ToStringEntityModelRenderer;
-import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractVmPopupWidget;
+import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.AbstractVmPopupWidget;
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfigMap;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
 import org.ovirt.engine.ui.uicompat.Event;
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/vm/AbstractVmPopupWidget.java
similarity index 78%
rename from 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
rename to 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmPopupWidget.java
index 99bbd19..e2c13fa 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/vm/AbstractVmPopupWidget.java
@@ -1,5 +1,5 @@
 
-package org.ovirt.engine.ui.common.widget.uicommon.popup;
+package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
 
 import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.simpleField;
 
@@ -51,10 +51,8 @@
 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;
-import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelDetachableWidgetWithLabel;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelRadioButtonEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelTextBoxEditor;
-import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelTextBoxOnlyEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxOnlyEditor;
 import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelLabel;
@@ -62,15 +60,11 @@
 import 
org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxOnlyEditor;
 import org.ovirt.engine.ui.common.widget.form.key_value.KeyValueWidget;
 import org.ovirt.engine.ui.common.widget.parser.MemorySizeParser;
-import org.ovirt.engine.ui.common.widget.profile.ProfilesInstanceTypeEditor;
 import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer;
 import org.ovirt.engine.ui.common.widget.renderer.MemorySizeRenderer;
 import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
-import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig;
-import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfigMap;
-import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.SerialNumberPolicyWidget;
-import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmPopupVmInitWidget;
+import 
org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModeSwitchingPopupWidget;
 import org.ovirt.engine.ui.common.widget.uicommon.storage.DisksAllocationView;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
@@ -108,7 +102,6 @@
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.Panel;
 import com.google.gwt.user.client.ui.RadioButton;
-import com.google.gwt.user.client.ui.ValueLabel;
 import com.google.gwt.user.client.ui.Widget;
 
 public abstract class AbstractVmPopupWidget extends 
AbstractModeSwitchingPopupWidget<UnitVmModel> {
@@ -154,6 +147,9 @@
     protected DialogTab generalTab;
 
     @UiField(provided = true)
+    GeneralVmTabContent generalTabContent;
+
+    @UiField(provided = true)
     @Path(value = "dataCenterWithClustersList.selectedItem")
     @WithElementId("dataCenterWithCluster")
     public ListModelTypeAheadListBoxEditor<DataCenterWithCluster> 
dataCenterWithClusterEditor;
@@ -163,33 +159,7 @@
     @WithElementId("quota")
     public ListModelTypeAheadListBoxEditor<Quota> quotaEditor;
 
-    @UiField
-    @Ignore
-    public Label nameLabel;
 
-    @UiField(provided = true)
-    @Path(value = "name.entity")
-    @WithElementId("name")
-    public StringEntityModelTextBoxOnlyEditor nameEditor;
-
-    @UiField(provided = true)
-    @Path(value = "templateVersionName.entity")
-    @WithElementId("templateVersionName")
-    public StringEntityModelTextBoxEditor templateVersionNameEditor;
-
-    @UiField(provided = true)
-    @Ignore
-    public InfoIcon poolNameIcon;
-
-    @UiField(provided = true)
-    @Path(value = "description.entity")
-    @WithElementId("description")
-    public StringEntityModelTextBoxEditor descriptionEditor;
-
-    @UiField
-    @Path(value = "comment.entity")
-    @WithElementId("comment")
-    public StringEntityModelTextBoxEditor commentEditor;
 
     @UiField(provided = true)
     @Path(value = "baseTemplate.selectedItem")
@@ -216,95 +186,12 @@
     @WithElementId("instanceType")
     public ListModelTypeAheadListBoxEditor<InstanceType> instanceTypesEditor;
 
-    @UiField(provided = true)
-    @Path(value = "isDeleteProtected.entity")
-    @WithElementId("isDeleteProtected")
-    public EntityModelCheckBoxEditor isDeleteProtectedEditor;
-
-    @UiField
-    public Panel logicalNetworksEditorPanel;
-
-    @UiField
-    @Ignore
-    @WithElementId("vnicsEditor")
-    public ProfilesInstanceTypeEditor profilesInstanceTypeEditor;
-
-    @UiField
-    @Ignore
-    Label generalWarningMessage;
-
     // == System ==
     @UiField
     protected DialogTab systemTab;
 
     @UiField(provided = true)
-    public EntityModelDetachableWidgetWithLabel detachableMemSizeEditor;
-
-    @Path(value = "memSize.entity")
-    @WithElementId("memSize")
-    public EntityModelTextBoxEditor<Integer> memSizeEditor;
-
-    @Path(value = "totalCPUCores.entity")
-    @WithElementId("totalCPUCores")
-    public StringEntityModelTextBoxOnlyEditor totalvCPUsEditor;
-
-    @UiField(provided = true)
-    @Ignore
-    public EntityModelDetachableWidgetWithInfo<String> 
totalvCPUsEditorWithInfoIcon;
-
-    @UiField
-    @Ignore
-    AdvancedParametersExpander vcpusAdvancedParameterExpander;
-
-    @UiField
-    @Ignore
-    Panel vcpusAdvancedParameterExpanderContent;
-
-    @Path(value = "numOfSockets.selectedItem")
-    @WithElementId("numOfSockets")
-    public ListModelListBoxEditor<Integer> numOfSocketsEditor;
-
-    @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;
-
-    @UiField(provided = true)
-    @Path(value = "ssoMethodNone.entity")
-    @WithElementId("ssoMethodNone")
-    public EntityModelRadioButtonEditor ssoMethodNone;
-
-    @UiField(provided = true)
-    @Path(value = "ssoMethodGuestAgent.entity")
-    @WithElementId("ssoMethodGuestAgent")
-    public EntityModelRadioButtonEditor ssoMethodGuestAgent;
-
-    @Path(value = "isSoundcardEnabled.entity")
-    @WithElementId("isSoundcardEnabled")
-    public EntityModelCheckBoxEditor isSoundcardEnabledEditor;
-
-    @UiField(provided = true)
-    @Ignore
-    public EntityModelDetachableWidget isSoundcardEnabledEditorWithDetachable;
-
-    @UiField(provided = true)
-    @Path("copyPermissions.entity")
-    @WithElementId("copyTemplatePermissions")
-    public EntityModelCheckBoxEditor copyTemplatePermissionsEditor;
-
-    @UiField(provided = true)
-    @Ignore
-    @WithElementId("serialNumberPolicy")
-    public SerialNumberPolicyWidget serialNumberPolicyEditor;
+    SystemVmTabContent systemTabContent;
 
     // == Pools ==
     @UiField
@@ -314,102 +201,6 @@
     @Path(value = "poolType.selectedItem")
     @WithElementId("poolType")
     public ListModelListBoxEditor<EntityModel<VmPoolType>> poolTypeEditor;
-
-    @UiField(provided = true)
-    @Ignore
-    public InfoIcon newPoolPrestartedVmsIcon;
-
-    @UiField(provided = true)
-    @Ignore
-    public InfoIcon editPoolPrestartedVmsIcon;
-
-    @UiField(provided = true)
-    @Ignore
-    public InfoIcon newPoolMaxAssignedVmsPerUserIcon;
-
-    @UiField(provided = true)
-    @Ignore
-    public InfoIcon editPoolMaxAssignedVmsPerUserIcon;
-
-    @UiField(provided = true)
-    @Path(value = "prestartedVms.entity")
-    @WithElementId("prestartedVms")
-    public IntegerEntityModelTextBoxOnlyEditor prestartedVmsEditor;
-
-    @UiField(provided = true)
-    @Path("maxAssignedVmsPerUser.entity")
-    @WithElementId("maxAssignedVmsPerUser")
-    public IntegerEntityModelTextBoxOnlyEditor maxAssignedVmsPerUserEditor;
-
-    @UiField
-    @Ignore
-    public FlowPanel newPoolEditVmsPanel;
-
-    @UiField
-    @Ignore
-    public FlowPanel newPoolEditMaxAssignedVmsPerUserPanel;
-
-    @UiField
-    @Ignore
-    public Label prestartedLabel;
-
-    @UiField(provided = true)
-    @Path("numOfDesktops.entity")
-    @WithElementId("numOfVms")
-    public EntityModelTextBoxEditor<Integer> numOfVmsEditor;
-
-    @UiField
-    @Ignore
-    public FlowPanel editPoolEditVmsPanel;
-
-    @UiField
-    public FlowPanel editIncreaseVmsPanel;
-
-    @UiField
-    @Ignore
-    public FlowPanel editPoolIncraseNumOfVmsPanel;
-
-    @UiField
-    public FlowPanel editPrestartedVmsPanel;
-    @UiField
-    @Ignore
-    public FlowPanel editPoolEditMaxAssignedVmsPerUserPanel;
-
-    @UiField
-    @Ignore
-    public Label editPrestartedVmsLabel;
-
-    @UiField(provided = true)
-    @Path("prestartedVms.entity")
-    @WithElementId("editPrestartedVms")
-    public IntegerEntityModelTextBoxOnlyEditor editPrestartedVmsEditor;
-
-    @UiField(provided = true)
-    @Path("numOfDesktops.entity")
-    @WithElementId("incraseNumOfVms")
-    public EntityModelTextBoxOnlyEditor<Integer> incraseNumOfVmsEditor;
-
-    @UiField(provided = true)
-    @Path("maxAssignedVmsPerUser.entity")
-    @WithElementId("editMaxAssignedVmsPerUser")
-    public IntegerEntityModelTextBoxOnlyEditor editMaxAssignedVmsPerUserEditor;
-
-    @UiField(provided = true)
-    @Path("assignedVms.entity")
-    public ValueLabel<Integer> outOfxInPool;
-
-    @UiField
-    @Ignore
-    // system tab -> general time zone
-    public Label generalLabel;
-
-    @Path(value = "timeZone.selectedItem")
-    @WithElementId("timeZone")
-    public ListModelListBoxOnlyEditor<TimeZoneModel> timeZoneEditor;
-
-    @UiField(provided = true)
-    @Ignore
-    public EntityModelWidgetWithInfo<String> timeZoneEditorWithInfo;
 
     // ==Initial run Tab==
     @UiField
@@ -430,87 +221,7 @@
     protected DialogTab consoleTab;
 
     @UiField(provided = true)
-    @Path(value = "displayProtocol.selectedItem")
-    @WithElementId("displayProtocol")
-    public ListModelListBoxEditor<EntityModel<DisplayType>> 
displayProtocolEditor;
-
-    @UiField(provided = true)
-    @Path(value = "vncKeyboardLayout.selectedItem")
-    @WithElementId("vncKeyboardLayout")
-    public ListModelListBoxEditor<String> vncKeyboardLayoutEditor;
-
-    @UiField(provided = true)
-    @Path(value = "usbPolicy.selectedItem")
-    @WithElementId("usbPolicy")
-    public ListModelListBoxEditor<UsbPolicy> usbSupportEditor;
-
-    @UiField(provided = true)
-    @Path(value = "numOfMonitors.selectedItem")
-    @WithElementId("numOfMonitors")
-    public ListModelListBoxEditor<Integer> numOfMonitorsEditor;
-
-    @UiField
-    @Ignore
-    public Label numOfMonitorsLabel;
-
-    @UiField(provided = true)
-    @Path(value = "isSingleQxlEnabled.entity")
-    @WithElementId("isSingleQxlEnabled")
-    public EntityModelCheckBoxEditor isSingleQxlEnabledEditor;
-
-    @UiField(provided = true)
-    @Path(value = "isStateless.entity")
-    @WithElementId("isStateless")
-    public EntityModelCheckBoxEditor isStatelessEditor;
-
-    @UiField(provided = true)
-    @Path(value = "isRunAndPause.entity")
-    @WithElementId("isRunAndPause")
-    public EntityModelCheckBoxEditor isRunAndPauseEditor;
-
-    @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;
-
-
-    @Path(value = "isConsoleDeviceEnabled.entity")
-    @WithElementId("isConsoleDeviceEnabled")
-    public EntityModelCheckBoxEditor isConsoleDeviceEnabledEditor;
-
-    @UiField(provided = true)
-    @Ignore
-    public EntityModelDetachableWidget 
isConsoleDeviceEnabledEditorWithDetachable;
-
-    @UiField
-    @Path(value = "spiceProxy.entity")
-    @WithElementId
-    public StringEntityModelTextBoxEditor spiceProxyEditor;
-
-    @UiField(provided = true)
-    @Ignore
-    public EntityModelWidgetWithInfo<String> 
spiceProxyEnabledCheckboxWithInfoIcon;
-
-    @Path(value = "spiceProxyEnabled.entity")
-    @WithElementId
-    public EntityModelCheckBoxOnlyEditor spiceProxyOverrideEnabledEditor;
-
-    @UiField(provided = true)
-    @Path("spiceFileTransferEnabled.entity")
-    @WithElementId("spiceFileTransferEnabled")
-    public EntityModelCheckBoxEditor spiceFileTransferEnabledEditor;
-
-    @UiField(provided = true)
-    @Path("spiceCopyPasteEnabled.entity")
-    @WithElementId("spiceCopyPasteEnabled")
-    public EntityModelCheckBoxEditor spiceCopyPasteEnabledEditor;
+    ConsoleVmTabContent consoleTabContent;
 
     // == Rng Tab ==
     @UiField
@@ -778,10 +489,6 @@
     @WithElementId("kernelParameters")
     public StringEntityModelTextBoxEditor kernel_parametersEditor;
 
-    @UiField
-    @Ignore
-    Label nativeUsbWarningMessage;
-
     // ==Custom Properties Tab==
     @UiField
     protected DialogTab customPropertiesTab;
@@ -791,14 +498,6 @@
     protected KeyValueWidget<KeyValueModel> customPropertiesSheetEditor;
 
     private final CommonApplicationMessages messages;
-
-    @UiField
-    @Ignore
-    protected AdvancedParametersExpander expander;
-
-    @UiField
-    @Ignore
-    Panel expanderContent;
 
     @UiField
     @Ignore
@@ -829,8 +528,6 @@
 
         initListBoxEditors();
         // Contains a special parser/renderer
-        memSizeEditor = new EntityModelTextBoxEditor<Integer>(
-                new MemorySizeRenderer<Integer>(constants), new 
MemorySizeParser(), new ModeSwitchingVisibilityRenderer());
 
         minAllocatedMemoryEditor = new EntityModelTextBoxEditor<Integer>(
                 new MemorySizeRenderer<Integer>(constants), new 
MemorySizeParser(), new ModeSwitchingVisibilityRenderer());
@@ -840,9 +537,6 @@
         isHighlyAvailableEditor = new EntityModelCheckBoxEditor(Align.RIGHT, 
new ModeSwitchingVisibilityRenderer());
         watchdogModelEditor = new ListModelListBoxEditor<String>(new 
ModeSwitchingVisibilityRenderer());
         watchdogActionEditor = new ListModelListBoxEditor<String>(new 
ModeSwitchingVisibilityRenderer());
-        isStatelessEditor = new EntityModelCheckBoxEditor(Align.RIGHT, new 
ModeSwitchingVisibilityRenderer());
-        isRunAndPauseEditor = new EntityModelCheckBoxEditor(Align.RIGHT, new 
ModeSwitchingVisibilityRenderer());
-        isDeleteProtectedEditor = new EntityModelCheckBoxEditor(Align.RIGHT, 
new ModeSwitchingVisibilityRenderer());
         isSmartcardEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT, 
new ModeSwitchingVisibilityRenderer());
         isConsoleDeviceEnabledEditor = new 
EntityModelCheckBoxEditor(Align.RIGHT, new ModeSwitchingVisibilityRenderer(), 
true);
         isRngEnabledEditor = new EntityModelCheckBoxOnlyEditor(new 
ModeSwitchingVisibilityRenderer());
@@ -857,7 +551,6 @@
         isSoundcardEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT, 
new ModeSwitchingVisibilityRenderer());
         ssoMethodNone = new EntityModelRadioButtonEditor("ssoMethod", new 
ModeSwitchingVisibilityRenderer()); //$NON-NLS-1$
         ssoMethodGuestAgent = new EntityModelRadioButtonEditor("ssoMethod", 
new ModeSwitchingVisibilityRenderer());//$NON-NLS-1$
-        copyTemplatePermissionsEditor = new 
EntityModelCheckBoxEditor(Align.RIGHT, new ModeSwitchingVisibilityRenderer());
         isMemoryBalloonDeviceEnabled = new 
EntityModelCheckBoxEditor(Align.RIGHT, new ModeSwitchingVisibilityRenderer(), 
true);
         isVirtioScsiEnabled = new EntityModelCheckBoxEditor(Align.RIGHT, new 
ModeSwitchingVisibilityRenderer());
         isSingleQxlEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT, 
new ModeSwitchingVisibilityRenderer());
@@ -876,21 +569,19 @@
         priorityEditor = new EntityModelCellTable<ListModel>(
                 (Resources) GWT.create(ButtonCellTableResources.class));
         disksAllocationView = new DisksAllocationView(constants);
-        serialNumberPolicyEditor = new SerialNumberPolicyWidget(eventBus, 
applicationTemplates, messages, resources, new 
ModeSwitchingVisibilityRenderer());
         spiceFileTransferEnabledEditor = new 
EntityModelCheckBoxEditor(Align.RIGHT, new ModeSwitchingVisibilityRenderer());
         spiceCopyPasteEnabledEditor = new 
EntityModelCheckBoxEditor(Align.RIGHT, new ModeSwitchingVisibilityRenderer());
 
-        initPoolSpecificWidgets(resources, messages);
+        generalTabContent = new GeneralVmTabContent(this, resources, messages, 
constants, applicationTemplates);
+        systemTabContent = new SystemVmTabContent(this, eventBus, messages, 
resources, constants, applicationTemplates)
+
         initTextBoxEditors();
         initSpiceProxy();
-        initTotalVcpus();
         initDetachableFields();
 
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
 
         expander.initWithContent(expanderContent.getElement());
-        
vcpusAdvancedParameterExpander.initWithContent(vcpusAdvancedParameterExpanderContent.getElement());
-        editPrestartedVmsEditor.setKeepTitleOnSetEnabled(true);
 
         applyStyles();
 
@@ -913,7 +604,6 @@
     }
 
     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);
@@ -940,67 +630,16 @@
         spiceProxyEnabledCheckboxWithInfoIcon = new 
EntityModelWidgetWithInfo<String>(label, spiceProxyOverrideEnabledEditor);
     }
 
-    private void initTotalVcpus() {
-        StringEntityModelLabel label = new StringEntityModelLabel();
-        label.setText(constants.numOfVCPUs());
-        label.addStyleName("numCPUs_pfly_fix"); //$NON-NLS-1$
-        totalvCPUsEditor = new StringEntityModelTextBoxOnlyEditor(new 
ModeSwitchingVisibilityRenderer());
-        totalvCPUsEditorWithInfoIcon = new 
EntityModelDetachableWidgetWithInfo<String>(label, totalvCPUsEditor);
-        
totalvCPUsEditorWithInfoIcon.setExplanation(applicationTemplates.italicText(messages.hotPlugUnplugCpuWarning()));
-    }
-
     public void setSpiceProxyOverrideExplanation(String explanation) {
         
spiceProxyEnabledCheckboxWithInfoIcon.setExplanation(applicationTemplates.italicText(explanation));
     }
 
     private void initTextBoxEditors() {
-        templateVersionNameEditor = new StringEntityModelTextBoxEditor(new 
ModeSwitchingVisibilityRenderer());
-        descriptionEditor = new StringEntityModelTextBoxEditor(new 
ModeSwitchingVisibilityRenderer());
-        commentEditor = new StringEntityModelTextBoxEditor(new 
ModeSwitchingVisibilityRenderer());
-        numOfVmsEditor = new IntegerEntityModelTextBoxEditor(new 
ModeSwitchingVisibilityRenderer());
         cpuPinning = new StringEntityModelTextBoxOnlyEditor(new 
ModeSwitchingVisibilityRenderer());
         cpuSharesAmountEditor = new IntegerEntityModelTextBoxOnlyEditor(new 
ModeSwitchingVisibilityRenderer());
         kernel_pathEditor = new StringEntityModelTextBoxEditor(new 
ModeSwitchingVisibilityRenderer());
         initrd_pathEditor = new StringEntityModelTextBoxEditor(new 
ModeSwitchingVisibilityRenderer());
         kernel_parametersEditor = new StringEntityModelTextBoxEditor(new 
ModeSwitchingVisibilityRenderer());
-        nameEditor = new StringEntityModelTextBoxOnlyEditor(new 
ModeSwitchingVisibilityRenderer());
-        prestartedVmsEditor = new IntegerEntityModelTextBoxOnlyEditor(new 
ModeSwitchingVisibilityRenderer());
-        editPrestartedVmsEditor = new IntegerEntityModelTextBoxOnlyEditor(new 
ModeSwitchingVisibilityRenderer());
-        maxAssignedVmsPerUserEditor = new 
IntegerEntityModelTextBoxOnlyEditor(new ModeSwitchingVisibilityRenderer());
-        editMaxAssignedVmsPerUserEditor = new 
IntegerEntityModelTextBoxOnlyEditor(new ModeSwitchingVisibilityRenderer());
-    }
-
-    protected void initPoolSpecificWidgets(CommonApplicationResources 
resources,
-            final CommonApplicationMessages messages) {
-        createNumOfDesktopEditors();
-
-        incraseNumOfVmsEditor.setKeepTitleOnSetEnabled(true);
-        numOfVmsEditor.setKeepTitleOnSetEnabled(true);
-
-        newPoolPrestartedVmsIcon =
-                new 
InfoIcon(applicationTemplates.italicText(messages.prestartedHelp()), resources);
-
-        editPoolPrestartedVmsIcon =
-                new 
InfoIcon(applicationTemplates.italicText(messages.prestartedHelp()), resources);
-
-        poolNameIcon =
-                new 
InfoIcon(applicationTemplates.italicText(messages.poolNameHelp()), resources);
-
-        newPoolMaxAssignedVmsPerUserIcon =
-                new 
InfoIcon(applicationTemplates.italicText(messages.maxAssignedVmsPerUserHelp()), 
resources);
-
-        editPoolMaxAssignedVmsPerUserIcon =
-                new 
InfoIcon(applicationTemplates.italicText(messages.maxAssignedVmsPerUserHelp()), 
resources);
-
-        outOfxInPool = new ValueLabel<Integer>(new AbstractRenderer<Integer>() 
{
-
-            @Override
-            public String render(Integer object) {
-                return messages.outOfXVMsInPool(object.toString());
-            }
-
-        });
-
     }
 
     /**
@@ -1139,11 +778,6 @@
                 new ModeSwitchingVisibilityRenderer()
         );
 
-        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>>() {
             @Override
@@ -1162,11 +796,6 @@
                 }
             }
         }, new ModeSwitchingVisibilityRenderer());
-
-        StringEntityModelLabel label = new StringEntityModelLabel();
-        label.setText(constants.tzVmPopup());
-        timeZoneEditorWithInfo = new EntityModelWidgetWithInfo<String>(label, 
timeZoneEditor);
-        
timeZoneEditorWithInfo.setExplanation(applicationTemplates.italicText(constants.timeZoneInfo()));
 
         // Console tab
         displayProtocolEditor = new 
ListModelListBoxEditor<EntityModel<DisplayType>>(new 
NullSafeRenderer<EntityModel<DisplayType>>() {
@@ -1255,10 +884,6 @@
         generalTab.setLabel(constants.GeneralVmPopup());
         dataCenterWithClusterEditor.setLabel(constants.hostClusterVmPopup());
         quotaEditor.setLabel(constants.quotaVmPopup());
-        nameLabel.setText(constants.nameVmPopup());
-        templateVersionNameEditor.setLabel(constants.templateVersionName());
-        descriptionEditor.setLabel(constants.descriptionVmPopup());
-        commentEditor.setLabel(constants.commentLabel());
 
         baseTemplateEditor.setLabel(constants.basedOnTemplateVmPopup());
         templateEditor.setLabel(constants.templateSubVersion());
@@ -1266,11 +891,7 @@
 
         oSTypeEditor.setLabel(constants.osVmPopup());
         vmTypeEditor.setLabel(constants.optimizedFor());
-        isStatelessEditor.setLabel(constants.statelessVmPopup());
-        isRunAndPauseEditor.setLabel(constants.runAndPauseVmPopup());
-        isDeleteProtectedEditor.setLabel(constants.deleteProtectionPopup());
         
isConsoleDeviceEnabledEditor.setLabel(constants.consoleDeviceEnabled());
-        
copyTemplatePermissionsEditor.setLabel(constants.copyTemplatePermissions());
         isSmartcardEnabledEditor.setLabel(constants.smartcardVmPopup());
         
isMemoryBalloonDeviceEnabled.setLabel(constants.memoryBalloonDeviceEnabled());
         isVirtioScsiEnabled.setLabel(constants.isVirtioScsiEnabled());
@@ -1287,12 +908,6 @@
         // Pools Tab
         poolTab.setLabel(constants.poolVmPopup());
         poolTypeEditor.setLabel(constants.poolTypeVmPopup());
-        editPrestartedVmsLabel.setText(constants.prestartedVms());
-
-        prestartedLabel.setText(constants.prestartedPoolPopup());
-        numOfVmsEditor.setLabel(constants.numOfVmsPoolPopup());
-        
maxAssignedVmsPerUserEditor.setLabel(constants.maxAssignedVmsPerUser());
-        
editMaxAssignedVmsPerUserEditor.setLabel(constants.maxAssignedVmsPerUser());
 
         // initial run Tab
         initialRunTab.setLabel(constants.initialRunVmPopup());
@@ -1340,13 +955,6 @@
         kernel_pathEditor.setLabel(constants.kernelPathVmPopup());
         initrd_pathEditor.setLabel(constants.initrdPathVmPopup());
         kernel_parametersEditor.setLabel(constants.kernelParamsVmPopup());
-
-        // System tab
-        memSizeEditor.setLabel(constants.memSizeVmPopup());
-        detachableMemSizeEditor.setLabel(constants.memSizeVmPopup());
-        totalvCPUsEditor.setLabel(constants.numOfVCPUs());
-        corePerSocketEditorWithDetachable.setLabel(constants.coresPerSocket());
-        numOfSocketsEditorWithDetachable.setLabel(constants.numOfSockets());
     }
 
     protected void applyStyles() {
@@ -1369,13 +977,14 @@
         super.edit(model);
         unitVmModel = model;
 
+        generalTabContent.edit(model);
+        systemTabContent.edit(model);
+
         priorityEditor.setRowData(new ArrayList<EntityModel>());
         priorityEditor.asEditor().edit(model.getPriority());
         driver.edit(model);
-        profilesInstanceTypeEditor.edit(model.getNicsWithLogicalNetworks());
         customPropertiesSheetEditor.edit(model.getCustomPropertySheet());
         vmInitEditor.edit(model.getVmInitModel());
-        serialNumberPolicyEditor.edit(model.getSerialNumberPolicy());
         initTabAvailabilityListeners(model);
         initListeners(model);
         hideAlwaysHiddenFields();
@@ -1753,16 +1362,17 @@
 
     @Override
     public UnitVmModel flush() {
+        generalTabContent.flush();
+        systemTabContent.flush();
+
         priorityEditor.flush();
-        profilesInstanceTypeEditor.flush();
         vmInitEditor.flush();
-        serialNumberPolicyEditor.flush();
         return driver.flush();
     }
 
     @Override
     public void focusInput() {
-        nameEditor.setFocus(true);
+        generalTabContent.focusInput();
     }
 
     public interface ButtonCellTableResources extends CellTable.Resources {
@@ -1770,45 +1380,25 @@
         }
 
         @Override
-        @Source({ CellTable.Style.DEFAULT_CSS, 
"org/ovirt/engine/ui/common/css/ButtonCellTable.css" })
+        @Source({ CellTable.Style.DEFAULT_CSS, 
"org/ovirt/engine/ui/common/css/ButtonCellTable.css"})
         TableStyle cellTableStyle();
     }
 
     @Override
     public int setTabIndexes(int nextTabIndex) {
-        // ==General Tab==
-        nextTabIndex = generalTab.setTabIndexes(nextTabIndex);
         quotaEditor.setTabIndex(nextTabIndex++);
         oSTypeEditor.setTabIndex(nextTabIndex++);
         baseTemplateEditor.setTabIndex(nextTabIndex++);
         instanceTypesEditor.setTabIndexes(nextTabIndex++);
         templateEditor.setTabIndex(nextTabIndex++);
 
-        nameEditor.setTabIndex(nextTabIndex++);
-        templateVersionNameEditor.setTabIndex(nextTabIndex++);
-        descriptionEditor.setTabIndex(nextTabIndex++);
-        commentEditor.setTabIndex(nextTabIndex++);
-        isStatelessEditor.setTabIndex(nextTabIndex++);
-        isRunAndPauseEditor.setTabIndex(nextTabIndex++);
-        isDeleteProtectedEditor.setTabIndex(nextTabIndex++);
-        copyTemplatePermissionsEditor.setTabIndex(nextTabIndex++);
-
-        numOfVmsEditor.setTabIndex(nextTabIndex++);
-        prestartedVmsEditor.setTabIndex(nextTabIndex++);
-        editPrestartedVmsEditor.setTabIndex(nextTabIndex++);
-        incraseNumOfVmsEditor.setTabIndex(nextTabIndex++);
-        maxAssignedVmsPerUserEditor.setTabIndex(nextTabIndex++);
-        editMaxAssignedVmsPerUserEditor.setTabIndex(nextTabIndex++);
+        // ==General Tab==
+        nextTabIndex = generalTab.setTabIndexes(nextTabIndex);
+        nextTabIndex = generalTabContent.setTabIndexes(nextTabIndex);
 
         // ==System Tab==
         nextTabIndex = systemTab.setTabIndexes(nextTabIndex);
-        memSizeEditor.setTabIndex(nextTabIndex++);
-        totalvCPUsEditor.setTabIndex(nextTabIndex++);
-
-        nextTabIndex = 
vcpusAdvancedParameterExpander.setTabIndexes(nextTabIndex);
-        corePerSocketEditor.setTabIndex(nextTabIndex++);
-        numOfSocketsEditor.setTabIndex(nextTabIndex++);
-        nextTabIndex = serialNumberPolicyEditor.setTabIndexes(nextTabIndex);
+        nextTabIndex = systemTabContent.setTabIndexes(nextTabIndex);
 
         // == Pools ==
         nextTabIndex = poolTab.setTabIndexes(nextTabIndex);
@@ -1820,22 +1410,7 @@
 
         // ==Console Tab==
         nextTabIndex = consoleTab.setTabIndexes(nextTabIndex);
-        displayProtocolEditor.setTabIndex(nextTabIndex++);
-        vncKeyboardLayoutEditor.setTabIndex(nextTabIndex++);
-        usbSupportEditor.setTabIndex(nextTabIndex++);
-        isSingleQxlEnabledEditor.setTabIndex(nextTabIndex++);
-        numOfMonitorsEditor.setTabIndex(nextTabIndex++);
-        isSmartcardEnabledEditor.setTabIndex(nextTabIndex++);
-        ssoMethodNone.setTabIndex(nextTabIndex++);
-        ssoMethodGuestAgent.setTabIndex(nextTabIndex++);
-        nextTabIndex = expander.setTabIndexes(nextTabIndex);
-        allowConsoleReconnectEditor.setTabIndex(nextTabIndex++);
-        isSoundcardEnabledEditor.setTabIndex(nextTabIndex++);
-        isConsoleDeviceEnabledEditor.setTabIndex(nextTabIndex++);
-        spiceProxyOverrideEnabledEditor.setTabIndex(nextTabIndex++);
-        spiceProxyEditor.setTabIndex(nextTabIndex++);
-        spiceFileTransferEnabledEditor.setTabIndex(nextTabIndex++);
-        spiceCopyPasteEnabledEditor.setTabIndex(nextTabIndex++);
+        nextTabIndex = consoleTabContent.setTabIndexes(nextTabIndex);
 
         // ==Host Tab==
         nextTabIndex = hostTab.setTabIndexes(nextTabIndex);
@@ -1921,18 +1496,9 @@
     }
 
     protected List<Widget> poolSpecificFields() {
-        return Arrays.<Widget> asList(numOfVmsEditor,
-                newPoolEditVmsPanel,
-                editPoolEditVmsPanel,
-                editPoolIncraseNumOfVmsPanel,
-                poolTab,
-                prestartedVmsEditor,
-                poolNameIcon,
-                newPoolEditMaxAssignedVmsPerUserPanel,
-                editPoolEditMaxAssignedVmsPerUserPanel,
-                spiceProxyEditor,
-                spiceProxyEnabledCheckboxWithInfoIcon,
-                spiceProxyOverrideEnabledEditor);
+        final List<Widget> widgets = Arrays.<Widget>asList(poolTab, 
spiceProxyEditor, spiceProxyEnabledCheckboxWithInfoIcon, 
spiceProxyOverrideEnabledEditor);
+        widgets.addAll(generalTabContent.poolSpecificFields());
+        return widgets;
     }
 
     protected List<Widget> allTabs() {
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmPopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmPopupWidget.ui.xml
new file mode 100644
index 0000000..ed0822b
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmPopupWidget.ui.xml
@@ -0,0 +1,509 @@
+<?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"
+             xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"
+             xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
+             xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
+             
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
+             xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab"
+             
xmlns:s="urn:import:org.ovirt.engine.ui.common.widget.uicommon.storage"
+             
xmlns:k="urn:import:org.ovirt.engine.ui.common.widget.form.key_value"
+             
xmlns:vm="urn:import:org.ovirt.engine.ui.common.widget.uicommon.popup.vm">
+
+    <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
+    <ui:with field='constants' 
type='org.ovirt.engine.ui.common.CommonApplicationConstants'/>
+
+    <ui:style 
type="org.ovirt.engine.ui.common.widget.uicommon.popup.vm.AbstractVmPopupWidget.Style">
+
+      .sectionPanel {
+        margin-bottom: 20px;
+      }
+
+      .sectionPanelTight {
+        margin-bottom: 6px;
+        float: left;
+        width: 100%;
+      }
+
+      .sectionLabel {
+        font-weight: bold;
+        margin-top: 10px;
+        margin-bottom: 5px;
+      }
+
+      .sectionComment {
+        margin-top: 10px;
+        margin-left: 5px;
+        font-style: italic;
+      }
+
+      .migrationDowntimePanel {
+        padding-left: 1px;
+        line-height: 30px;
+      }
+
+      .overrideMigrationDowntime {
+        display: inline;
+        float: left;
+        width: 50px;
+      }
+
+      .overrideMigrationDowntime div {
+        width: 20px;
+        margin-top: 0;
+      }
+
+      .overrideMigrationDowntime>div {
+          width: 50px;
+      }
+
+      .migrationDowntimeLabel {
+        display: inline-block;
+        float: left;
+        max-width: 184px;
+      }
+
+      .migrationDowntimeInfoIcon {
+        display: inline;
+        float: left;
+      }
+
+      .migrationDowntime {
+        display: inline;
+        float: right;
+        padding-right: 9px;
+      }
+      <!--                     turns off the original styles -->
+
+        .checkbox {
+            margin-left: -9px;
+        }
+
+        .longCheckboxContent {
+          width: 90%;
+        }
+
+        .provisioningEditor {
+            padding-right: 25px;
+        }
+
+        .provisioningEditorContent {
+            display: none;
+        }
+
+        .provisioningRadioContent {
+            padding-top: 3px;
+            width: 100%;
+        }
+
+        .disksPanel {
+            width: 490px;
+            margin: 10px 0;
+            display: inline-table;
+        }
+
+        .textBox {
+            width: 30px;
+            float: right;
+        }
+
+        .numOfVmsLabel {
+            margin-left: 5px;
+            color: #333333;
+        }
+
+        .assignedVmsLabel {
+            margin-left: 8px;
+        }
+
+        .prestartedHintLabel {
+            font-size: 7pt;
+            color: gray;
+            text-align: right;
+        }
+
+        .radioButton {
+
+        }
+
+        .radioButtonSpecificHost {
+            margin-left: 5px;
+        }
+
+        .label {
+            width: 350px;
+        }
+
+        .labelDisabled {
+            color: gray;
+        }
+
+        .runHostPanel {
+
+        }
+
+        .attachCdPanel {
+            width: 100%;
+        }
+
+        .cdAttachedLabelWidth {
+            width: 30px;
+        }
+
+        .hostRunMigrationOptions {
+            margin-left: 6px;
+        }
+
+        .cpuPinningStyle {
+            float: left;
+        }
+
+        .expanderContent {
+            padding-left: 10px;
+            float: left;
+        }
+
+        .infoIcon {
+            float: left;
+            padding-top: 5px;
+            padding-left: 2px;
+        }
+
+        .migrationSelect {
+            margin-right: 7px;
+        }
+
+        .generalTabExtendedRightWidgetWidth {
+            /*  pfly_fix hack
+            width: 250px !important;
+            */
+        }
+
+        .generalTabExtendedRightWidgetWrapperWidth {
+            width: 280px !important;
+         }
+
+        .headerPanel {
+            padding-bottom: 6px;
+        }
+
+        .refreshButton {
+            float: right;
+            font-size: 12px;
+            height: 14px;
+            line-height: 14px;
+            width: 12px;
+            margin-right: 5px;
+            padding: 2px;
+            background: transparent;
+            border: 1px solid transparent;
+        }
+
+        .cdImageEditor {
+          width: 197px;
+        }
+
+        .isVirtioScsiEnabledEditor {
+          width: 100%;
+        }
+
+        .hostSelector {
+            width: 416px;
+        }
+
+        .labelToCouple {
+            line-height: 30px;
+            text-align: left;
+            float: left;
+            width: 100%;
+        }
+
+        .labelToCoupleLabel {
+            color: gray;
+            font-family: Verdana, sans-serif;
+            font-size: 13px;
+            line-height: 30px;
+            padding: 0 5px;
+            float: left;
+        }
+
+        .labelToCoupleCouple {
+            float: right;
+            line-height: 30px;
+            padding: 0 5px;
+            width: 230px;
+        }
+
+        .labelToCoupleCoupleLeft {
+            float: left;
+        }
+
+        .labelToCoupleCoupleRight {
+            float: left;
+        }
+
+        .cpuSahresValueListBox, .cpuSahresValueTextBox {
+            width: 110px;
+        }
+
+        .cpuPinningTextBox {
+            width: 197px;
+            padding-left: 5px;
+        }
+
+        .cpuSahresValueTextBox {
+            padding-left: 5px;
+        }
+
+        .migrationSelectorInner {
+            width: 260px;
+        }
+
+        .headerCol {
+            float: left;
+        }
+
+        .floatLeft {
+            float: left;
+        }
+
+        .fullWidth {
+            width: 100%;
+        }
+
+        .detachableStyle {
+            display: inline-block;
+        }
+
+    </ui:style>
+
+    <t:DialogTabPanel width="100%" height="100%" ui:field="mainTabPanel">
+        <t:header>
+            <g:FlowPanel addStyleNames="{style.headerPanel}">
+                <e:ListModelTypeAheadListBoxEditor 
ui:field="dataCenterWithClusterEditor" />
+                <e:ListModelTypeAheadListBoxEditor ui:field="quotaEditor" />
+                <e:ListModelTypeAheadListBoxEditor 
ui:field="baseTemplateEditor"/>
+                <e:ListModelTypeAheadListBoxEditor ui:field="templateEditor" />
+                <e:ListModelListBoxEditor ui:field="oSTypeEditor" />
+                <e:ListModelTypeAheadListBoxEditor 
ui:field="instanceTypesEditor" />
+                <e:ListModelListBoxEditor ui:field="vmTypeEditor" />
+            </g:FlowPanel>
+        </t:header>
+        <t:tab>
+            <t:DialogTab ui:field="generalTab">
+                <t:content>
+                  <vm:GeneralVmTabContent ui:field="generalTabContent" />
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="systemTab">
+                <t:content>
+                  <vm:SystemVmTabContent ui:field="systemTabContent" />
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="poolTab">
+                <t:content>
+                    <g:FlowPanel>
+                        <e:ListModelListBoxEditor ui:field="poolTypeEditor" />
+                    </g:FlowPanel>
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+               <t:DialogTab ui:field="initialRunTab">
+                <t:content>
+                    <g:FlowPanel>
+                        <ge:EntityModelCheckBoxEditor 
ui:field="vmInitEnabledEditor"/>
+                        <vm:VmPopupVmInitWidget ui:field="vmInitEditor" />
+                    </g:FlowPanel>
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="consoleTab">
+                <t:content>
+                  <vm:ConsoleVmTabContent ui:field="consoleTabContent" />
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="hostTab">
+                <t:content>
+                    <g:FlowPanel>
+                    <g:FlowPanel ui:field="startRunningOnPanel">
+                        <d:InfoIcon ui:field="nonEditableWhileVmNotDownInfo" 
addStyleNames="{style.labelToCoupleCoupleLeft} avmpw_infoIcon_pfly_fix"/>
+                        <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.runOnVmPopup}" />
+                        <g:VerticalPanel addStyleNames="{style.runHostPanel}" 
verticalAlignment='ALIGN_MIDDLE'>
+                            <ge:EntityModelRadioButtonEditor 
ui:field="isAutoAssignEditor"
+                                addStyleNames="{style.radioButton}" />
+                            <g:HorizontalPanel 
verticalAlignment='ALIGN_MIDDLE'>
+                                <g:RadioButton ui:field="specificHost" 
addStyleNames="{style.radioButtonSpecificHost}" />
+                                <g:Label ui:field="specificHostLabel" 
text="{constants.specificVmPopup}" 
addStyleNames="avmpw_specificHostLabel_pfly_fix" />
+                                <e:ListModelListBoxEditor 
ui:field="defaultHostEditor" addStyleNames="{style.hostSelector}"/>
+                            </g:HorizontalPanel>
+                        </g:VerticalPanel>
+                    </g:FlowPanel>
+                        <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.runMigrationOptionsVmPopup}" />
+                        <g:VerticalPanel width="100%" 
addStyleNames="{style.hostRunMigrationOptions}">
+                             <ge:EntityModelDetachableWidget 
ui:field="migrationModeEditorWithDetachable" 
addStyleNames="{style.migrationSelect}"/>
+                             <g:FlowPanel 
addStyleNames="{style.migrationDowntimePanel}">
+                               <ge:EntityModelDetachableWidget 
ui:field="overrideMigrationDowntimeEditorWithDetachable" 
addStyleNames="{style.overrideMigrationDowntime} 
avmpw_overrideMigrationDowntime_pfly_fix" />
+                               <g:Label 
text="{constants.overrideMigrationDowntimeLabel}" 
addStyleNames="{style.migrationDowntimeLabel} 
avmpw_migrationDowntimeLabel_pfly_fix" />
+                               <d:InfoIcon 
ui:field="migrationDowntimeInfoIcon" 
addStyleNames="{style.migrationDowntimeInfoIcon} avmpw_infoIcon_pfly_fix" />
+                               <ge:IntegerEntityModelTextBoxOnlyEditor 
ui:field="migrationDowntimeEditor" addStyleNames="{style.migrationDowntime}" />
+                             </g:FlowPanel>
+                             <ge:EntityModelCheckBoxEditor 
ui:field="hostCpuEditor" addStyleNames="{style.checkbox}"/>
+                        </g:VerticalPanel>
+                    </g:FlowPanel>
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="highAvailabilityTab">
+                <t:content>
+                    <g:FlowPanel>
+                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
+                            <ge:EntityModelDetachableWidget 
ui:field="isHighlyAvailableEditorWithDetachable" 
addStyleNames="{style.checkbox}" />
+                        </g:FlowPanel>
+                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
+                            <ge:DetachableLabel 
ui:field="priorityLabelWithDetachable" 
contentWidgetStyleName="{style.sectionLabel}">
+                                <ge:decorated>
+                                    <g:Label 
text="{constants.priorForRunMigrationQueueVmPopup}" />
+                                </ge:decorated>
+                            </ge:DetachableLabel>
+                            <e:EntityModelCellTable ui:field="priorityEditor" 
addStyleNames="{style.floatLeft}, {style.fullWidth}"/>
+
+                        </g:FlowPanel>
+                        <g:FlowPanel addStyleNames="{style.sectionPanel}, 
{style.floatLeft}" ui:field="watchdogPanel">
+                            <ge:DetachableLabel ui:field="watchdogLabel" 
contentWidgetStyleName="{style.sectionLabel}">
+                                <ge:decorated>
+                                    <g:Label text="{constants.watchdog}" />
+                                </ge:decorated>
+                            </ge:DetachableLabel>
+                            <e:ListModelListBoxEditor 
ui:field="watchdogModelEditor" />
+                            <e:ListModelListBoxEditor 
ui:field="watchdogActionEditor" />
+                        </g:FlowPanel>
+                    </g:FlowPanel>
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="resourceAllocationTab">
+                <t:content>
+                    <g:FlowPanel>
+                        <g:FlowPanel addStyleNames="{style.sectionPanelTight}" 
ui:field="cpuAllocationPanel" >
+                            <g:Label text="{constants.cpuAllocVmPopup}" 
addStyleNames="{style.sectionLabel}" />
+                            <g:FlowPanel addStyleNames="{style.labelToCouple}">
+                                <g:Label ui:field="cpuSharesEditor" 
text="{constants.cpuShares}" addStyleNames="{style.labelToCoupleLabel}"/>
+                                <g:FlowPanel 
addStyleNames="{style.labelToCoupleCouple}">
+                                    <e:ListModelListBoxOnlyEditor 
ui:field="cpuSharesAmountSelectionEditor" 
addStyleNames="{style.labelToCoupleCoupleLeft}" 
contentWidgetStyleName="{style.cpuSahresValueListBox}" />
+                                    <ge:IntegerEntityModelTextBoxOnlyEditor 
ui:field="cpuSharesAmountEditor" 
addStyleNames="{style.labelToCoupleCoupleRight}" 
contentWidgetStyleName="{style.cpuSahresValueTextBox} 
avmpw_cpuSahresValueTextBox_pfly_fix" />
+                                </g:FlowPanel>
+                            </g:FlowPanel>
+
+                            <g:FlowPanel addStyleNames="{style.labelToCouple}">
+                                <g:Label text="{constants.cpuPinningLabel}" 
addStyleNames="{style.labelToCoupleLabel}"/>
+                                <g:FlowPanel 
addStyleNames="{style.labelToCoupleCouple}">
+                                    <d:InfoIcon ui:field="cpuPinningInfo" 
addStyleNames="{style.labelToCoupleCoupleLeft} avmpw_infoIcon_pfly_fix"/>
+                                    <ge:StringEntityModelTextBoxOnlyEditor 
ui:field="cpuPinning" addStyleNames="{style.labelToCoupleCoupleRight}" 
contentWidgetStyleName="{style.cpuPinningTextBox} 
avmpw_cpuPinningTextBox_pfly_fix"/>
+                                </g:FlowPanel>
+                            </g:FlowPanel>
+
+                        </g:FlowPanel>
+                        <g:FlowPanel addStyleNames="{style.sectionPanelTight}">
+                            <ge:DetachableLabel ui:field="memAllocationLabel" 
contentWidgetStyleName="{style.sectionLabel}">
+                                <ge:decorated>
+                                    <g:Label 
text="{constants.memAllocVmPopup}" />
+                                </ge:decorated>
+                            </ge:DetachableLabel>
+
+                            <ge:EntityModelTextBoxEditor 
ui:field="minAllocatedMemoryEditor" />
+                            <ge:EntityModelCheckBoxEditor 
addStyleNames="{style.checkbox}" ui:field="isMemoryBalloonDeviceEnabled"/>
+                        </g:FlowPanel>
+                        <g:FlowPanel ui:field="storageAllocationPanel" 
addStyleNames="{style.sectionPanelTight}">
+                            <g:HorizontalPanel>
+                                <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.storageAllocVmPopup}" />
+                                <g:Label 
addStyleNames="{style.sectionComment}" 
text="{constants.availOnlyTemplSelectedVmPopup}" />
+                            </g:HorizontalPanel>
+                            <g:HorizontalPanel 
ui:field="provisionSelectionPanel">
+                                <e:ListModelListBoxEditor 
ui:field="provisioningEditor" addStyleNames="{style.provisioningEditor}" />
+                                <g:VerticalPanel>
+                                    <ge:EntityModelRadioButtonEditor 
ui:field="provisioningThinEditor"/>
+                                    <ge:EntityModelRadioButtonEditor 
ui:field="provisioningCloneEditor"/>
+                                </g:VerticalPanel>
+                            </g:HorizontalPanel>
+                        </g:FlowPanel>
+                        <g:FlowPanel ui:field="disksAllocationPanel" 
addStyleNames="{style.sectionPanelTight}">
+                            <g:HorizontalPanel>
+                                <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.disksAllocation}" />
+                            </g:HorizontalPanel>
+                            <g:HorizontalPanel 
addStyleNames="{style.floatLeft}">
+                                <ge:EntityModelDetachableWidget 
ui:field="isVirtioScsiEnabledWithDetachable" addStyleNames="{style.checkbox}" />
+                                <d:InfoIcon 
ui:field="isVirtioScsiEnabledInfoIcon" addStyleNames="{style.infoIcon}" 
visible="false"/>
+                            </g:HorizontalPanel>
+                            <g:FlowPanel ui:field="disksPanel">
+                                <s:DisksAllocationView 
ui:field="disksAllocationView" listHeight="170px" listWidth="490px" 
showVolumeType="true" addStyleNames="{style.disksPanel}" />
+                            </g:FlowPanel>
+                        </g:FlowPanel>
+                    </g:FlowPanel>
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="bootOptionsTab">
+                <t:content>
+                    <g:FlowPanel>
+                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
+                            <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.bootSequenceVmPopup}" />
+                            <e:ListModelListBoxEditor 
ui:field="firstBootDeviceEditor" />
+                            <e:ListModelListBoxEditor 
ui:field="secondBootDeviceEditor" />
+                            <g:HorizontalPanel 
addStyleNames="{style.attachCdPanel}" verticalAlignment="ALIGN_MIDDLE">
+                                <ge:EntityModelCheckBoxEditor 
label="{constants.attachCdVmPopup}" ui:field="cdAttachedEditor" />
+                                <e:ListModelListBoxEditor 
ui:field="cdImageEditor" addStyleNames="avmpw_cdImageEditor_pfly_fix" />
+                                <g:PushButton ui:field="refreshButton" 
addStyleNames="{style.refreshButton} avmpw_refreshButton_pfly_fix">
+                                    <g:upFace 
image='{resources.refreshButtonImage}' />
+                                </g:PushButton>
+                            </g:HorizontalPanel>
+                            <ge:EntityModelCheckBoxEditor 
ui:field="bootMenuEnabledEditor" label="{constants.bootMenuEnabled}" 
addStyleNames="{style.checkbox}" />
+                        </g:FlowPanel>
+                        <g:FlowPanel ui:field="linuxBootOptionsPanel" 
addStyleNames="{style.sectionPanel}" visible="false">
+                            <g:Label addStyleNames="{style.sectionLabel}" 
text="{constants.linuxBootOptionsVmPopup}" />
+                            <ge:StringEntityModelTextBoxEditor 
ui:field="kernel_pathEditor" />
+                            <ge:StringEntityModelTextBoxEditor 
ui:field="initrd_pathEditor" />
+                            <ge:StringEntityModelTextBoxEditor 
ui:field="kernel_parametersEditor" />
+                        </g:FlowPanel>
+                    </g:FlowPanel>
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="rngDeviceTab">
+                <t:content>
+                    <g:FlowPanel>
+                        <w:EntityModelDetachableWidgetWithInfo 
ui:field="isRngEnabledCheckboxWithInfoIcon" addStyleNames="{style.checkbox}" />
+                        <g:FlowPanel ui:field="rngPanel">
+                            <ge:IntegerEntityModelTextBoxEditor 
ui:field="rngPeriodEditor"/>
+                            <ge:IntegerEntityModelTextBoxEditor 
ui:field="rngBytesEditor" />
+                            <g:Label ui:field="rngSourceLabel" 
text="{constants.deviceSource}" addStyleNames="{style.sectionLabel}" />
+                            <ge:EntityModelRadioButtonEditor 
ui:field="rngSourceRandom" />
+                            <ge:EntityModelRadioButtonEditor 
ui:field="rngSourceHwrng" />
+                        </g:FlowPanel>
+                    </g:FlowPanel>
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+        <t:tab>
+            <t:DialogTab ui:field="customPropertiesTab">
+                <t:content>
+                    <g:FlowPanel>
+                        <k:KeyValueWidget 
ui:field="customPropertiesSheetEditor"/>
+                    </g:FlowPanel>
+                </t:content>
+            </t:DialogTab>
+        </t:tab>
+    </t:DialogTabPanel>
+
+</ui:UiBinder>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmTabContent.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmTabContent.java
new file mode 100644
index 0000000..0e89f40
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/AbstractVmTabContent.java
@@ -0,0 +1,12 @@
+package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
+
+import 
org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
+
+public abstract class AbstractVmTabContent extends 
AbstractModelBoundPopupWidget<UnitVmModel> {
+    protected final AbstractVmPopupWidget vmPopupWidget;
+
+    public AbstractVmTabContent(AbstractVmPopupWidget vmPopupWidget) {
+        this.vmPopupWidget = vmPopupWidget;
+    }
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ConsoleVmTabContent.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ConsoleVmTabContent.java
new file mode 100644
index 0000000..969751a
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ConsoleVmTabContent.java
@@ -0,0 +1,186 @@
+package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+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.FlowPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import org.ovirt.engine.core.common.businessentities.DisplayType;
+import org.ovirt.engine.core.common.businessentities.UsbPolicy;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.idhandler.WithElementId;
+import org.ovirt.engine.ui.common.widget.EntityModelWidgetWithInfo;
+import org.ovirt.engine.ui.common.widget.dialog.AdvancedParametersExpander;
+import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
+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;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelRadioButtonEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor;
+import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
+
+public class ConsoleVmTabContent extends AbstractVmTabContent {
+
+    interface Driver extends SimpleBeanEditorDriver<UnitVmModel, 
ConsoleVmTabContent> {
+    }
+    private final Driver driver = GWT.create(Driver.class);
+
+    interface ViewUiBinder extends UiBinder<FlowPanel, ConsoleVmTabContent> {
+
+        ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
+    }
+    interface ViewIdHandler extends ElementIdHandler<ConsoleVmTabContent> {
+
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+    interface Style extends CssResource {
+
+    }
+
+    @UiField
+    @Ignore
+    public Label ssoMethodLabel;
+
+    @UiField(provided = true)
+    @Path(value = "ssoMethodNone.entity")
+    @WithElementId("ssoMethodNone")
+    public EntityModelRadioButtonEditor ssoMethodNone;
+
+    @UiField(provided = true)
+    @Path(value = "ssoMethodGuestAgent.entity")
+    @WithElementId("ssoMethodGuestAgent")
+    public EntityModelRadioButtonEditor ssoMethodGuestAgent;
+
+    @Path(value = "isSoundcardEnabled.entity")
+    @WithElementId("isSoundcardEnabled")
+    public EntityModelCheckBoxEditor isSoundcardEnabledEditor;
+
+    @UiField(provided = true)
+    @Ignore
+    public EntityModelDetachableWidget isSoundcardEnabledEditorWithDetachable;
+
+    @UiField(provided = true)
+    @Path(value = "displayProtocol.selectedItem")
+    @WithElementId("displayProtocol")
+    public ListModelListBoxEditor<EntityModel<DisplayType>> 
displayProtocolEditor;
+
+    @UiField(provided = true)
+    @Path(value = "vncKeyboardLayout.selectedItem")
+    @WithElementId("vncKeyboardLayout")
+    public ListModelListBoxEditor<String> vncKeyboardLayoutEditor;
+
+    @UiField(provided = true)
+    @Path(value = "usbPolicy.selectedItem")
+    @WithElementId("usbPolicy")
+    public ListModelListBoxEditor<UsbPolicy> usbSupportEditor;
+
+    @UiField(provided = true)
+    @Path(value = "numOfMonitors.selectedItem")
+    @WithElementId("numOfMonitors")
+    public ListModelListBoxEditor<Integer> numOfMonitorsEditor;
+
+    @UiField
+    @Ignore
+    public Label numOfMonitorsLabel;
+
+    @UiField(provided = true)
+    @Path(value = "isSingleQxlEnabled.entity")
+    @WithElementId("isSingleQxlEnabled")
+    public EntityModelCheckBoxEditor isSingleQxlEnabledEditor;
+
+    @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;
+
+
+    @Path(value = "isConsoleDeviceEnabled.entity")
+    @WithElementId("isConsoleDeviceEnabled")
+    public EntityModelCheckBoxEditor isConsoleDeviceEnabledEditor;
+
+    @UiField(provided = true)
+    @Ignore
+    public EntityModelDetachableWidget 
isConsoleDeviceEnabledEditorWithDetachable;
+
+    @UiField
+    @Path(value = "spiceProxy.entity")
+    @WithElementId
+    public StringEntityModelTextBoxEditor spiceProxyEditor;
+
+    @UiField(provided = true)
+    @Ignore
+    public EntityModelWidgetWithInfo<String> 
spiceProxyEnabledCheckboxWithInfoIcon;
+
+    @Path(value = "spiceProxyEnabled.entity")
+    @WithElementId
+    public EntityModelCheckBoxOnlyEditor spiceProxyOverrideEnabledEditor;
+
+    @UiField(provided = true)
+    @Path("spiceFileTransferEnabled.entity")
+    @WithElementId("spiceFileTransferEnabled")
+    public EntityModelCheckBoxEditor spiceFileTransferEnabledEditor;
+
+    @UiField(provided = true)
+    @Path("spiceCopyPasteEnabled.entity")
+    @WithElementId("spiceCopyPasteEnabled")
+    public EntityModelCheckBoxEditor spiceCopyPasteEnabledEditor;
+
+    @UiField
+    @Ignore
+    Label nativeUsbWarningMessage;
+
+    @UiField
+    @Ignore
+    protected AdvancedParametersExpander expander;
+
+    @UiField
+    @Ignore
+    Panel expanderContent;
+
+    public ConsoleVmTabContent(AbstractVmPopupWidget vmPopupWidget) {
+        super(vmPopupWidget);
+    }
+
+    @Override
+    public void edit(UnitVmModel model) {
+        driver.edit(model);
+    }
+
+    @Override
+    public UnitVmModel flush() {
+        return driver.flush();
+    }
+
+    @Override
+    public int setTabIndexes(int nextTabIndex) {
+        displayProtocolEditor.setTabIndex(nextTabIndex++);
+        vncKeyboardLayoutEditor.setTabIndex(nextTabIndex++);
+        usbSupportEditor.setTabIndex(nextTabIndex++);
+        isSingleQxlEnabledEditor.setTabIndex(nextTabIndex++);
+        numOfMonitorsEditor.setTabIndex(nextTabIndex++);
+        isSmartcardEnabledEditor.setTabIndex(nextTabIndex++);
+        ssoMethodNone.setTabIndex(nextTabIndex++);
+        ssoMethodGuestAgent.setTabIndex(nextTabIndex++);
+        nextTabIndex = expander.setTabIndexes(nextTabIndex);
+        allowConsoleReconnectEditor.setTabIndex(nextTabIndex++);
+        isSoundcardEnabledEditor.setTabIndex(nextTabIndex++);
+        isConsoleDeviceEnabledEditor.setTabIndex(nextTabIndex++);
+        spiceProxyOverrideEnabledEditor.setTabIndex(nextTabIndex++);
+        spiceProxyEditor.setTabIndex(nextTabIndex++);
+        spiceFileTransferEnabledEditor.setTabIndex(nextTabIndex++);
+        spiceCopyPasteEnabledEditor.setTabIndex(nextTabIndex++);
+
+        return nextTabIndex;
+    }
+}
\ No newline at end of file
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ConsoleVmTabContent.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ConsoleVmTabContent.ui.xml
new file mode 100644
index 0000000..6f835a7
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ConsoleVmTabContent.ui.xml
@@ -0,0 +1,117 @@
+<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
+             xmlns:g='urn:import:com.google.gwt.user.client.ui'
+             xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"
+             xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
+             xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"
+             
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic">
+  <ui:style>
+    .sectionPanel {
+      margin-bottom: 20px;
+    }
+
+    .sectionLabel {
+      font-weight: bold;
+      margin-top: 10px;
+      margin-bottom: 5px;
+    }
+
+    .checkbox {
+      margin-left: -9px;
+    }
+
+    .floatLeft {
+      float: left;
+    }
+
+    .warningLabel {
+      color: red;
+      font-weight: bold;
+      margin-bottom: 10px;
+    }
+
+    .warningMessageLabel {
+      color: #CD2127;
+      position: absolute;
+      bottom: 10px;
+    }
+
+    .expanderContent {
+      padding-left: 10px;
+      float: left;
+    }
+
+    .monitorsStyles {
+      width: 40px;
+      padding-left: 5px;
+    }
+
+    .monitorPanel {
+      line-height: 30px;
+      padding-bottom: 0;
+      padding-left: 5px;
+      padding-right: 5px;
+      padding-top: 0;
+      width: 230px;
+      height: 30px;
+    }
+
+    .monitorsLabel {
+      float: left;
+      color: #333333;
+      width: 265px;
+    }
+
+    .checkboxWithLongLabel {
+      width: 400px;
+      float: left;
+      clear: both;
+    }
+
+    .checkboxWithLongLabel label {
+      margin-left: 26px;
+      margin-top: -18px;
+      display: block;
+      line-height: 20px;
+      width: 400px;
+      float: left;
+    }
+
+  </ui:style>
+
+  <g:FlowPanel>
+    <e:ListModelListBoxEditor ui:field="displayProtocolEditor" />
+    <e:ListModelListBoxEditor ui:field="vncKeyboardLayoutEditor" />
+    <e:ListModelListBoxEditor ui:field="usbSupportEditor" />
+    <g:FlowPanel width="100%">
+      <g:FlowPanel addStyleNames="{style.monitorPanel}">
+        <g:HorizontalPanel verticalAlignment="middle">
+          <g:Label text="{constants.monitors}" ui:field="numOfMonitorsLabel" 
addStyleNames="{style.monitorsLabel} avmpw_monitorsLabel_pfly_fix" />
+          <e:ListModelListBoxEditor ui:field="numOfMonitorsEditor" 
addStyleNames="{style.monitorsStyles}" />
+          <ge:EntityModelCheckBoxEditor ui:field="isSingleQxlEnabledEditor" 
addStyleNames="{style.checkbox}" />
+        </g:HorizontalPanel>
+      </g:FlowPanel>
+    </g:FlowPanel>
+    <ge:EntityModelDetachableWidget 
ui:field="isSmartcardEnabledEditorWithDetachable" 
addStyleNames="{style.floatLeft} avmpw_smartcard_pfly_fix" />
+    <g:Label ui:field="nativeUsbWarningMessage" 
text="{constants.nativeUsbSupportWarning}" 
addStyleNames="{style.warningMessageLabel}" />
+
+    <g:Label ui:field="ssoMethodLabel" text="{constants.ssoMethod}" 
addStyleNames="{style.sectionLabel} {style.floatLeft} {style.fullWidth}" />
+    <g:FlowPanel>
+      <ge:EntityModelRadioButtonEditor ui:field="ssoMethodNone"/>
+      <ge:EntityModelRadioButtonEditor ui:field="ssoMethodGuestAgent"/>
+    </g:FlowPanel>
+    <d:AdvancedParametersExpander ui:field="expander"/>
+    <g:FlowPanel ui:field="expanderContent" 
addStyleNames="{style.expanderContent}">
+      <g:Label addStyleNames="{style.warningLabel}" 
text="{constants.advancedOptionsLabel}" />
+      <ge:EntityModelCheckBoxEditor ui:field="allowConsoleReconnectEditor" 
addStyleNames="{style.checkboxWithLongLabel}" />
+    </g:FlowPanel>
+
+    <ge:EntityModelDetachableWidget 
ui:field="isSoundcardEnabledEditorWithDetachable" 
addStyleNames="{style.checkboxWithLongLabel}" />
+    <ge:EntityModelDetachableWidget 
ui:field="isConsoleDeviceEnabledEditorWithDetachable" 
addStyleNames="{style.checkboxWithLongLabel}" />
+
+    <w:EntityModelWidgetWithInfo 
ui:field="spiceProxyEnabledCheckboxWithInfoIcon" />
+    <ge:StringEntityModelTextBoxEditor ui:field="spiceProxyEditor" />
+
+    <ge:EntityModelCheckBoxEditor ui:field="spiceFileTransferEnabledEditor" 
addStyleNames="{style.checkboxWithLongLabel}" />
+    <ge:EntityModelCheckBoxEditor ui:field="spiceCopyPasteEnabledEditor" 
addStyleNames="{style.checkboxWithLongLabel}" />
+  </g:FlowPanel>
+</ui:UiBinder>
\ No newline at end of file
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/GeneralVmTabContent.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/GeneralVmTabContent.java
new file mode 100644
index 0000000..642c678
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/GeneralVmTabContent.java
@@ -0,0 +1,341 @@
+package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.CommonApplicationMessages;
+import org.ovirt.engine.ui.common.CommonApplicationResources;
+import org.ovirt.engine.ui.common.CommonApplicationTemplates;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.idhandler.WithElementId;
+import org.ovirt.engine.ui.common.widget.Align;
+import org.ovirt.engine.ui.common.widget.dialog.InfoIcon;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelTextBoxEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelTextBoxOnlyEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxOnlyEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxOnlyEditor;
+import org.ovirt.engine.ui.common.widget.profile.ProfilesInstanceTypeEditor;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.text.shared.AbstractRenderer;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.ValueLabel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class GeneralVmTabContent extends AbstractVmTabContent {
+
+    interface Driver extends SimpleBeanEditorDriver<UnitVmModel, 
GeneralVmTabContent> {
+    }
+
+    private final Driver driver = GWT.create(Driver.class);
+
+    interface ViewUiBinder extends UiBinder<FlowPanel, GeneralVmTabContent> {
+        ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
+    }
+
+    interface ViewIdHandler extends ElementIdHandler<GeneralVmTabContent> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    interface Style extends CssResource {
+
+    }
+
+    @UiField
+    @Ignore
+    public Label nameLabel;
+
+    @UiField(provided = true)
+    @Path(value = "name.entity")
+    @WithElementId("name")
+    public StringEntityModelTextBoxOnlyEditor nameEditor;
+
+    @UiField(provided = true)
+    @Path(value = "templateVersionName.entity")
+    @WithElementId("templateVersionName")
+    public StringEntityModelTextBoxEditor templateVersionNameEditor;
+
+    @UiField(provided = true)
+    @Ignore
+    public InfoIcon poolNameIcon;
+
+    @UiField(provided = true)
+    @Path(value = "description.entity")
+    @WithElementId("description")
+    public StringEntityModelTextBoxEditor descriptionEditor;
+
+    @UiField
+    @Path(value = "comment.entity")
+    @WithElementId("comment")
+    public StringEntityModelTextBoxEditor commentEditor;
+
+    @UiField(provided = true)
+    @Path(value = "isDeleteProtected.entity")
+    @WithElementId("isDeleteProtected")
+    public EntityModelCheckBoxEditor isDeleteProtectedEditor;
+
+    @UiField
+    public Panel logicalNetworksEditorPanel;
+
+    @UiField
+    @Ignore
+    @WithElementId("vnicsEditor")
+    public ProfilesInstanceTypeEditor profilesInstanceTypeEditor;
+
+    @UiField
+    @Ignore
+    Label generalWarningMessage;
+
+    @UiField(provided = true)
+    @Path("copyPermissions.entity")
+    @WithElementId("copyTemplatePermissions")
+    public EntityModelCheckBoxEditor copyTemplatePermissionsEditor;
+
+    // == Pools ==
+    @UiField(provided = true)
+    @Ignore
+    public InfoIcon newPoolPrestartedVmsIcon;
+
+    @UiField(provided = true)
+    @Ignore
+    public InfoIcon editPoolPrestartedVmsIcon;
+
+    @UiField(provided = true)
+    @Ignore
+    public InfoIcon newPoolMaxAssignedVmsPerUserIcon;
+
+    @UiField(provided = true)
+    @Ignore
+    public InfoIcon editPoolMaxAssignedVmsPerUserIcon;
+
+    @UiField(provided = true)
+    @Path(value = "prestartedVms.entity")
+    @WithElementId("prestartedVms")
+    public IntegerEntityModelTextBoxOnlyEditor prestartedVmsEditor;
+
+    @UiField(provided = true)
+    @Path("maxAssignedVmsPerUser.entity")
+    @WithElementId("maxAssignedVmsPerUser")
+    public IntegerEntityModelTextBoxOnlyEditor maxAssignedVmsPerUserEditor;
+
+    @UiField
+    @Ignore
+    public FlowPanel newPoolEditVmsPanel;
+
+    @UiField
+    @Ignore
+    public FlowPanel newPoolEditMaxAssignedVmsPerUserPanel;
+
+    @UiField
+    @Ignore
+    public Label prestartedLabel;
+
+    @UiField(provided = true)
+    @Path("numOfDesktops.entity")
+    @WithElementId("numOfVms")
+    public EntityModelTextBoxEditor<Integer> numOfVmsEditor;
+
+    @UiField
+    @Ignore
+    public FlowPanel editPoolEditVmsPanel;
+
+    @UiField
+    public FlowPanel editIncreaseVmsPanel;
+
+    @UiField
+    @Ignore
+    public FlowPanel editPoolIncraseNumOfVmsPanel;
+
+    @UiField
+    public FlowPanel editPrestartedVmsPanel;
+    @UiField
+    @Ignore
+    public FlowPanel editPoolEditMaxAssignedVmsPerUserPanel;
+
+    @UiField
+    @Ignore
+    public Label editPrestartedVmsLabel;
+
+    @UiField(provided = true)
+    @Path("prestartedVms.entity")
+    @WithElementId("editPrestartedVms")
+    public IntegerEntityModelTextBoxOnlyEditor editPrestartedVmsEditor;
+
+    @UiField(provided = true)
+    @Path("numOfDesktops.entity")
+    @WithElementId("incraseNumOfVms")
+    public EntityModelTextBoxOnlyEditor<Integer> incraseNumOfVmsEditor;
+
+    @UiField(provided = true)
+    @Path("maxAssignedVmsPerUser.entity")
+    @WithElementId("editMaxAssignedVmsPerUser")
+    public IntegerEntityModelTextBoxOnlyEditor editMaxAssignedVmsPerUserEditor;
+
+    @UiField(provided = true)
+    @Path("assignedVms.entity")
+    public ValueLabel<Integer> outOfxInPool;
+
+    @UiField(provided = true)
+    @Path(value = "isStateless.entity")
+    @WithElementId("isStateless")
+    public EntityModelCheckBoxEditor isStatelessEditor;
+
+    @UiField(provided = true)
+    @Path(value = "isRunAndPause.entity")
+    @WithElementId("isRunAndPause")
+    public EntityModelCheckBoxEditor isRunAndPauseEditor;
+
+    public GeneralVmTabContent(AbstractVmPopupWidget vmPopupWidget,
+                               CommonApplicationResources resources,
+                               CommonApplicationMessages messages,
+                               CommonApplicationConstants constants,
+                               CommonApplicationTemplates 
applicationTemplates) {
+        super(vmPopupWidget);
+
+        isStatelessEditor = new EntityModelCheckBoxEditor(Align.RIGHT, 
vmPopupWidget.new ModeSwitchingVisibilityRenderer());
+        isRunAndPauseEditor = new EntityModelCheckBoxEditor(Align.RIGHT, 
vmPopupWidget.new ModeSwitchingVisibilityRenderer());
+        isDeleteProtectedEditor = new EntityModelCheckBoxEditor(Align.RIGHT, 
vmPopupWidget.new ModeSwitchingVisibilityRenderer());
+        copyTemplatePermissionsEditor = new 
EntityModelCheckBoxEditor(Align.RIGHT, vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+
+        initPoolSpecificWidgets(resources, applicationTemplates, messages);
+        initTextBoxEditors();
+
+        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
+
+        localize(constants);
+
+        editPrestartedVmsEditor.setKeepTitleOnSetEnabled(true);
+
+        driver.initialize(this);
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+    }
+
+    private void localize(CommonApplicationConstants constants) {
+        nameLabel.setText(constants.nameVmPopup());
+        templateVersionNameEditor.setLabel(constants.templateVersionName());
+        descriptionEditor.setLabel(constants.descriptionVmPopup());
+        commentEditor.setLabel(constants.commentLabel());
+
+        isStatelessEditor.setLabel(constants.statelessVmPopup());
+        isRunAndPauseEditor.setLabel(constants.runAndPauseVmPopup());
+        isDeleteProtectedEditor.setLabel(constants.deleteProtectionPopup());
+
+        
copyTemplatePermissionsEditor.setLabel(constants.copyTemplatePermissions());
+
+        editPrestartedVmsLabel.setText(constants.prestartedVms());
+
+        prestartedLabel.setText(constants.prestartedPoolPopup());
+        numOfVmsEditor.setLabel(constants.numOfVmsPoolPopup());
+        
maxAssignedVmsPerUserEditor.setLabel(constants.maxAssignedVmsPerUser());
+        
editMaxAssignedVmsPerUserEditor.setLabel(constants.maxAssignedVmsPerUser());
+    }
+
+    protected void initPoolSpecificWidgets(CommonApplicationResources 
resources,
+                                           CommonApplicationTemplates 
applicationTemplates,
+                                           final CommonApplicationMessages 
messages) {
+        vmPopupWidget.createNumOfDesktopEditors();
+
+        incraseNumOfVmsEditor.setKeepTitleOnSetEnabled(true);
+        numOfVmsEditor.setKeepTitleOnSetEnabled(true);
+
+        newPoolPrestartedVmsIcon =
+                new 
InfoIcon(applicationTemplates.italicText(messages.prestartedHelp()), resources);
+
+        editPoolPrestartedVmsIcon =
+                new 
InfoIcon(applicationTemplates.italicText(messages.prestartedHelp()), resources);
+
+        poolNameIcon =
+                new 
InfoIcon(applicationTemplates.italicText(messages.poolNameHelp()), resources);
+
+        newPoolMaxAssignedVmsPerUserIcon =
+                new 
InfoIcon(applicationTemplates.italicText(messages.maxAssignedVmsPerUserHelp()), 
resources);
+
+        editPoolMaxAssignedVmsPerUserIcon =
+                new 
InfoIcon(applicationTemplates.italicText(messages.maxAssignedVmsPerUserHelp()), 
resources);
+
+        outOfxInPool = new ValueLabel<Integer>(new AbstractRenderer<Integer>() 
{
+
+            @Override
+            public String render(Integer object) {
+                return messages.outOfXVMsInPool(object.toString());
+            }
+
+        });
+
+    }
+
+    private void initTextBoxEditors() {
+        templateVersionNameEditor = new 
StringEntityModelTextBoxEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        descriptionEditor = new 
StringEntityModelTextBoxEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        commentEditor = new StringEntityModelTextBoxEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        numOfVmsEditor = new IntegerEntityModelTextBoxEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+
+        nameEditor = new StringEntityModelTextBoxOnlyEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        prestartedVmsEditor = new 
IntegerEntityModelTextBoxOnlyEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        editPrestartedVmsEditor = new 
IntegerEntityModelTextBoxOnlyEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        maxAssignedVmsPerUserEditor = new 
IntegerEntityModelTextBoxOnlyEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        editMaxAssignedVmsPerUserEditor = new 
IntegerEntityModelTextBoxOnlyEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+    }
+
+    @Override
+    public int setTabIndexes(int nextTabIndex) {
+
+        nameEditor.setTabIndex(nextTabIndex++);
+        templateVersionNameEditor.setTabIndex(nextTabIndex++);
+        descriptionEditor.setTabIndex(nextTabIndex++);
+        commentEditor.setTabIndex(nextTabIndex++);
+        isStatelessEditor.setTabIndex(nextTabIndex++);
+        isRunAndPauseEditor.setTabIndex(nextTabIndex++);
+        isDeleteProtectedEditor.setTabIndex(nextTabIndex++);
+        copyTemplatePermissionsEditor.setTabIndex(nextTabIndex++);
+
+        numOfVmsEditor.setTabIndex(nextTabIndex++);
+        prestartedVmsEditor.setTabIndex(nextTabIndex++);
+        editPrestartedVmsEditor.setTabIndex(nextTabIndex++);
+        incraseNumOfVmsEditor.setTabIndex(nextTabIndex++);
+        maxAssignedVmsPerUserEditor.setTabIndex(nextTabIndex++);
+        editMaxAssignedVmsPerUserEditor.setTabIndex(nextTabIndex++);
+
+        return nextTabIndex;
+    }
+
+    @Override
+    public void focusInput() {
+        nameEditor.setFocus(true);
+    }
+
+    @Override
+    public void edit(UnitVmModel model) {
+        driver.edit(model);
+
+        profilesInstanceTypeEditor.edit(model.getNicsWithLogicalNetworks());
+    }
+
+    @Override
+    public UnitVmModel flush() {
+        return driver.flush();
+    }
+
+
+    protected List<Widget> poolSpecificFields() {
+        return Arrays.asList(numOfVmsEditor,
+                newPoolEditVmsPanel,
+                editPoolEditVmsPanel,
+                editPoolIncraseNumOfVmsPanel,
+                prestartedVmsEditor,
+                poolNameIcon,
+                newPoolEditMaxAssignedVmsPerUserPanel,
+                editPoolEditMaxAssignedVmsPerUserPanel);
+    }
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/GeneralVmTabContent.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/GeneralVmTabContent.ui.xml
new file mode 100644
index 0000000..6cd685d
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/GeneralVmTabContent.ui.xml
@@ -0,0 +1,148 @@
+<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
+             xmlns:g='urn:import:com.google.gwt.user.client.ui'
+             
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
+             xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
+             xmlns:p="urn:import:org.ovirt.engine.ui.common.widget.profile">
+
+  <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
+  <ui:with field='constants' 
type='org.ovirt.engine.ui.common.CommonApplicationConstants'/>
+
+  <ui:style 
type="org.ovirt.engine.ui.common.widget.uicommon.popup.vm.GeneralVmTabContent.Style">
+    .sectionPanel {
+      margin-bottom: 20px;
+    }
+
+    .warningMessageLabel {
+      color: #CD2127;
+      position: absolute;
+      bottom: 10px;
+    }
+
+    .poolEditVms, .name {
+      line-height: 30px;
+      padding: 0 5px;
+      padding-bottom: 35px;
+    }
+
+    .prestartedVmsEditorContent, .nameEditorContent, 
.maxAssignedVmsPerUserEditorContent {
+      width: 230px;
+    }
+
+    .prestartedVmsEditor, .nameEditor, .maxAssignedVmsPerUserEditor {
+      float: right;
+      width: 230px;
+    }
+
+    .editPrestartedVmsEditor, .editMaxAssignedVmsPerUserEditor {
+      float: left;
+      padding-right: 10px;
+    }
+
+    .prestartedLabelWithHelp, .increasePrestartedLabel, 
.maxAssignedVmsPerUserLabel {
+      float: left;
+    }
+
+    .editPrestartedVms, .editIncreaseVms, .editMaxAssignedVmsPerUser {
+      float: right;
+      /* width: 250px; pfly_fix */
+      width: 220px;
+    }
+
+    .prestartedLabel, .nameLabel {
+      float: left;
+      color: #333333;
+    }
+
+    .increaseVmsInPoolVms, .maxAssignedVmsPerUserVms {
+      float: left;
+    }
+
+    .prestartedVmsIcon, .poolNameIcon, .maxAssignedVmsPerUserIcon {
+      float: left;
+      padding-top: 5px;
+      padding-left: 2px;
+    }
+
+    .horizontallyAlignedCheckBox {
+      float: left;
+      padding-right: 15px;
+    }
+
+    .horizontallyAlignedCheckBoxContent {
+    }
+  </ui:style>
+
+  <g:FlowPanel>
+    <g:FlowPanel addStyleNames="{style.sectionPanel}">
+      <g:FlowPanel addStyleNames="{style.name} avmpw_name_pfly_fix">
+        <g:FlowPanel addStyleNames="{style.prestartedLabelWithHelp}">
+          <g:Label ui:field="nameLabel" addStyleNames="{style.nameLabel}" />
+          <d:InfoIcon ui:field="poolNameIcon" 
addStyleNames="{style.poolNameIcon} avmpw_infoIcon_pfly_fix" />
+        </g:FlowPanel>
+        <ge:EntityModelTextBoxOnlyEditor ui:field="nameEditor" 
addStyleNames="{style.nameEditor} avmpw_nameEditor_pfly_fix" 
contentWidgetStyleName="{style.nameEditorContent}"/>
+      </g:FlowPanel>
+      <ge:StringEntityModelTextBoxEditor ui:field="templateVersionNameEditor" 
/>
+      <ge:StringEntityModelTextBoxEditor ui:field="descriptionEditor" />
+      <ge:StringEntityModelTextBoxEditor ui:field="commentEditor" />
+
+      <!-- New VM Pool -->
+      <ge:EntityModelTextBoxEditor ui:field="numOfVmsEditor" />
+      <g:FlowPanel ui:field="newPoolEditVmsPanel" 
addStyleNames="{style.poolEditVms} avmpw_poolEditVms_pfly_fix">
+        <g:FlowPanel addStyleNames="{style.prestartedLabelWithHelp}">
+          <g:Label ui:field="prestartedLabel" 
addStyleNames="{style.prestartedLabel}" />
+          <d:InfoIcon ui:field="newPoolPrestartedVmsIcon" 
addStyleNames="{style.prestartedVmsIcon} avmpw_infoIcon_pfly_fix" />
+        </g:FlowPanel>
+        <ge:IntegerEntityModelTextBoxOnlyEditor ui:field="prestartedVmsEditor" 
addStyleNames="{style.prestartedVmsEditor}" 
contentWidgetStyleName="{style.prestartedVmsEditorContent} 
avmpw_prestartedVmsEditorContent_pfly_fix" />
+      </g:FlowPanel>
+
+      <g:FlowPanel ui:field="newPoolEditMaxAssignedVmsPerUserPanel" 
addStyleNames="{style.poolEditVms} avmpw_poolEditVms_pfly_fix">
+        <g:FlowPanel addStyleNames="{style.maxAssignedVmsPerUserLabel}">
+          <g:Label text="{constants.maxAssignedVmsPerUser}" 
addStyleNames="{style.maxAssignedVmsPerUserLabel}" />
+          <d:InfoIcon ui:field="newPoolMaxAssignedVmsPerUserIcon" 
addStyleNames="{style.maxAssignedVmsPerUserIcon} avmpw_infoIcon_pfly_fix" />
+        </g:FlowPanel>
+        <ge:EntityModelTextBoxOnlyEditor 
ui:field="maxAssignedVmsPerUserEditor" 
addStyleNames="{style.maxAssignedVmsPerUserEditor}" 
contentWidgetStyleName="{style.maxAssignedVmsPerUserEditorContent} 
avmpw_maxAssignedVmsPerUserEditorContent_pfly_fix" />
+      </g:FlowPanel>
+
+      <!-- Edit VM Pool -->
+      <g:FlowPanel addStyleNames="{style.poolEditVms} 
avmpw_poolEditVms_pfly_fix" ui:field="editPoolEditVmsPanel">
+        <g:FlowPanel addStyleNames="{style.prestartedLabelWithHelp}">
+          <g:Label ui:field="editPrestartedVmsLabel" 
addStyleNames="{style.prestartedLabel}" />
+          <d:InfoIcon ui:field="editPoolPrestartedVmsIcon" 
addStyleNames="{style.prestartedVmsIcon} avmpw_infoIcon_pfly_fix" />
+        </g:FlowPanel>
+        <g:FlowPanel ui:field="editPrestartedVmsPanel" 
addStyleNames="{style.editPrestartedVms}" >
+          <ge:IntegerEntityModelTextBoxOnlyEditor 
ui:field="editPrestartedVmsEditor" 
addStyleNames="{style.editPrestartedVmsEditor}" 
contentWidgetStyleName="{style.textBox}" />
+          <g:ValueLabel ui:field="outOfxInPool" />
+        </g:FlowPanel>
+      </g:FlowPanel>
+
+      <g:FlowPanel ui:field="editPoolIncraseNumOfVmsPanel" 
addStyleNames="{style.poolEditVms} avmpw_poolEditVms_pfly_fix">
+        <g:Label text="{constants.increaseNumberOfVMsInPoolBy}" 
addStyleNames="{style.increasePrestartedLabel}" />
+        <g:FlowPanel ui:field="editIncreaseVmsPanel" 
addStyleNames="{style.editIncreaseVms}">
+          <ge:EntityModelTextBoxOnlyEditor ui:field="incraseNumOfVmsEditor" 
addStyleNames="{style.editPrestartedVmsEditor}" 
contentWidgetStyleName="{style.textBox}" />
+          <g:Label text="{constants.vms}" 
addStyleNames="{style.increaseVmsInPoolVms}" />
+        </g:FlowPanel>
+      </g:FlowPanel>
+
+      <g:FlowPanel ui:field="editPoolEditMaxAssignedVmsPerUserPanel" 
addStyleNames="{style.poolEditVms} avmpw_poolEditVms_pfly_fix">
+        <g:FlowPanel addStyleNames="{style.maxAssignedVmsPerUserLabel}">
+          <g:Label text="{constants.maxAssignedVmsPerUser}" 
addStyleNames="{style.maxAssignedVmsPerUserLabel}" />
+          <d:InfoIcon ui:field="editPoolMaxAssignedVmsPerUserIcon" 
addStyleNames="{style.maxAssignedVmsPerUserIcon} avmpw_infoIcon_pfly_fix" />
+        </g:FlowPanel>
+        <g:FlowPanel addStyleNames="{style.editMaxAssignedVmsPerUser}">
+          <ge:EntityModelTextBoxOnlyEditor 
ui:field="editMaxAssignedVmsPerUserEditor" 
addStyleNames="{style.editMaxAssignedVmsPerUserEditor}" 
contentWidgetStyleName="{style.textBox}" />
+          <g:Label text="{constants.vms}" 
addStyleNames="{style.maxAssignedVmsPerUserVms}" />
+        </g:FlowPanel>
+      </g:FlowPanel>
+    </g:FlowPanel>
+    <g:FlowPanel addStyleNames="{style.sectionPanel}">
+      <ge:EntityModelCheckBoxEditor ui:field="isStatelessEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
+      <ge:EntityModelCheckBoxEditor ui:field="isRunAndPauseEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
+      <ge:EntityModelCheckBoxEditor ui:field="isDeleteProtectedEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
+      <ge:EntityModelCheckBoxEditor ui:field="copyTemplatePermissionsEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
+    </g:FlowPanel>
+    <g:FlowPanel ui:field="logicalNetworksEditorPanel" 
addStyleNames="{style.sectionPanel}">
+      <p:ProfilesInstanceTypeEditor ui:field="profilesInstanceTypeEditor" />
+    </g:FlowPanel>
+    <g:Label ui:field="generalWarningMessage" 
addStyleNames="{style.warningMessageLabel}" />
+  </g:FlowPanel>
+</ui:UiBinder>
\ No newline at end of file
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SystemVmTabContent.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SystemVmTabContent.java
new file mode 100644
index 0000000..ca45e18
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SystemVmTabContent.java
@@ -0,0 +1,185 @@
+package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.event.shared.EventBus;
+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.FlowPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.CommonApplicationMessages;
+import org.ovirt.engine.ui.common.CommonApplicationResources;
+import org.ovirt.engine.ui.common.CommonApplicationTemplates;
+import org.ovirt.engine.ui.common.idhandler.WithElementId;
+import org.ovirt.engine.ui.common.widget.EntityModelDetachableWidgetWithInfo;
+import org.ovirt.engine.ui.common.widget.EntityModelWidgetWithInfo;
+import org.ovirt.engine.ui.common.widget.dialog.AdvancedParametersExpander;
+import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
+import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxOnlyEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelDetachableWidgetWithLabel;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelTextBoxEditor;
+import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelLabel;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxOnlyEditor;
+import org.ovirt.engine.ui.common.widget.parser.MemorySizeParser;
+import org.ovirt.engine.ui.common.widget.renderer.MemorySizeRenderer;
+import 
org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModeSwitchingPopupWidget;
+import org.ovirt.engine.ui.uicommonweb.models.vms.TimeZoneModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
+
+public class SystemVmTabContent extends AbstractVmTabContent {
+
+    interface Driver extends SimpleBeanEditorDriver<UnitVmModel, 
SystemVmTabContent> {
+    }
+
+    private final Driver driver = GWT.create(Driver.class);
+
+    interface ViewUiBinder extends UiBinder<FlowPanel, SystemVmTabContent> {
+
+        ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
+
+    }
+
+    interface Style extends CssResource {
+
+    }
+
+    @Path(value = "memSize.entity")
+    @WithElementId("memSize")
+    public EntityModelTextBoxEditor<Integer> memSizeEditor;
+
+    @Path(value = "totalCPUCores.entity")
+    @WithElementId("totalCPUCores")
+    public StringEntityModelTextBoxOnlyEditor totalvCPUsEditor;
+
+    @Path(value = "numOfSockets.selectedItem")
+    @WithElementId("numOfSockets")
+    public ListModelListBoxEditor<Integer> numOfSocketsEditor;
+
+    @Path(value = "coresPerSocket.selectedItem")
+    @WithElementId("coresPerSocket")
+    public ListModelListBoxEditor<Integer> corePerSocketEditor;
+
+    @UiField(provided = true)
+    public EntityModelDetachableWidgetWithLabel detachableMemSizeEditor;
+
+    @UiField(provided = true)
+    @Ignore
+    public EntityModelDetachableWidgetWithInfo<String> 
totalvCPUsEditorWithInfoIcon;
+
+    @UiField
+    @Ignore
+    AdvancedParametersExpander vcpusAdvancedParameterExpander;
+
+    @UiField
+    @Ignore
+    Panel vcpusAdvancedParameterExpanderContent;
+
+    @UiField(provided = true)
+    public EntityModelDetachableWidgetWithLabel 
numOfSocketsEditorWithDetachable;
+
+    @UiField(provided = true)
+    public EntityModelDetachableWidgetWithLabel 
corePerSocketEditorWithDetachable;
+
+    @Path(value = "timeZone.selectedItem")
+    @WithElementId("timeZone")
+    public ListModelListBoxOnlyEditor<TimeZoneModel> timeZoneEditor;
+
+    @UiField(provided = true)
+    @Ignore
+    @WithElementId("serialNumberPolicy")
+    public SerialNumberPolicyWidget serialNumberPolicyEditor;
+
+    @UiField
+    @Ignore
+    // system tab -> general time zone
+    public Label generalLabel;
+
+    @UiField(provided = true)
+    @Ignore
+    public EntityModelWidgetWithInfo<String> timeZoneEditorWithInfo;
+
+    public SystemVmTabContent(AbstractVmPopupWidget vmPopupWidget,
+                              EventBus eventBus,
+                              CommonApplicationMessages messages,
+                              CommonApplicationResources resources,
+                              CommonApplicationConstants constants,
+                              CommonApplicationTemplates applicationTemplates) 
{
+        super(vmPopupWidget);
+
+        serialNumberPolicyEditor = new SerialNumberPolicyWidget(eventBus, 
applicationTemplates, messages, resources, vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        memSizeEditor = new EntityModelTextBoxEditor<Integer>(
+                new MemorySizeRenderer<Integer>(constants), new 
MemorySizeParser(), vmPopupWidget.new ModeSwitchingVisibilityRenderer());
+
+        initListBoxEditors(applicationTemplates, constants);
+        initTotalVcpus(constants, applicationTemplates, messages);
+        initDetachableFields();
+
+        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
+
+        
vcpusAdvancedParameterExpander.initWithContent(vcpusAdvancedParameterExpanderContent.getElement());
+    }
+
+    private void initDetachableFields() {
+        detachableMemSizeEditor = new 
EntityModelDetachableWidgetWithLabel(memSizeEditor);
+    }
+
+    private void initTotalVcpus(CommonApplicationConstants constants, 
CommonApplicationTemplates applicationTemplates, CommonApplicationMessages 
messages) {
+        StringEntityModelLabel label = new StringEntityModelLabel();
+        label.setText(constants.numOfVCPUs());
+        label.addStyleName("numCPUs_pfly_fix"); //$NON-NLS-1$
+        totalvCPUsEditor = new 
StringEntityModelTextBoxOnlyEditor(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        totalvCPUsEditorWithInfoIcon = new 
EntityModelDetachableWidgetWithInfo<String>(label, totalvCPUsEditor);
+        
totalvCPUsEditorWithInfoIcon.setExplanation(applicationTemplates.italicText(messages.hotPlugUnplugCpuWarning()));
+    }
+
+    private void initListBoxEditors(CommonApplicationTemplates 
applicationTemplates, CommonApplicationConstants constants) {
+
+        numOfSocketsEditor = new 
ListModelListBoxEditor<Integer>(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        numOfSocketsEditorWithDetachable = new 
EntityModelDetachableWidgetWithLabel(numOfSocketsEditor);
+        corePerSocketEditor = new 
ListModelListBoxEditor<Integer>(vmPopupWidget.new 
ModeSwitchingVisibilityRenderer());
+        corePerSocketEditorWithDetachable = new 
EntityModelDetachableWidgetWithLabel(corePerSocketEditor);
+
+
+        StringEntityModelLabel label = new StringEntityModelLabel();
+        label.setText(constants.tzVmPopup());
+        timeZoneEditorWithInfo = new EntityModelWidgetWithInfo<String>(label, 
timeZoneEditor);
+        
timeZoneEditorWithInfo.setExplanation(applicationTemplates.italicText(constants.timeZoneInfo()));
+
+    }
+
+    protected void localize(CommonApplicationConstants constants) {
+        memSizeEditor.setLabel(constants.memSizeVmPopup());
+        detachableMemSizeEditor.setLabel(constants.memSizeVmPopup());
+        totalvCPUsEditor.setLabel(constants.numOfVCPUs());
+        corePerSocketEditorWithDetachable.setLabel(constants.coresPerSocket());
+        numOfSocketsEditorWithDetachable.setLabel(constants.numOfSockets());
+    }
+
+    @Override
+    public void edit(UnitVmModel model) {
+        driver.edit(model);
+
+        serialNumberPolicyEditor.edit(model.getSerialNumberPolicy());
+    }
+
+    @Override
+    public UnitVmModel flush() {
+        serialNumberPolicyEditor.flush();
+
+        return driver.flush();
+    }
+
+    @Override
+    public int setTabIndexes(int nextTabIndex) {
+        memSizeEditor.setTabIndex(nextTabIndex++);
+        totalvCPUsEditor.setTabIndex(nextTabIndex++);
+
+        nextTabIndex = 
vcpusAdvancedParameterExpander.setTabIndexes(nextTabIndex);
+        corePerSocketEditor.setTabIndex(nextTabIndex++);
+        numOfSocketsEditor.setTabIndex(nextTabIndex++);
+        return serialNumberPolicyEditor.setTabIndexes(nextTabIndex);
+    }
+}
\ No newline at end of file
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SystemVmTabContent.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SystemVmTabContent.ui.xml
new file mode 100644
index 0000000..5fed8d2
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SystemVmTabContent.ui.xml
@@ -0,0 +1,37 @@
+<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
+             xmlns:g='urn:import:com.google.gwt.user.client.ui'
+             xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"
+             xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
+             
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
+             
xmlns:vm="urn:import:org.ovirt.engine.ui.common.widget.uicommon.popup.vm">
+  <ui:style 
type="org.ovirt.engine.ui.common.widget.uicommon.popup.vm.SystemVmTabContent.Style">
+    .sectionPanel {
+      margin-bottom: 20px;
+    }
+
+    .sectionLabel {
+      font-weight: bold;
+      margin-top: 10px;
+      margin-bottom: 5px;
+    }
+
+    .generalExpanderContent {
+      padding-left: 10px;
+    }
+  </ui:style>
+
+  <g:FlowPanel>
+    <ge:EntityModelDetachableWidgetWithLabel 
ui:field="detachableMemSizeEditor"/>
+    <w:EntityModelDetachableWidgetWithInfo 
ui:field="totalvCPUsEditorWithInfoIcon" />
+    <g:FlowPanel addStyleNames="{style.sectionPanel}">
+      <d:AdvancedParametersExpander ui:field="vcpusAdvancedParameterExpander"/>
+      <g:FlowPanel ui:field="vcpusAdvancedParameterExpanderContent" 
addStyleNames="{style.generalExpanderContent}">
+        <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}" />
+    <w:EntityModelWidgetWithInfo ui:field="timeZoneEditorWithInfo" />
+    <vm:SerialNumberPolicyWidget ui:field="serialNumberPolicyEditor" />
+  </g:FlowPanel>
+</ui:UiBinder>
\ No newline at end of file
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 3372f61..d24576c 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
@@ -7,7 +7,7 @@
 import org.ovirt.engine.ui.common.CommonApplicationResources;
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
-import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractVmPopupWidget;
+import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.AbstractVmPopupWidget;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
 
 import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.hiddenField;


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

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

Reply via email to