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
