Tomas Jelinek has uploaded a new change for review. Change subject: new VM popup widget ......................................................................
new VM popup widget Change-Id: I72d42f1855c8a7c83cb838190e880bfda313c7a5 Signed-off-by: Tomas Jelinek <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ImagePopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/InstanceTypePopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/generic/QueryToListBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/InstanceTypeAndImageUnitToVmBuilder.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java 12 files changed, 166 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/12444/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index 9aa530c..f7f3dea 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -349,6 +349,9 @@ @DefaultStringValue("Smartcard enabled") String smartcardVmPopup(); + @DefaultStringValue("Image") + String imageType(); + @DefaultStringValue("Pool") String poolVmPopup(); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java index 32f79ba..c1434f4 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java @@ -2,13 +2,15 @@ import java.util.ArrayList; import java.util.List; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.ImageStatus; +import org.ovirt.engine.core.common.businessentities.ImageType; +import org.ovirt.engine.core.common.businessentities.InstanceType; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.UsbPolicy; import org.ovirt.engine.core.common.businessentities.VDS; @@ -108,6 +110,19 @@ // ==General Tab== @UiField protected DialogTab generalTab; + + @UiField + protected Panel instanceTypeImagePanel; + + @UiField(provided = true) + @Path(value = "instanceType.selectedItem") + @WithElementId("instanceType") + public ListModelListBoxEditor<Object> instanceTypeEditor; + + @UiField(provided = true) + @Path(value = "imageType.selectedItem") + @WithElementId("imageType") + public ListModelListBoxEditor<Object> imageTypeEditor; @UiField(provided = true) @Path(value = "dataCenter.selectedItem") @@ -624,6 +639,21 @@ @SuppressWarnings({ "rawtypes", "unchecked" }) private void initListBoxEditors() { // General tab + + instanceTypeEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + @Override + public String renderNullSafe(Object object) { + return ((InstanceType) object).getName(); + } + }); + + imageTypeEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + @Override + public String renderNullSafe(Object object) { + return ((ImageType) object).getName(); + } + }); + dataCenterEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { @Override public String renderNullSafe(Object object) { @@ -755,6 +785,9 @@ isDeleteProtectedEditor.setLabel(constants.deleteProtectionPopup()); isSmartcardEnabledEditor.setLabel(constants.smartcardVmPopup()); + instanceTypeEditor.setLabel(constants.instanceType()); + imageTypeEditor.setLabel(constants.imageType()); + // Pools Tab poolTab.setLabel(constants.poolVmPopup()); poolTypeEditor.setLabel(constants.poolTypeVmPopup()); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml index 85bd793..8a0af6e 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml @@ -273,6 +273,10 @@ <e:EntityModelCheckBoxEditor ui:field="isStatelessEditor" addStyleNames="{style.checkbox}" /> <e:EntityModelCheckBoxEditor ui:field="isDeleteProtectedEditor" addStyleNames="{style.checkbox}" /> </g:FlowPanel> + <g:FlowPanel addStyleNames="{style.sectionPanel}" ui:field="instanceTypeImagePanel"> + <e:ListModelListBoxEditor ui:field="instanceTypeEditor" /> + <e:ListModelListBoxEditor ui:field="imageTypeEditor" /> + </g:FlowPanel> <g:FlowPanel addStyleNames="{style.sectionPanel}"> </g:FlowPanel> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ImagePopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ImagePopupWidget.java index e09c47f..8023860 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ImagePopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/ImagePopupWidget.java @@ -37,6 +37,8 @@ config.put(storageAllocationPanel, simpleField()); config.put(disksAllocationPanel, simpleField()); config.put(memoryAllocationPanel, hiddenField()); + config.put(instanceTypeEditor, hiddenField()); + config.put(imageTypeEditor, hiddenField()); return config; } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/InstanceTypePopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/InstanceTypePopupWidget.java index a086a36..8a90bbd 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/InstanceTypePopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/InstanceTypePopupWidget.java @@ -26,7 +26,8 @@ config.put(isDeleteProtectedEditor, hiddenField()); config.put(initialRunTab, hiddenField()); config.put(templateEditor, hiddenField()); - + config.put(instanceTypeEditor, hiddenField()); + config.put(imageTypeEditor, hiddenField()); return config; } 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 ff1eacc..a6f176b 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 @@ -60,6 +60,9 @@ config.put(highAvailabilityTab, simpleField().visibleInAdvancedModeOnly()); config.put(resourceAllocationTab, simpleField().visibleInAdvancedModeOnly()); config.put(bootOptionsTab, simpleField().visibleInAdvancedModeOnly()); + + config.put(templateEditor, simpleField().visibleInAdvancedModeOnly()); + return config; } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/generic/QueryToListBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/generic/QueryToListBuilder.java new file mode 100644 index 0000000..2a6dba3 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/generic/QueryToListBuilder.java @@ -0,0 +1,39 @@ +package org.ovirt.engine.ui.uicommonweb.builders.generic; + +import org.ovirt.engine.core.common.queries.SearchParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; +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.builders.Builder; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderList; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class QueryToListBuilder<S, D> implements Builder<S, D> { + + private SearchParameters searchParameters; + + private ListModel listModel; + + public QueryToListBuilder(SearchParameters searchParameters, ListModel listModel) { + super(); + this.searchParameters = searchParameters; + this.listModel = listModel; + } + + @Override + public void build(final S source, final D destination, final BuilderList<S, D> rest) { + AsyncQuery getInstanceTypesQuery = new AsyncQuery(); + getInstanceTypesQuery.setModel(this); + getInstanceTypesQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void OnSuccess(Object model, Object ReturnValue) { + listModel.setItems((Iterable<?>) ReturnValue); + rest.head().build(source, destination, rest.tail()); + } + }; + + Frontend.RunQuery(VdcQueryType.Search, searchParameters, getInstanceTypesQuery); + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/InstanceTypeAndImageUnitToVmBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/InstanceTypeAndImageUnitToVmBuilder.java new file mode 100644 index 0000000..deacbfb --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/InstanceTypeAndImageUnitToVmBuilder.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.ui.uicommonweb.builders.vm; + +import org.ovirt.engine.core.common.businessentities.ImageType; +import org.ovirt.engine.core.common.businessentities.InstanceType; +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.ui.uicommonweb.builders.BaseSyncBuilder; +import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel; + +public class InstanceTypeAndImageUnitToVmBuilder extends BaseSyncBuilder<UnitVmModel, VM>{ + + @Override + protected void build(UnitVmModel source, VM destination) { + InstanceType instanceType = (InstanceType) source.getInstanceType().getSelectedItem(); + ImageType imageType = (ImageType) source.getImageType().getSelectedItem(); + destination.setInstanceTypeId(instanceType.getId()); + destination.setImageTypeId(imageType.getId()); + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java index 58d532f..3d59626 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java @@ -31,8 +31,7 @@ { super.Initialize(systemTreeSelectedItem); new BuilderExecutor<VoidSource, UnitVmModel>( - new DataCenterToUnitBuilder<VoidSource>() - ).build(new VoidSource(), getModel()); + new DataCenterToUnitBuilder<VoidSource>()).build(new VoidSource(), getModel()); InitPriority(0); } @@ -269,7 +268,7 @@ } } - private void PostInitTemplate(ArrayList<VmTemplate> templates) + protected void PostInitTemplate(ArrayList<VmTemplate> templates) { // If there was some template selected before, try select it again. VmTemplate oldTemplate = (VmTemplate) getModel().getTemplate().getSelectedItem(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java new file mode 100644 index 0000000..e7d0865 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java @@ -0,0 +1,30 @@ +package org.ovirt.engine.ui.uicommonweb.models.vms; + +import java.util.ArrayList; + +import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmTemplate; +import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.SearchParameters; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor; +import org.ovirt.engine.ui.uicommonweb.builders.generic.QueryToListBuilder; + +// will be removed and it's content merged into NewVmModelBehavior +// it is here just to avoid unnecessary conflict solvings +public class NewVmWithInstanceTypeModelBehavior extends NewVmModelBehavior { + + @SuppressWarnings("unchecked") + @Override + protected void PostInitTemplate(ArrayList<VmTemplate> templates) { + super.PostInitTemplate(templates); + SearchParameters instanceTypeParams = new SearchParameters("Template:type = INSTANCE", SearchType.VmTemplate); //$NON-NLS-1$ + SearchParameters imageTypeParams = new SearchParameters("Template:type = IMAGE", SearchType.VmTemplate); //$NON-NLS-1$ + + new BuilderExecutor<VM, UnitVmModel>( + new QueryToListBuilder<VM, UnitVmModel>(instanceTypeParams, getModel().getInstanceType()), + new QueryToListBuilder<VM, UnitVmModel>(imageTypeParams, getModel().getImageType()) + // none of them needs this params + ).build(null, null); + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java index a8be1b4..4e0bf3e 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java @@ -372,6 +372,26 @@ } } + private ListModel instanceType; + + public ListModel getInstanceType() { + return instanceType; + } + + private void setInstanceType(ListModel instanceType) { + this.instanceType = instanceType; + } + + private ListModel imageType; + + public ListModel getImageType() { + return imageType; + } + + private void setImageType(ListModel imageType) { + this.imageType = imageType; + } + private NotChangableForVmInPoolListModel privateDataCenter; public ListModel getDataCenter() @@ -1065,6 +1085,8 @@ setAdvancedMode(new EntityModel(false)); + setInstanceType(new ListModel()); + setImageType(new ListModel()); setStorageDomain(new NotChangableForVmInPoolListModel()); setName(new NotChangableForVmInPoolEntityModel()); setNumOfMonitors(new NotChangableForVmInPoolListModel()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index 51b4b61..27e55e5 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -73,6 +73,7 @@ import org.ovirt.engine.ui.uicommonweb.builders.disk.DiskInfoDestinationMapBuilder; import org.ovirt.engine.ui.uicommonweb.builders.vm.CommonUnitToVmBuilder; import org.ovirt.engine.ui.uicommonweb.builders.vm.HaVmToVmBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.vm.InstanceTypeAndImageUnitToVmBuilder; import org.ovirt.engine.ui.uicommonweb.builders.vm.KernelParamsAndIdVmToVmBuilder; import org.ovirt.engine.ui.uicommonweb.builders.vm.KernelParamsUnitToVmBuilder; import org.ovirt.engine.ui.uicommonweb.builders.vm.MigrationSupportVmToUnitBuilder; @@ -89,7 +90,6 @@ import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.tags.TagListModel; import org.ovirt.engine.ui.uicommonweb.models.tags.TagModel; -import org.ovirt.engine.ui.uicommonweb.models.templates.InstanceTypeListModel; import org.ovirt.engine.ui.uicommonweb.models.templates.VmBaseListModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.AttachCdModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; @@ -800,7 +800,7 @@ } private void newVm() { - UnitVmModel model = new UnitVmModel(new NewVmModelBehavior()); + UnitVmModel model = new UnitVmModel(new NewVmWithInstanceTypeModelBehavior()); model.setIsNew(true); model.setCustomPropertiesKeysList(getCustomPropertiesKeysList()); @@ -1918,7 +1918,8 @@ } VM newVm = (VM) Cloner.clone(getSelectedItem()); - newVm.setName("otherName"); + + newVm.setName((String)model.getName().getEntity()); AddVmTemplateParameters addVmTemplateParameters = new AddVmTemplateParameters(newVm, @@ -2788,7 +2789,8 @@ new MigrationSupportVmToUnitBuilder(), new KernelParamsUnitToVmBuilder(), new UsbPolicyUntiToVmBuilder(), - new QuotaUnitToVmBuilder()).build(model, getcurrentVm()); + new QuotaUnitToVmBuilder(), + new InstanceTypeAndImageUnitToVmBuilder()).build(model, getcurrentVm()); if (model.getIsNew()) { addVm(model); -- To view, visit http://gerrit.ovirt.org/12444 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I72d42f1855c8a7c83cb838190e880bfda313c7a5 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
