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

Reply via email to