Arik Hadas has uploaded a new change for review.

Change subject: webadmin: fix import/general sub-tab
......................................................................

webadmin: fix import/general sub-tab

The general sub-tab in the import dialog was broken by recent changes in
the frontend. This patch fixes the sub-tab that shows general
information about the VM to be imported.

Change-Id: Ied6e9619ba6f539e42600d3650adff2b9272ac9e
Signed-off-by: Arik Hadas <[email protected]>
---
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmImportGeneralModelForm.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmImportGeneralModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/RegisterVmInfoPanel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmFromExportDomainPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.ui.xml
7 files changed, 841 insertions(+), 31 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/86/39586/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmImportGeneralModelForm.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmImportGeneralModelForm.java
new file mode 100644
index 0000000..775fd01
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/vm/VmImportGeneralModelForm.java
@@ -0,0 +1,121 @@
+package org.ovirt.engine.ui.common.widget.uicommon.vm;
+
+import org.ovirt.engine.ui.common.CommonApplicationConstants;
+import org.ovirt.engine.ui.common.gin.AssetProvider;
+import org.ovirt.engine.ui.common.uicommon.model.ModelProvider;
+import org.ovirt.engine.ui.common.widget.form.FormItem;
+import org.ovirt.engine.ui.common.widget.form.FormItem.DefaultValueCondition;
+import org.ovirt.engine.ui.common.widget.label.TextBoxLabel;
+import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundFormWidget;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmImportGeneralModel;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+
+public class VmImportGeneralModelForm extends 
AbstractModelBoundFormWidget<VmImportGeneralModel> {
+
+    interface Driver extends SimpleBeanEditorDriver<VmImportGeneralModel, 
VmImportGeneralModelForm> {
+    }
+
+    TextBoxLabel name = new TextBoxLabel();
+    TextBoxLabel description = new TextBoxLabel();
+    @Path("OS")
+    TextBoxLabel os = new TextBoxLabel();
+    TextBoxLabel template = new TextBoxLabel();
+    TextBoxLabel definedMemory = new TextBoxLabel();
+    TextBoxLabel defaultDisplayType = new TextBoxLabel();
+    TextBoxLabel priority = new TextBoxLabel();
+    TextBoxLabel minAllocatedMemory = new TextBoxLabel();
+    TextBoxLabel guestFreeCachedBufferedMemInfo = new TextBoxLabel();
+    TextBoxLabel usbPolicy = new TextBoxLabel();
+    TextBoxLabel defaultHost = new TextBoxLabel();
+    TextBoxLabel customProperties = new TextBoxLabel();
+    TextBoxLabel domain = new TextBoxLabel();
+    TextBoxLabel compatibilityVersion = new TextBoxLabel();
+    TextBoxLabel vmId = new TextBoxLabel();
+    TextBoxLabel fqdn = new TextBoxLabel();
+    TextBoxLabel cpuInfo = new TextBoxLabel();
+    TextBoxLabel guestCpuCount = new TextBoxLabel();
+    TextBoxLabel graphicsType = new TextBoxLabel();
+    TextBoxLabel quotaName = new TextBoxLabel();
+    TextBoxLabel origin = new TextBoxLabel();
+
+    @Ignore
+    TextBoxLabel monitorCount = new TextBoxLabel();
+
+    private final static CommonApplicationConstants constants = 
AssetProvider.getConstants();
+    private final Driver driver = GWT.create(Driver.class);
+
+    public VmImportGeneralModelForm(ModelProvider<VmImportGeneralModel> 
modelProvider) {
+        super(modelProvider, 3, 7);
+    }
+
+    @Override
+    protected void doEdit(VmImportGeneralModel model) {
+        driver.edit(model);
+
+        // Required because of type conversion
+        monitorCount.setText(Integer.toString(getModel().getMonitorCount()));
+    }
+
+    public void initialize() {
+        driver.initialize(this);
+
+        name.setWidth("130px"); //$NON-NLS-1$
+        os.setWidth("130px"); //$NON-NLS-1$
+
+        formBuilder.addFormItem(new FormItem(constants.nameVm(), name, 0, 0));
+        formBuilder.addFormItem(new FormItem(constants.osVm(), os, 1, 0));
+        formBuilder.addFormItem(new FormItem(constants.descriptionVm(), 
description, 2, 0));
+        formBuilder.addFormItem(new FormItem(constants.templateVm(), template, 
3, 0));
+        formBuilder.addFormItem(new FormItem(constants.videoType(), 
defaultDisplayType, 4, 0));
+        formBuilder.addFormItem(new FormItem(constants.priorityVm(), priority, 
5, 0));
+        formBuilder.addFormItem(new FormItem(constants.definedMemoryVm(), 
definedMemory, 6, 0));
+
+        formBuilder.addFormItem(new FormItem(constants.physMemGauranteedVm(), 
minAllocatedMemory, 0, 1));
+        formBuilder.addFormItem(new 
FormItem(constants.guestFreeCachedBufferedMemInfo(), 
guestFreeCachedBufferedMemInfo, 1, 1)
+        .withDefaultValue(constants.notConfigured(), new 
DefaultValueCondition() {
+            @Override
+            public boolean showDefaultValue() {
+                return getModel().getGuestFreeCachedBufferedMemInfo() == null;
+            }
+        }));
+        formBuilder.addFormItem(new FormItem(constants.numOfCpuCoresVm(), 
cpuInfo, 2, 1));
+        formBuilder.addFormItem(new FormItem(constants.GuestCpuCount(), 
guestCpuCount, 3, 1));
+        formBuilder.addFormItem(new FormItem(constants.numOfMonitorsVm(), 
monitorCount, 4, 1));
+        formBuilder.addFormItem(new FormItem(constants.usbPolicyVm(), 
usbPolicy, 5, 1));
+        formBuilder.addFormItem(new FormItem(constants.originVm(), origin, 6, 
1));
+
+        formBuilder.addFormItem(new FormItem(constants.runOnVm(), defaultHost, 
0, 2));
+        formBuilder.addFormItem(new FormItem(constants.customPropertiesVm(), 
customProperties, 1, 2));
+        formBuilder.addFormItem(new 
FormItem(constants.clusterCompatibilityVersionVm(), compatibilityVersion, 2, 
2));
+        formBuilder.addFormItem(new FormItem(constants.vmId(), vmId, 3, 2));
+
+        formBuilder.addFormItem(new FormItem(constants.quotaVm(), quotaName, 
4, 2) {
+            @Override
+            public boolean getIsAvailable() {
+                return getModel().isQuotaAvailable();
+            }
+        }.withDefaultValue(constants.notConfigured(), new 
DefaultValueCondition() {
+            @Override
+            public boolean showDefaultValue() {
+                String quotaName = getModel().getQuotaName();
+                return quotaName == null || "".equals(quotaName);
+            }
+        }));
+        formBuilder.addFormItem(new FormItem(constants.domainVm(), domain, 5, 
2) {
+            @Override
+            public boolean getIsAvailable() {
+                return getModel().getHasDomain();
+            }
+        });
+
+        formBuilder.addFormItem(new FormItem(constants.fqdn(), fqdn, 6, 2) {
+            @Override
+            public boolean getIsAvailable() {
+                String fqdn = getModel().getFqdn();
+                return !(fqdn == null || fqdn.isEmpty());
+            }
+        });
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmImportGeneralModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmImportGeneralModel.java
index 92ba43a..d7c7275 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmImportGeneralModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmImportGeneralModel.java
@@ -1,9 +1,579 @@
 package org.ovirt.engine.ui.uicommonweb.models.vms;
 
-public class VmImportGeneralModel extends VmGeneralModel {
+import java.util.ArrayList;
 
-    @SuppressWarnings("unchecked")
-    public void setEntity(ImportVmData value) {
-        super.setEntity(value == null ? null : value.getVm());
+import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VmPauseStatus;
+import org.ovirt.engine.core.common.interfaces.SearchType;
+import org.ovirt.engine.core.common.queries.SearchParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.common.utils.ObjectUtils;
+import org.ovirt.engine.core.compat.StringHelper;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
+import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+import org.ovirt.engine.ui.uicompat.EnumTranslator;
+import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
+
+public class VmImportGeneralModel extends AbstractGeneralModel<ImportVmData> {
+    private static final VmTemplateNameRenderer vmTemplateNameRenderer = new 
VmTemplateNameRenderer();
+    private static EnumTranslator translator = EnumTranslator.getInstance();
+
+    private String name;
+    private String description;
+    private String template;
+    private String definedMemory;
+    private String guestFreeCachedBufferedMemInfo;
+    private String minAllocatedMemory;
+    private String os;
+    private String defaultDisplayType;
+    private String quotaName;
+    private boolean quotaAvailable;
+    private int monitorCount;
+    private boolean hasDomain;
+    private boolean hasTimeZone;
+    private String usbPolicy;
+    private String cpuInfo;
+    private int guestCpuCount;
+    private boolean isHighlyAvailable;
+    private String priority;
+    private boolean hasAlert;
+    private String alert;
+    private String domain;
+    private String storageDomain;
+    private String timeZone;
+    private boolean hasDefaultHost;
+    private String defaultHost;
+    private boolean hasCustomProperties;
+    private String customProperties;
+    private String vmId;
+    private String fqdn;
+    private String compatibilityVersion;
+
+    public VmImportGeneralModel() {
+    }
+
+    @Override
+    protected void onEntityChanged() {
+        super.onEntityChanged();
+        if (getEntity() != null) {
+            updateProperties();
+        }
+    }
+
+    public String getOrigin() {
+        return translator.translate(getEntity().getVm().getOrigin());
+    }
+
+    private void updateProperties() {
+        VM vm = getEntity().getVm();
+
+        super.updateProperties(vm.getId());
+
+        setName(vm.getName());
+        setDescription(vm.getVmDescription());
+        setQuotaName(vm.getQuotaName() != null ? vm.getQuotaName() : ""); 
//$NON-NLS-1$
+        setQuotaAvailable(vm.getQuotaEnforcementType() != null
+        && 
!vm.getQuotaEnforcementType().equals(QuotaEnforcementTypeEnum.DISABLED));
+
+        setTemplate(vmTemplateNameRenderer.render(vm));
+
+        setDefinedMemory(vm.getVmMemSizeMb() + " MB"); //$NON-NLS-1$
+        setMinAllocatedMemory(vm.getMinAllocatedMem() + " MB"); //$NON-NLS-1$
+
+        if(vm.isRunningOrPaused() && vm.getGuestMemoryBuffered() != null && 
vm.getGuestMemoryCached() != null  && vm.getGuestMemoryFree() != null) {
+            setGuestFreeCachedBufferedMemInfo((vm.getGuestMemoryFree() / 
1024L) + " / " // $NON-NLS-1$
+                    + (vm.getGuestMemoryBuffered() / 1024L)  + " / " // 
$NON-NLS-1$
+                    + (vm.getGuestMemoryCached() / 1024L) + " MB"); 
//$NON-NLS-1$
+        }
+        else {
+            setGuestFreeCachedBufferedMemInfo(null); // Handled in form
+        }
+
+        setOS(AsyncDataProvider.getInstance().getOsName(vm.getVmOsId()));
+
+        
setDefaultDisplayType(translator.translate(vm.getDefaultDisplayType()));
+
+        setIsHighlyAvailable(vm.isAutoStartup());
+
+        
setPriority(AsyncDataProvider.getInstance().priorityToString(vm.getPriority()));
+
+        setMonitorCount(vm.getNumOfMonitors());
+
+        setUsbPolicy(translator.translate(vm.getUsbPolicy()));
+
+        setCpuInfo(ConstantsManager.getInstance().getMessages().cpuInfoLabel(
+                vm.getNumOfCpus(),
+                vm.getNumOfSockets(),
+                vm.getCpuPerSocket()));
+
+        setGuestCpuCount(vm.getGuestCpuCount());
+
+        
setHasDomain(AsyncDataProvider.getInstance().isWindowsOsType(vm.getVmOsId()));
+        if (vm.getVmInit() != null) {
+            setDomain(vm.getVmInit().getDomain());
+        }
+
+        
setHasTimeZone(AsyncDataProvider.getInstance().isWindowsOsType(vm.getVmOsId()));
+        setTimeZone(vm.getTimeZone());
+
+        
setHasCustomProperties(!StringHelper.isNullOrEmpty(vm.getCustomProperties()));
+        setCustomProperties(getHasCustomProperties() ? "Configured" : 
"Not-Configured"); //$NON-NLS-1$ //$NON-NLS-2$
+
+        setCompatibilityVersion(vm.getVdsGroupCompatibilityVersion() != null ?
+                vm.getVdsGroupCompatibilityVersion().toString() : ""); 
//$NON-NLS-1$
+
+        setVmId(vm.getId().toString());
+        setFqdn(vm.getVmFQDN());
+
+        setHasAlert(vm.getVmPauseStatus() != VmPauseStatus.NONE && 
vm.getVmPauseStatus() != VmPauseStatus.NOERR);
+        if (getHasAlert()) {
+            setAlert(translator.translate(vm.getVmPauseStatus()));
+        }
+        else {
+            setAlert(null);
+        }
+
+        setHasDefaultHost(vm.getDedicatedVmForVds() != null);
+        if (getHasDefaultHost()) {
+            Frontend.getInstance().runQuery(VdcQueryType.Search, new 
SearchParameters("Host: cluster = " + vm.getVdsGroupName() //$NON-NLS-1$
+                    + " sortby name", SearchType.VDS), new AsyncQuery(this, 
//$NON-NLS-1$
+                            new INewAsyncCallback() {
+                        @Override
+                        public void onSuccess(Object target, Object 
returnValue) {
+
+                            VmGeneralModel model = (VmGeneralModel) target;
+                            VM localVm = model.getEntity();
+                            if (localVm == null)
+                            {
+                                return;
+                            }
+                            ArrayList<VDS> hosts = ((VdcQueryReturnValue) 
returnValue).getReturnValue();
+                            for (VDS host : hosts)
+                            {
+                                if (localVm.getDedicatedVmForVds() != null
+                                        && 
host.getId().equals(localVm.getDedicatedVmForVds()))
+                                {
+                                    model.setDefaultHost(host.getName());
+                                    break;
+                                }
+                            }
+
+                        }
+                    }));
+        }
+        else {
+            
setDefaultHost(ConstantsManager.getInstance().getConstants().anyHostInCluster());
+        }
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String value)
+    {
+        if (!ObjectUtils.objectsEqual(name, value))
+        {
+            name = value;
+            onPropertyChanged(new PropertyChangedEventArgs("Name")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getDescription()
+    {
+        return description;
+    }
+
+    public void setDescription(String value)
+    {
+        if (!ObjectUtils.objectsEqual(description, value))
+        {
+            description = value;
+            onPropertyChanged(new PropertyChangedEventArgs("Description")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getTemplate()
+    {
+        return template;
+    }
+
+    public void setTemplate(String value)
+    {
+        if (!ObjectUtils.objectsEqual(template, value))
+        {
+            template = value;
+            onPropertyChanged(new PropertyChangedEventArgs("Template")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getDefinedMemory()
+    {
+        return definedMemory;
+    }
+
+    public void setDefinedMemory(String value)
+    {
+        if (!ObjectUtils.objectsEqual(definedMemory, value))
+        {
+            definedMemory = value;
+            onPropertyChanged(new PropertyChangedEventArgs("DefinedMemory")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getGuestFreeCachedBufferedMemInfo()
+    {
+        return guestFreeCachedBufferedMemInfo;
+    }
+
+    public void setGuestFreeCachedBufferedMemInfo(String value)
+    {
+        if (!ObjectUtils.objectsEqual(guestFreeCachedBufferedMemInfo, value))
+        {
+            guestFreeCachedBufferedMemInfo = value;
+            onPropertyChanged(new 
PropertyChangedEventArgs("GuestFreeCachedBufferedMemInfo")); //$NON-NLS-1$
+        }
+    }
+
+    public String getMinAllocatedMemory()
+    {
+        return minAllocatedMemory;
+    }
+
+    public void setMinAllocatedMemory(String value)
+    {
+        if (!ObjectUtils.objectsEqual(minAllocatedMemory, value))
+        {
+            minAllocatedMemory = value;
+            onPropertyChanged(new 
PropertyChangedEventArgs("MinAllocatedMemory")); //$NON-NLS-1$
+        }
+    }
+
+    public String getOS()
+    {
+        return os;
+    }
+
+    public void setOS(String value)
+    {
+        if (!ObjectUtils.objectsEqual(os, value))
+        {
+            os = value;
+            onPropertyChanged(new PropertyChangedEventArgs("OS")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getDefaultDisplayType()
+    {
+        return defaultDisplayType;
+    }
+
+    public void setDefaultDisplayType(String value)
+    {
+        if (!ObjectUtils.objectsEqual(defaultDisplayType, value))
+        {
+            defaultDisplayType = value;
+            onPropertyChanged(new 
PropertyChangedEventArgs("DefaultDisplayType")); //$NON-NLS-1$
+        }
+    }
+
+    public String getQuotaName() {
+        return quotaName;
+    }
+
+    public void setQuotaName(String quotaName) {
+        this.quotaName = quotaName;
+    }
+
+    public boolean isQuotaAvailable() {
+        return quotaAvailable;
+    }
+
+    public void setQuotaAvailable(boolean quotaAvailable) {
+        this.quotaAvailable = quotaAvailable;
+    }
+
+    public int getMonitorCount()
+    {
+        return monitorCount;
+    }
+
+    public void setMonitorCount(int value)
+    {
+        if (monitorCount != value)
+        {
+            monitorCount = value;
+            onPropertyChanged(new PropertyChangedEventArgs("MonitorCount")); 
//$NON-NLS-1$
+        }
+    }
+
+    public boolean getHasDomain()
+    {
+        return hasDomain;
+    }
+
+    public void setHasDomain(boolean value)
+    {
+        if (hasDomain != value)
+        {
+            hasDomain = value;
+            onPropertyChanged(new PropertyChangedEventArgs("HasDomain")); 
//$NON-NLS-1$
+        }
+    }
+
+    public boolean getHasTimeZone()
+    {
+        return hasTimeZone;
+    }
+
+    public void setHasTimeZone(boolean value)
+    {
+        if (hasTimeZone != value)
+        {
+            hasTimeZone = value;
+            onPropertyChanged(new PropertyChangedEventArgs("HasTimeZone")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getUsbPolicy()
+    {
+        return usbPolicy;
+    }
+
+    public void setUsbPolicy(String value)
+    {
+        if (!ObjectUtils.objectsEqual(usbPolicy, value))
+        {
+            usbPolicy = value;
+            onPropertyChanged(new PropertyChangedEventArgs("UsbPolicy")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getCpuInfo()
+    {
+        return cpuInfo;
+    }
+
+    public void setCpuInfo(String value)
+    {
+        if (!ObjectUtils.objectsEqual(cpuInfo, value))
+        {
+            cpuInfo = value;
+            onPropertyChanged(new PropertyChangedEventArgs("CpuInfo")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getGuestCpuCount() {
+        if (guestCpuCount > 0) {
+            return String.valueOf(guestCpuCount);
+        } else {
+            return 
ConstantsManager.getInstance().getConstants().notAvailableLabel();
+        }
+    }
+
+    public void setGuestCpuCount(int value) {
+        guestCpuCount = value;
+    }
+
+    public boolean getIsHighlyAvailable()
+    {
+        return isHighlyAvailable;
+    }
+
+    public void setIsHighlyAvailable(boolean value)
+    {
+        if (isHighlyAvailable != value)
+        {
+            isHighlyAvailable = value;
+            onPropertyChanged(new 
PropertyChangedEventArgs("IsHighlyAvailable")); //$NON-NLS-1$
+        }
+    }
+
+    public String getPriority()
+    {
+        return priority;
+    }
+
+    public void setPriority(String value)
+    {
+        if (!ObjectUtils.objectsEqual(priority, value))
+        {
+            priority = value;
+            onPropertyChanged(new PropertyChangedEventArgs("Priority")); 
//$NON-NLS-1$
+        }
+    }
+
+    public boolean getHasAlert()
+    {
+        return hasAlert;
+    }
+
+    public void setHasAlert(boolean value)
+    {
+        if (hasAlert != value)
+        {
+            hasAlert = value;
+            onPropertyChanged(new PropertyChangedEventArgs("HasAlert")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getAlert()
+    {
+        return alert;
+    }
+
+    public void setAlert(String value)
+    {
+        if (!ObjectUtils.objectsEqual(alert, value))
+        {
+            alert = value;
+            onPropertyChanged(new PropertyChangedEventArgs("Alert")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getDomain()
+    {
+        return domain;
+    }
+    public void setDomain(String value)
+    {
+        if (!ObjectUtils.objectsEqual(domain, value))
+        {
+            domain = value;
+            onPropertyChanged(new PropertyChangedEventArgs("Domain")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getStorageDomain()
+    {
+        return storageDomain;
+    }
+
+    public void setStorageDomain(String value)
+    {
+        if (!ObjectUtils.objectsEqual(storageDomain, value))
+        {
+            storageDomain = value;
+            onPropertyChanged(new PropertyChangedEventArgs("StorageDomain")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getTimeZone()
+    {
+        return timeZone;
+    }
+
+    public void setTimeZone(String value)
+    {
+        if (!ObjectUtils.objectsEqual(timeZone, value))
+        {
+            timeZone = value;
+            onPropertyChanged(new PropertyChangedEventArgs("TimeZone")); 
//$NON-NLS-1$
+        }
+    }
+
+    public boolean getHasDefaultHost()
+    {
+        return hasDefaultHost;
+    }
+
+    public void setHasDefaultHost(boolean value)
+    {
+        if (hasDefaultHost != value)
+        {
+            hasDefaultHost = value;
+            onPropertyChanged(new PropertyChangedEventArgs("HasDefaultHost")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getDefaultHost()
+    {
+        return defaultHost;
+    }
+
+    public void setDefaultHost(String value)
+    {
+        if (!ObjectUtils.objectsEqual(defaultHost, value))
+        {
+            defaultHost = value;
+            onPropertyChanged(new PropertyChangedEventArgs("DefaultHost")); 
//$NON-NLS-1$
+        }
+    }
+
+    public boolean getHasCustomProperties()
+    {
+        return hasCustomProperties;
+    }
+
+    public void setHasCustomProperties(boolean value)
+    {
+        if (hasCustomProperties != value)
+        {
+            hasCustomProperties = value;
+            onPropertyChanged(new 
PropertyChangedEventArgs("HasCustomProperties")); //$NON-NLS-1$
+        }
+    }
+
+    public String getCustomProperties()
+    {
+        return customProperties;
+    }
+
+    public void setCustomProperties(String value)
+    {
+        if (!ObjectUtils.objectsEqual(customProperties, value))
+        {
+            customProperties = value;
+            onPropertyChanged(new 
PropertyChangedEventArgs("CustomProperties")); //$NON-NLS-1$
+        }
+    }
+
+    public String getVmId()
+    {
+        return vmId;
+    }
+
+    public void setVmId(String value)
+    {
+        if (!ObjectUtils.objectsEqual(vmId, value))
+        {
+            vmId = value;
+            onPropertyChanged(new PropertyChangedEventArgs("VmId")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getFqdn()
+    {
+        return fqdn;
+    }
+
+    public void setFqdn(String value)
+    {
+        if (!ObjectUtils.objectsEqual(fqdn, value))
+        {
+            fqdn = value;
+            onPropertyChanged(new PropertyChangedEventArgs("FQDN")); 
//$NON-NLS-1$
+        }
+    }
+
+    public String getCompatibilityVersion()
+    {
+        return compatibilityVersion;
+    }
+
+    public void setCompatibilityVersion(String value)
+    {
+        if (!ObjectUtils.objectsEqual(compatibilityVersion, value))
+        {
+            compatibilityVersion = value;
+            onPropertyChanged(new 
PropertyChangedEventArgs("CompatibilityVersion")); //$NON-NLS-1$
+        }
     }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
index 48b1ea2..72e1e61 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
@@ -26,15 +26,16 @@
 import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.VmAffinityGroupListModel;
 import org.ovirt.engine.ui.uicommonweb.models.storage.ImportCloneModel;
-import 
org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmFromExportDomainModel;
-import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmsModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.AttachDiskModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.EditDiskModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmFromExportDomainModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmsModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.NewDiskModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmEventListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmImportGeneralModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmInterfaceListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmSessionsModel;
@@ -378,6 +379,7 @@
     protected void configure() {
         bind(new TypeLiteral<VmListModel<Void>>() {}).in(Singleton.class);
         bind(VmGeneralModel.class).in(Singleton.class);
+        bind(VmImportGeneralModel.class).in(Singleton.class);
         bind(VmSessionsModel.class).in(Singleton.class);
         bind(VmDiskListModel.class).in(Singleton.class);
         bind(VmInterfaceListModel.class).in(Singleton.class);
@@ -390,6 +392,8 @@
         // Form Detail Models
         bind(new TypeLiteral<DetailModelProvider<VmListModel<Void>, 
VmGeneralModel>>(){})
             .to(new TypeLiteral<DetailTabModelProvider<VmListModel<Void>, 
VmGeneralModel>>(){}).in(Singleton.class);
+        bind(new TypeLiteral<DetailModelProvider<ImportVmsModel, 
VmImportGeneralModel>>(){})
+            .to(new TypeLiteral<DetailTabModelProvider<ImportVmsModel, 
VmImportGeneralModel>>(){}).in(Singleton.class);
         bind(new TypeLiteral<DetailModelProvider<VmListModel<Void>, 
VmSessionsModel>>(){})
            .to(new TypeLiteral<DetailTabModelProvider<VmListModel<Void>, 
VmSessionsModel>>(){}).in(Singleton.class);
         // Search-able Detail Models
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/RegisterVmInfoPanel.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/RegisterVmInfoPanel.java
index d80acd3..90a35b3 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/RegisterVmInfoPanel.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/RegisterVmInfoPanel.java
@@ -9,8 +9,8 @@
 import org.ovirt.engine.ui.uicommonweb.models.storage.RegisterEntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ImportEntityData;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmData;
-import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel;
-import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmFromExportDomainModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmImportGeneralModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.storage.backup.ImportVmGeneralSubTabView;
@@ -20,7 +20,7 @@
 public class RegisterVmInfoPanel extends RegisterEntityInfoPanel<VM> {
 
     private ImportVmGeneralSubTabView generalView;
-    private VmGeneralModel vmGeneralModel;
+    private VmImportGeneralModel vmImportGeneralModel;
 
     private final static ApplicationConstants constants = 
AssetProvider.getConstants();
 
@@ -45,9 +45,10 @@
 
     @Override
     public void updateTabsData(ImportEntityData<VM> importEntityData) {
-        VM vm = ((ImportVmData) importEntityData).getVm();
+        ImportVmData importVmData = (ImportVmData) importEntityData;
+        VM vm = importVmData.getVm();
 
-        vmGeneralModel.setEntity(vm);
+        vmImportGeneralModel.setEntity(importVmData);
         generalView.setMainTabSelectedItem(vm);
 
         disksTable.setRowData((List) 
Arrays.asList(vm.getDiskMap().values().toArray()));
@@ -57,10 +58,10 @@
     }
 
     private void initGeneralForm() {
-        DetailModelProvider<VmListModel<Void>, VmGeneralModel> modelProvider =
-            new DetailModelProvider<VmListModel<Void>, VmGeneralModel>() {
+        DetailModelProvider<ImportVmFromExportDomainModel, 
VmImportGeneralModel> modelProvider =
+            new DetailModelProvider<ImportVmFromExportDomainModel, 
VmImportGeneralModel>() {
                 @Override
-                public VmGeneralModel getModel() {
+                public VmImportGeneralModel getModel() {
                     return getVmGeneralModel();
                 }
 
@@ -75,10 +76,10 @@
         generalView = new ImportVmGeneralSubTabView(modelProvider);
     }
 
-    public VmGeneralModel getVmGeneralModel() {
-        if (vmGeneralModel == null) {
-            vmGeneralModel = new VmGeneralModel();
+    public VmImportGeneralModel getVmGeneralModel() {
+        if (vmImportGeneralModel == null) {
+            vmImportGeneralModel = new VmImportGeneralModel();
         }
-        return vmGeneralModel;
+        return vmImportGeneralModel;
     }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmFromExportDomainPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmFromExportDomainPopupView.java
index fc320f6..63a7684 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmFromExportDomainPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmFromExportDomainPopupView.java
@@ -38,8 +38,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmData;
 import 
org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmFromExportDomainModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel;
-import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel;
-import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmImportGeneralModel;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.IEventListener;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
@@ -193,11 +192,11 @@
 
     protected void initGeneralSubTabView() {
         ScrollPanel generalPanel = new ScrollPanel();
-        DetailModelProvider<VmListModel<Void>, VmGeneralModel> modelProvider =
-                new DetailModelProvider<VmListModel<Void>, VmGeneralModel>() {
+        DetailModelProvider<ImportVmFromExportDomainModel, 
VmImportGeneralModel> modelProvider =
+                new DetailModelProvider<ImportVmFromExportDomainModel, 
VmImportGeneralModel>() {
                     @Override
-                    public VmGeneralModel getModel() {
-                        return (VmGeneralModel) 
importModel.getDetailModels().get(0);
+                    public VmImportGeneralModel getModel() {
+                        return (VmImportGeneralModel) 
importModel.getDetailModels().get(0);
                     }
 
                     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.java
index b013f18..d2f027d 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.java
@@ -1,16 +1,103 @@
 package org.ovirt.engine.ui.webadmin.section.main.view.popup.storage.backup;
 
+import javax.inject.Inject;
+
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
+import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider;
-import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel;
-import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
-import 
org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineGeneralView;
+import org.ovirt.engine.ui.common.view.AbstractSubTabFormView;
+import org.ovirt.engine.ui.common.widget.uicommon.vm.VmImportGeneralModelForm;
+import 
org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmFromExportDomainModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.VmImportGeneralModel;
+import org.ovirt.engine.ui.webadmin.ApplicationResources;
+import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineGeneralPresenter;
 
-import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.editor.client.Editor;
+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.HTMLPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Widget;
 
-public class ImportVmGeneralSubTabView extends SubTabVirtualMachineGeneralView 
implements IsWidget {
+public class ImportVmGeneralSubTabView  extends AbstractSubTabFormView<VM, 
ImportVmFromExportDomainModel, VmImportGeneralModel> implements 
SubTabVirtualMachineGeneralPresenter.ViewDef, Editor<VmImportGeneralModel> {
 
-    public ImportVmGeneralSubTabView(DetailModelProvider<VmListModel<Void>, 
VmGeneralModel> modelProvider) {
-        super(modelProvider);
+    interface ViewUiBinder extends UiBinder<Widget, ImportVmGeneralSubTabView> 
{
+        ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
     }
 
+    interface ViewIdHandler extends 
ElementIdHandler<ImportVmGeneralSubTabView> {
+        ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
+    }
+
+    private final static ApplicationResources resources = 
AssetProvider.getResources();
+
+    @UiField(provided = true)
+    @WithElementId
+    VmImportGeneralModelForm form;
+
+    // This is the panel containing the alerts label and the
+    // potential alert, this way we can hide the panel
+    // completely (including the label) if there is no alert
+    // to present:
+    @UiField
+    HTMLPanel alertsPanel;
+
+    // This is the list of action items inside the panel, so that we
+    // can clear and add elements inside without affecting the panel:
+    @UiField
+    FlowPanel alertsList;
+
+    @Inject
+    public 
ImportVmGeneralSubTabView(DetailModelProvider<ImportVmFromExportDomainModel, 
VmImportGeneralModel> modelProvider) {
+        super(modelProvider);
+        this.form = new VmImportGeneralModelForm(modelProvider);
+
+        initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
+        clearAlerts();
+
+        generateIds();
+
+        form.initialize();
+    }
+
+    @Override
+    protected void generateIds() {
+        ViewIdHandler.idHandler.generateAndSetIds(this);
+    }
+
+    @Override
+    public void setMainTabSelectedItem(VM selectedItem) {
+        form.update();
+    }
+
+    @Override
+    public void clearAlerts() {
+        // Remove all the alert widgets and make the panel invisible:
+        alertsList.clear();
+        alertsPanel.setVisible(false);
+    }
+
+    @Override
+    public void addAlert(Widget alertWidget) {
+        // Create a composite panel that contains the alert icon and the 
widget provided
+        // by the caller, both rendered horizontally:
+        FlowPanel alertPanel = new FlowPanel();
+        Image alertIcon = new Image(resources.alertImage());
+        alertIcon.getElement().getStyle().setProperty("display", "inline"); 
//$NON-NLS-1$ //$NON-NLS-2$
+        alertWidget.getElement().getStyle().setProperty("display", "inline"); 
//$NON-NLS-1$ //$NON-NLS-2$
+        alertPanel.add(alertIcon);
+        alertPanel.add(alertWidget);
+
+        // Add the composite panel to the alerts panel:
+        alertsList.add(alertPanel);
+
+        // Make the panel visible if it wasn't:
+        if (!alertsPanel.isVisible()) {
+            alertsPanel.setVisible(true);
+        }
+    }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.ui.xml
new file mode 100644
index 0000000..d189468
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmGeneralSubTabView.ui.xml
@@ -0,0 +1,28 @@
+<?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:e="urn:import:com.google.gwt.editor.ui.client" 
xmlns:f="urn:import:org.ovirt.engine.ui.common.widget.uicommon.vm">
+
+       <ui:style>
+               .form {
+                       padding-top: 10px;
+               }
+
+               .alertsPanel {
+                       padding-top: 5px;
+                       padding-right: 16px;
+                       padding-left: 16px;
+               }
+       </ui:style>
+
+       <g:FlowPanel>
+               <f:VmImportGeneralModelForm ui:field="form" 
addStyleNames="{style.form}" />
+               <g:HTMLPanel ui:field="alertsPanel" 
addStyleNames="{style.alertsPanel}">
+                       <div>
+                               <b>Alerts</b>
+                       </div>
+                       <g:FlowPanel ui:field="alertsList"/>
+               </g:HTMLPanel>
+       </g:FlowPanel>
+
+</ui:UiBinder>


-- 
To view, visit https://gerrit.ovirt.org/39586
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to