Mike Kolesnik has uploaded a new change for review. Change subject: webadmin: Extract external subnet model & widget ......................................................................
webadmin: Extract external subnet model & widget Extracted the representation & functionality of external subnet to a model & widget in order to facilitate code reuse and DRY. Conflicts: frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java Change-Id: I2d9c34a1ceb8c92e8ff813301186a2f5c9f499b4 Bug-Url: https://bugzilla.redhat.com/1064749 Signed-off-by: Mike Kolesnik <mkole...@redhat.com> (cherry picked from commit b9a64c8b3827fe66cbfbac57581a73f181cc6cc7) --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalSubnetModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NewExternalSubnetModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.ui.xml M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.ui.xml A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/provider/ExternalSubnetWidget.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/provider/ExternalSubnetWidget.ui.xml 12 files changed, 265 insertions(+), 151 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/64/27364/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index 29cb5e7..a36b7e0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -35,6 +35,7 @@ import org.ovirt.engine.core.common.businessentities.IVdcQueryable; import org.ovirt.engine.core.common.businessentities.ImageFileType; import org.ovirt.engine.core.common.businessentities.LUNs; +import org.ovirt.engine.core.common.businessentities.Permissions; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.ProviderType; import org.ovirt.engine.core.common.businessentities.Quota; @@ -61,7 +62,6 @@ import org.ovirt.engine.core.common.businessentities.VmTemplateStatus; import org.ovirt.engine.core.common.businessentities.VolumeFormat; import org.ovirt.engine.core.common.businessentities.VolumeType; -import org.ovirt.engine.core.common.businessentities.Permissions; import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; import org.ovirt.engine.core.common.businessentities.comparators.NameableComparator; import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity; @@ -77,7 +77,6 @@ import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VnicProfile; import org.ovirt.engine.core.common.businessentities.network.VnicProfileView; -import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.mode.ApplicationMode; import org.ovirt.engine.core.common.queries.CommandVersionsInfo; @@ -3501,10 +3500,6 @@ }; } Frontend.getInstance().runQuery(VdcQueryType.GetVnicProfilesByDataCenterId, new IdQueryParameters(dcId), aQuery); - } - - public static List<IpVersion> getExternalSubnetIpVerionList() { - return Arrays.asList(IpVersion.values()); } public static void getNumberOfActiveVmsInCluster(AsyncQuery aQuery, Guid clusterId) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java index c8e8067..366111f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NetworkModel.java @@ -14,7 +14,6 @@ import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; import org.ovirt.engine.core.common.businessentities.network.VnicProfile; -import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; @@ -31,8 +30,8 @@ import org.ovirt.engine.ui.uicommonweb.models.profiles.NetworkProfilesModel; import org.ovirt.engine.ui.uicommonweb.models.profiles.NewVnicProfileModel; import org.ovirt.engine.ui.uicommonweb.models.profiles.VnicProfileModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.ExternalSubnetModel; import org.ovirt.engine.ui.uicommonweb.validation.AsciiNameValidation; -import org.ovirt.engine.ui.uicommonweb.validation.CidrValidation; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.IntegerValidation; import org.ovirt.engine.ui.uicommonweb.validation.LengthValidation; @@ -70,9 +69,8 @@ private boolean mtuOverrideSupported = false; private ListModel privateDataCenters; private NetworkProfilesModel profiles; - private EntityModel<String> subnetName; - private EntityModel<String> subnetCidr; - private ListModel<IpVersion> subnetIpVersion; + private EntityModel createSubnet; + private ExternalSubnetModel subnetModel; private UICommand addQosCommand; private final Network network; private final ListModel sourceListModel; @@ -159,14 +157,21 @@ setQos(new ListModel<NetworkQoS>()); - setSubnetName(new EntityModel<String>()); - setSubnetCidr(new EntityModel<String>()); - setSubnetIpVersion(new ListModel<IpVersion>()); - getSubnetIpVersion().setItems(AsyncDataProvider.getExternalSubnetIpVerionList()); + EntityModel createSubnet = new EntityModel(false); + setCreateSubnet(createSubnet); + createSubnet.getEntityChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + updateSubnetChangeability(); + } + }); + + setSubnetModel(new ExternalSubnetModel()); // Update changeability according to initial values updateVlanTagChangeability(); updateMtuChangeability(); + updateSubnetChangeability(); } private VnicProfileModel createDefaultProfile() { @@ -402,28 +407,20 @@ return sourceListModel; } - public EntityModel<String> getSubnetName() { - return subnetName; + public EntityModel getCreateSubnet() { + return createSubnet; } - private void setSubnetName(EntityModel<String> subnetName) { - this.subnetName = subnetName; + private void setCreateSubnet(EntityModel createSubnet) { + this.createSubnet = createSubnet; } - public EntityModel<String> getSubnetCidr() { - return subnetCidr; + public ExternalSubnetModel getSubnetModel() { + return subnetModel; } - private void setSubnetCidr(EntityModel<String> subnetCidr) { - this.subnetCidr = subnetCidr; - } - - public ListModel<IpVersion> getSubnetIpVersion() { - return subnetIpVersion; - } - - private void setSubnetIpVersion(ListModel<IpVersion> subnetIpVersion) { - this.subnetIpVersion = subnetIpVersion; + private void setSubnetModel(ExternalSubnetModel subnetModel) { + this.subnetModel = subnetModel; } public UICommand getAddQosCommand() { @@ -466,11 +463,9 @@ getExternalProviders().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); - getSubnetName().validateEntity(new IValidation[] { new AsciiNameValidation() }); - if (getSubnetName().getEntity() != null && !getSubnetName().getEntity().isEmpty()) { - getSubnetCidr().validateEntity(new IValidation[] { getSubnetIpVersion().getSelectedItem() == IpVersion.IPV4 ? new CidrValidation() - : new NotEmptyValidation() }); - getSubnetIpVersion().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); + boolean subnetValid = true; + if ((Boolean) getExport().getEntity() && (Boolean) getCreateSubnet().getEntity()) { + subnetValid = getSubnetModel().validate(); } boolean profilesValid = true; @@ -485,8 +480,7 @@ return getName().getIsValid() && getVLanTag().getIsValid() && getDescription().getIsValid() && getMtu().getIsValid() && getExternalProviders().getIsValid() && getComment().getIsValid() - && getSubnetName().getIsValid() && getSubnetCidr().getIsValid() && getSubnetIpVersion().getIsValid() - && profilesValid && getNetworkLabel().getIsValid(); + && subnetValid && profilesValid && getNetworkLabel().getIsValid(); } public void syncWithBackend() { @@ -738,4 +732,8 @@ private void updateMtuChangeability() { getMtu().setIsChangable((Boolean) getHasMtu().getEntity() && !((Boolean) getExport().getEntity())); } + + private void updateSubnetChangeability() { + getSubnetModel().toggleChangeability((Boolean) getCreateSubnet().getEntity()); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java index 092bb6c..59c4701 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkModel.java @@ -11,7 +11,6 @@ import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.VDSGroup; -import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; import org.ovirt.engine.core.common.businessentities.network.ProviderNetwork; @@ -180,16 +179,12 @@ Frontend.getInstance().runMultipleAction(VdcActionType.AttachNetworkToVdsGroup, actionParameters1); - if ((Boolean) getExport().getEntity() - && getSubnetName().getEntity() != null - && !getSubnetName().getEntity().isEmpty()) { - ExternalSubnet subnet = new ExternalSubnet(); - subnet.setName(getSubnetName().getEntity()); - subnet.setCidr(getSubnetCidr().getEntity()); - subnet.setIpVersion(getSubnetIpVersion().getSelectedItem()); + if ((Boolean) getExport().getEntity() && (Boolean) getCreateSubnet().getEntity()) { + getSubnetModel().setExternalNetwork(getNetwork().getProvidedBy()); + getSubnetModel().flush(); Frontend.getInstance().runAction(VdcActionType.AddSubnetToProvider, - new AddExternalSubnetParameters(subnet, networkId)); + new AddExternalSubnetParameters(getSubnetModel().getSubnet(), networkId)); } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalSubnetModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalSubnetModel.java new file mode 100644 index 0000000..6506967 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalSubnetModel.java @@ -0,0 +1,90 @@ +package org.ovirt.engine.ui.uicommonweb.models.providers; + +import java.util.Arrays; + +import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet; +import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion; +import org.ovirt.engine.core.common.businessentities.network.ProviderNetwork; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.ui.uicommonweb.models.Model; +import org.ovirt.engine.ui.uicommonweb.validation.AsciiNameValidation; +import org.ovirt.engine.ui.uicommonweb.validation.CidrValidation; +import org.ovirt.engine.ui.uicommonweb.validation.IValidation; +import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; + +public class ExternalSubnetModel extends Model { + + private EntityModel<String> name; + private EntityModel<String> cidr; + private ListModel<IpVersion> ipVersion; + private ExternalSubnet subnet; + private ProviderNetwork externalNetwork; + + public ExternalSubnetModel() { + setName(new EntityModel<String>()); + setCidr(new EntityModel<String>()); + setIpVersion(new ListModel<IpVersion>()); + getIpVersion().setItems(Arrays.asList(IpVersion.values())); + } + + public EntityModel<String> getName() { + return name; + } + + private void setName(EntityModel<String> name) { + this.name = name; + } + + public EntityModel<String> getCidr() { + return cidr; + } + + private void setCidr(EntityModel<String> cidr) { + this.cidr = cidr; + } + + public ListModel<IpVersion> getIpVersion() { + return ipVersion; + } + + private void setIpVersion(ListModel<IpVersion> ipVersion) { + this.ipVersion = ipVersion; + } + + public ExternalSubnet getSubnet() { + return subnet; + } + + public ProviderNetwork getExternalNetwork() { + return externalNetwork; + } + + public void setExternalNetwork(ProviderNetwork externalNetwork) { + this.externalNetwork = externalNetwork; + } + + public void toggleChangeability(boolean value) { + getName().setIsChangable(value); + getCidr().setIsChangable(value); + getIpVersion().setIsChangable(value); + } + + public void flush() { + subnet = new ExternalSubnet(); + subnet.setName(getName().getEntity()); + subnet.setExternalNetwork(getExternalNetwork()); + subnet.setCidr(getCidr().getEntity()); + subnet.setIpVersion(getIpVersion().getSelectedItem()); + } + + public boolean validate() { + getName().validateEntity(new IValidation[] { new NotEmptyValidation(), new AsciiNameValidation() }); + getCidr().validateEntity(new IValidation[] { getIpVersion().getSelectedItem() == IpVersion.IPV4 + ? new CidrValidation() + : new NotEmptyValidation() }); + getIpVersion().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); + + return getName().getIsValid() && getCidr().getIsValid() && getIpVersion().getIsValid(); + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NewExternalSubnetModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NewExternalSubnetModel.java index 9827542..5b22d0b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NewExternalSubnetModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NewExternalSubnetModel.java @@ -3,44 +3,33 @@ import org.ovirt.engine.core.common.action.AddExternalSubnetParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; -import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet; -import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion; -import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkView; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.uicommonweb.UICommand; -import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; -import org.ovirt.engine.ui.uicommonweb.validation.AsciiNameValidation; -import org.ovirt.engine.ui.uicommonweb.validation.CidrValidation; -import org.ovirt.engine.ui.uicommonweb.validation.IValidation; -import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; public class NewExternalSubnetModel extends Model { - private EntityModel<String> name; - private EntityModel<String> cidr; private EntityModel<NetworkView> network; - private ListModel<IpVersion> ipVersion; + + private ExternalSubnetModel subnetModel; + private final SearchableListModel sourceModel; - private ExternalSubnet subnet; public NewExternalSubnetModel(NetworkView network, SearchableListModel sourceModel) { this.sourceModel = sourceModel; - setName(new EntityModel<String>()); - setCidr(new EntityModel<String>()); setNetwork(new ListModel<NetworkView>()); - setIpVersion(new ListModel<IpVersion>()); - getIpVersion().setItems(AsyncDataProvider.getExternalSubnetIpVerionList()); getNetwork().setEntity(network); + setSubnetModel(new ExternalSubnetModel()); + getSubnetModel().setExternalNetwork(network.getProvidedBy()); setTitle(ConstantsManager.getInstance().getConstants().newExternalSubnetTitle()); setHelpTag(HelpTag.new_external_subnet); @@ -60,22 +49,6 @@ getCommands().add(cancelCommand); } - public EntityModel<String> getName() { - return name; - } - - private void setName(EntityModel<String> name) { - this.name = name; - } - - public EntityModel<String> getCidr() { - return cidr; - } - - private void setCidr(EntityModel<String> cidr) { - this.cidr = cidr; - } - public EntityModel<NetworkView> getNetwork() { return network; } @@ -84,12 +57,12 @@ this.network = network; } - public ListModel<IpVersion> getIpVersion() { - return ipVersion; + public ExternalSubnetModel getSubnetModel() { + return subnetModel; } - private void setIpVersion(ListModel<IpVersion> ipVersion) { - this.ipVersion = ipVersion; + private void setSubnetModel(ExternalSubnetModel subnetModel) { + this.subnetModel = subnetModel; } private void onSave() { @@ -104,7 +77,8 @@ startProgress(null); Frontend.getInstance().runAction(VdcActionType.AddSubnetToProvider, - new AddExternalSubnetParameters(subnet, getNetwork().getEntity().getId()), + new AddExternalSubnetParameters(getSubnetModel().getSubnet(), + getNetwork().getEntity().getId()), new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { @@ -121,12 +95,7 @@ } public void flush() { - subnet = new ExternalSubnet(); - subnet.setName(getName().getEntity()); - Network network = getNetwork().getEntity(); - subnet.setExternalNetwork(network.getProvidedBy()); - subnet.setCidr(getCidr().getEntity()); - subnet.setIpVersion(getIpVersion().getSelectedItem()); + getSubnetModel().flush(); } private void cancel() { @@ -145,12 +114,6 @@ } public boolean validate() { - getName().validateEntity(new IValidation[] { new NotEmptyValidation(), new AsciiNameValidation() }); - getCidr().validateEntity(new IValidation[] { getIpVersion().getSelectedItem() == IpVersion.IPV4 - ? new CidrValidation() - : new NotEmptyValidation() }); - getIpVersion().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); - - return getName().getIsValid() && getCidr().getIsValid() && getIpVersion().getIsValid(); + return getSubnetModel().validate(); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index 9483573..d0fee15 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -224,6 +224,9 @@ @DefaultStringValue("Override MTU") String overrideMtuLabel(); + @DefaultStringValue("Create subnet") + String createSubnetLabel(); + @DefaultStringValue("Host Network QoS") String hostNetworkQos(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java index 0fc35d0..8d1e8af 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.java @@ -4,7 +4,6 @@ import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.StoragePool; -import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion; import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; import org.ovirt.engine.ui.common.idhandler.WithElementId; import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; @@ -14,13 +13,11 @@ import org.ovirt.engine.ui.common.widget.dialog.tab.DialogTab; import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable; import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable.SelectionMode; -import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor; import org.ovirt.engine.ui.common.widget.editor.EntityModelCheckBoxEditor; import org.ovirt.engine.ui.common.widget.editor.EntityModelTextBoxEditor; import org.ovirt.engine.ui.common.widget.editor.EntityModelTextBoxOnlyEditor; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.ListModelSuggestBoxEditor; -import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer; import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer; import org.ovirt.engine.ui.common.widget.table.column.CheckboxColumn; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; @@ -33,6 +30,7 @@ import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.ApplicationTemplates; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.AbstractNetworkPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.widget.provider.ExternalSubnetWidget; import org.ovirt.engine.ui.webadmin.widget.vnicProfile.VnicProfilesEditor; import com.google.gwt.cell.client.Cell.Context; @@ -143,17 +141,14 @@ @UiField public WidgetStyle style; - @UiField - @Path("subnetName.entity") - public StringEntityModelTextBoxEditor subnetNameEditor; - - @UiField - @Path("subnetCidr.entity") - public StringEntityModelTextBoxEditor subnetCidrEditor; - @UiField(provided = true) - @Path("subnetIpVersion.selectedItem") - public ListModelListBoxEditor<IpVersion> subnetIpVersionEditor; + @Path(value = "createSubnet.entity") + @WithElementId("createSubnet") + public EntityModelCheckBoxEditor createSubnetEditor; + + @UiField + @Ignore + ExternalSubnetWidget subnetWidget; @UiField @Ignore @@ -213,10 +208,10 @@ } } }); - subnetIpVersionEditor = new ListModelListBoxEditor<IpVersion>(new EnumRenderer<IpVersion>()); isVmNetworkEditor = new EntityModelCheckBoxEditor(Align.RIGHT); vlanTagging = new EntityModelCheckBoxEditor(Align.RIGHT); hasMtuEditor = new EntityModelCheckBoxEditor(Align.RIGHT); + createSubnetEditor = new EntityModelCheckBoxEditor(Align.RIGHT); this.clustersTable = new EntityModelCellTable<ListModel>(SelectionMode.NONE, true); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); initEntityModelCellTable(constants, templates); @@ -243,10 +238,7 @@ vlanTagging.setLabel(constants.enableVlanTagLabel()); hasMtuEditor.setLabel(constants.overrideMtuLabel()); qosEditor.setLabel(constants.hostNetworkQos()); - - subnetNameEditor.setLabel(constants.nameExternalSubnet()); - subnetCidrEditor.setLabel(constants.cidrExternalSubnet()); - subnetIpVersionEditor.setLabel(constants.ipVersionExternalSubnet()); + createSubnetEditor.setLabel(constants.createSubnetLabel()); profilesLabel.setText(constants.profilesLabel()); } @@ -412,11 +404,13 @@ @Override public void edit(T model) { profilesEditor.edit(model.getProfiles()); + subnetWidget.edit(model.getSubnetModel()); } @Override public T flush() { profilesEditor.flush(); + subnetWidget.flush(); return null; } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.ui.xml index bac9641..0daf0cb 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/AbstractNetworkPopupView.ui.xml @@ -8,7 +8,8 @@ xmlns:we="urn:import:org.ovirt.engine.ui.webadmin.widget.editor" xmlns:v="urn:import:org.ovirt.engine.ui.webadmin.widget.vnicProfile" xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab" - xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"> + xmlns:w="urn:import:org.ovirt.engine.ui.common.widget" + xmlns:p="urn:import:org.ovirt.engine.ui.webadmin.widget.provider"> <ui:with field='resources' type='org.ovirt.engine.ui.webadmin.ApplicationResources' /> @@ -137,9 +138,8 @@ <t:DialogTab ui:field="subnetTab"> <t:content> <g:FlowPanel> - <ge:StringEntityModelTextBoxEditor ui:field="subnetNameEditor" /> - <ge:StringEntityModelTextBoxEditor ui:field="subnetCidrEditor" /> - <e:ListModelListBoxEditor ui:field="subnetIpVersionEditor"/> + <e:EntityModelCheckBoxEditor ui:field="createSubnetEditor" /> + <p:ExternalSubnetWidget ui:field="subnetWidget" /> </g:FlowPanel> </t:content> </t:DialogTab> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.java index 9586212..58983fe 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.java @@ -1,18 +1,14 @@ package org.ovirt.engine.ui.webadmin.section.main.view.popup.provider; -import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; -import org.ovirt.engine.ui.common.idhandler.WithElementId; import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; -import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelLabelEditor; -import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor; -import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer; import org.ovirt.engine.ui.uicommonweb.models.providers.NewExternalSubnetModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.ExternalSubnetPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.widget.provider.ExternalSubnetWidget; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.SimpleBeanEditorDriver; @@ -35,56 +31,41 @@ } @UiField - @Path("name.entity") - @WithElementId("name") - StringEntityModelTextBoxEditor nameEditor; - - @UiField - @Path("cidr.entity") - @WithElementId("cidr") - StringEntityModelTextBoxEditor cidrEditor; - - @UiField(provided = true) - @Path("ipVersion.selectedItem") - @WithElementId("ipVersion") - ListModelListBoxEditor<IpVersion> ipVersionEditor; + @Ignore + StringEntityModelLabelEditor networkEditor; @UiField @Ignore - StringEntityModelLabelEditor networkEditor; + ExternalSubnetWidget subnetWidget; private final Driver driver = GWT.create(Driver.class); @Inject public ExternalSubnetPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants) { super(eventBus, resources); - ipVersionEditor = new ListModelListBoxEditor<IpVersion>(new EnumRenderer<IpVersion>()); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); - localize(constants); ViewIdHandler.idHandler.generateAndSetIds(this); - driver.initialize(this); - } - private void localize(ApplicationConstants constants) { networkEditor.setLabel(constants.networkExternalSubnet()); - nameEditor.setLabel(constants.nameExternalSubnet()); - cidrEditor.setLabel(constants.cidrExternalSubnet()); - ipVersionEditor.setLabel(constants.ipVersionExternalSubnet()); + + driver.initialize(this); } @Override public void focusInput() { - nameEditor.setFocus(true); + subnetWidget.focusInput(); } @Override public void edit(final NewExternalSubnetModel subnet) { driver.edit(subnet); networkEditor.asValueBox().setValue(subnet.getNetwork().getEntity().getName()); + subnetWidget.edit(subnet.getSubnetModel()); } @Override public NewExternalSubnetModel flush() { + subnetWidget.flush(); return driver.flush(); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.ui.xml index 2f01f0d..aef7913 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.ui.xml @@ -3,15 +3,14 @@ <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" - xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic" > + xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic" + xmlns:p="urn:import:org.ovirt.engine.ui.webadmin.widget.provider" > <d:SimpleDialogPanel width="350px" height="220px"> <d:content> <g:FlowPanel> <ge:StringEntityModelLabelEditor ui:field="networkEditor" /> - <ge:StringEntityModelTextBoxEditor ui:field="nameEditor" /> - <ge:StringEntityModelTextBoxEditor ui:field="cidrEditor" /> - <e:ListModelListBoxEditor ui:field="ipVersionEditor"/> + <p:ExternalSubnetWidget ui:field="subnetWidget" /> </g:FlowPanel> </d:content> </d:SimpleDialogPanel> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/provider/ExternalSubnetWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/provider/ExternalSubnetWidget.java new file mode 100644 index 0000000..e93f9fd --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/provider/ExternalSubnetWidget.java @@ -0,0 +1,81 @@ +package org.ovirt.engine.ui.webadmin.widget.provider; + +import org.ovirt.engine.core.common.businessentities.network.ExternalSubnet.IpVersion; +import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.idhandler.WithElementId; +import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; +import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor; +import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer; +import org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget; +import org.ovirt.engine.ui.uicommonweb.models.providers.ExternalSubnetModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.editor.client.SimpleBeanEditorDriver; +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.inject.Inject; + +public class ExternalSubnetWidget extends AbstractModelBoundPopupWidget<ExternalSubnetModel> { + + interface Driver extends SimpleBeanEditorDriver<ExternalSubnetModel, ExternalSubnetWidget> { + } + + interface ViewUiBinder extends UiBinder<FlowPanel, ExternalSubnetWidget> { + ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); + } + + interface ViewIdHandler extends ElementIdHandler<ExternalSubnetWidget> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); + } + + private static ApplicationConstants constants = GWT.create(ApplicationConstants.class); + + @UiField + @Path("name.entity") + @WithElementId("name") + StringEntityModelTextBoxEditor nameEditor; + + @UiField + @Path("cidr.entity") + @WithElementId("cidr") + StringEntityModelTextBoxEditor cidrEditor; + + @UiField(provided = true) + @Path("ipVersion.selectedItem") + @WithElementId("ipVersion") + ListModelListBoxEditor<IpVersion> ipVersionEditor; + + private final Driver driver = GWT.create(Driver.class); + + @Inject + public ExternalSubnetWidget() { + ipVersionEditor = new ListModelListBoxEditor<IpVersion>(new EnumRenderer<IpVersion>()); + initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); + localize(constants); + ViewIdHandler.idHandler.generateAndSetIds(this); + driver.initialize(this); + } + + private void localize(ApplicationConstants constants) { + nameEditor.setLabel(constants.nameExternalSubnet()); + cidrEditor.setLabel(constants.cidrExternalSubnet()); + ipVersionEditor.setLabel(constants.ipVersionExternalSubnet()); + } + + @Override + public void focusInput() { + nameEditor.setFocus(true); + } + + @Override + public void edit(final ExternalSubnetModel subnet) { + driver.edit(subnet); + } + + @Override + public ExternalSubnetModel flush() { + return driver.flush(); + } +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/provider/ExternalSubnetWidget.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/provider/ExternalSubnetWidget.ui.xml new file mode 100644 index 0000000..cbd0372 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/provider/ExternalSubnetWidget.ui.xml @@ -0,0 +1,15 @@ +<?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:org.ovirt.engine.ui.common.widget.editor" + xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic" > + + <g:FlowPanel> + <ge:StringEntityModelTextBoxEditor ui:field="nameEditor" /> + <ge:StringEntityModelTextBoxEditor ui:field="cidrEditor" /> + <e:ListModelListBoxEditor ui:field="ipVersionEditor"/> + </g:FlowPanel> + +</ui:UiBinder> + -- To view, visit http://gerrit.ovirt.org/27364 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2d9c34a1ceb8c92e8ff813301186a2f5c9f499b4 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Mike Kolesnik <mkole...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches