Mike Kolesnik has uploaded a new change for review. Change subject: webadmin: Ability to add external subnet ......................................................................
webadmin: Ability to add external subnet It is now possible to add a subnet on an external network provider. Change-Id: I7315f9ffe29f72d06deb56dcd637c53fba47b116 Signed-off-by: Mike Kolesnik <mkole...@redhat.com> --- 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/networks/NetworkExternalSubnetListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NewExternalSubnetModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties 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/gin/PresenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ExternalSubnetPopupPresenterWidget.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.ui.xml M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkExternalSubnetView.java 13 files changed, 387 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/89/22689/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 e3b87db..a31e5c2 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 @@ -72,6 +72,7 @@ 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; @@ -3444,6 +3445,10 @@ Frontend.getInstance().runQuery(VdcQueryType.GetExternalSubnetsOnProviderByNetwork, new IdQueryParameters(networkId), aQuery); } + public static List<IpVersion> getExternalSubnetIpVerionList() { + return Arrays.asList(IpVersion.values()); + } + public static void getNumberOfActiveVmsInCluster(AsyncQuery aQuery, Guid clusterId) { // do not replace a converter = just add if none provided if (aQuery.converterCallback == null) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkExternalSubnetListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkExternalSubnetListModel.java index c81e98b..2fb63c3 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkExternalSubnetListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkExternalSubnetListModel.java @@ -1,5 +1,6 @@ package org.ovirt.engine.ui.uicommonweb.models.networks; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -11,6 +12,7 @@ import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.NewExternalSubnetModel; import org.ovirt.engine.ui.uicommonweb.models.vms.RemoveExternalSubnetModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; @@ -19,15 +21,25 @@ public class NetworkExternalSubnetListModel extends SearchableListModel { + private UICommand newCommand; private UICommand removeCommand; public NetworkExternalSubnetListModel() { setTitle(ConstantsManager.getInstance().getConstants().externalSubnetsTitle()); setHashName("external_subnets"); //$NON-NLS-1$ + setNewCommand(new UICommand("New", this)); //$NON-NLS-1$ setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$ updateActionAvailability(); + } + + public UICommand getNewCommand() { + return newCommand; + } + + private void setNewCommand(UICommand newCommand) { + this.newCommand = newCommand; } public UICommand getRemoveCommand() { @@ -36,6 +48,22 @@ private void setRemoveCommand(UICommand value) { removeCommand = value; + } + + public void newSubnet() { + if (getWindow() != null) { + return; + } + + NewExternalSubnetModel model = new NewExternalSubnetModel(this); + setWindow(model); + initNetworkInModel(model); + } + + private void initNetworkInModel(NewExternalSubnetModel model) { + model.getNetwork().setItems(Arrays.asList(getEntity())); + model.getNetwork().setSelectedItem(getEntity()); + model.getNetwork().setIsChangable(false); } @SuppressWarnings("unchecked") @@ -106,6 +134,9 @@ } private void updateActionAvailability() { + NetworkView network = getEntity(); + + getNewCommand().setIsExecutionAllowed(network != null && network.isExternal()); getRemoveCommand().setIsExecutionAllowed((getSelectedItems() != null && getSelectedItems().size() > 0)); } @@ -134,7 +165,10 @@ public void executeCommand(UICommand command) { super.executeCommand(command); - if (command == getRemoveCommand()) { + if (command == getNewCommand()) { + newSubnet(); + } + else if (command == getRemoveCommand()) { remove(); } else if ("Cancel".equals(command.getName())) { //$NON-NLS-1$ 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 new file mode 100644 index 0000000..a8a26f6 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NewExternalSubnetModel.java @@ -0,0 +1,167 @@ +package org.ovirt.engine.ui.uicommonweb.models.providers; + +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.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.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; + +@SuppressWarnings("rawtypes") +public class NewExternalSubnetModel extends Model { + + private EntityModel<String> name; + private EntityModel<String> cidr; + private ListModel<NetworkView> network; + private ListModel<IpVersion> ipVersion; + private final EntityModel sourceModel; + private ExternalSubnet subnet = null; + + public NewExternalSubnetModel(EntityModel sourceModel) { + this.sourceModel = sourceModel; + + setName(new EntityModel<String>()); + setCidr(new EntityModel<String>()); + setNetwork(new ListModel<NetworkView>()); + setIpVersion(new ListModel<IpVersion>()); + getIpVersion().setItems(AsyncDataProvider.getExternalSubnetIpVerionList()); + + setTitle(ConstantsManager.getInstance().getConstants().externalSubnetTitle()); + setHashName("new_external_subnet"); //$NON-NLS-1$ + + initCommands(); + } + + protected void initCommands() { + UICommand okCommand = new UICommand("OnSave", this); //$NON-NLS-1$ + okCommand.setTitle(ConstantsManager.getInstance().getConstants().ok()); + okCommand.setIsDefault(true); + getCommands().add(okCommand); + UICommand cancelCommand = new UICommand("Cancel", this); //$NON-NLS-1$ + cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + cancelCommand.setIsCancel(true); + getCommands().add(cancelCommand); + } + + + public EntityModel<String> getName() { + return name; + } + + public void setName(EntityModel<String> name) { + this.name = name; + } + + public EntityModel<String> getCidr() { + return cidr; + } + + public void setCidr(EntityModel<String> cidr) { + this.cidr = cidr; + } + + public ListModel<NetworkView> getNetwork() { + return network; + } + + public void setNetwork(ListModel<NetworkView> network) { + this.network = network; + } + + public ListModel<IpVersion> getIpVersion() { + return ipVersion; + } + + public void setIpVersion(ListModel<IpVersion> ipVersion) { + this.ipVersion = ipVersion; + } + + private void onSave() + { + if (getProgress() != null) + { + return; + } + + if (!validate()) + { + return; + } + + // Save changes. + flush(); + + startProgress(null); + + Frontend.getInstance().runAction(VdcActionType.AddSubnetToProvider, + new AddExternalSubnetParameters(subnet, getNetwork().getSelectedItem().getId()), + new IFrontendActionAsyncCallback() { + @Override + public void executed(FrontendActionAsyncResult result) { + VdcReturnValueBase returnValue = result.getReturnValue(); + stopProgress(); + + if (returnValue != null && returnValue.getSucceeded()) + { + cancel(); + } + } + }, + this, + true); + } + + public void flush() { + if (subnet == null) { + subnet = new ExternalSubnet(); + } + subnet.setName(getName().getEntity()); + Network network = getNetwork().getSelectedItem(); + subnet.setExternalNetwork(network != null ? network.getProvidedBy() : null); + subnet.setCidr(getCidr().getEntity()); + subnet.setIpVersion(getIpVersion().getSelectedItem()); + } + + private void cancel() + { + sourceModel.setWindow(null); + } + + @Override + public void executeCommand(UICommand command) + { + super.executeCommand(command); + + if ("OnSave".equals(command.getName())) //$NON-NLS-1$ + { + onSave(); + } + else if ("Cancel".equals(command.getName())) //$NON-NLS-1$ + { + cancel(); + } + } + + + public boolean validate() + { + getName().validateEntity(new IValidation[] { new NotEmptyValidation(), new AsciiNameValidation() }); + getCidr().validateEntity(new IValidation[] { new NotEmptyValidation() }); + getIpVersion().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); + + return getName().getIsValid() && getCidr().getIsValid() && getIpVersion().getIsValid(); + } +} diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java index d853f42..1f7125b 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/LocalizedEnums.java @@ -687,6 +687,8 @@ String VdcActionType___RemoveVnicProfile(); + String VdcActionType___AddSubnetToProvider(); + String VdcActionType___RemoveSubnetFromProvider(); String VdcObjectType___AdElements(); diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index 842c665..5837391 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -463,6 +463,9 @@ @DefaultStringValue("VNIC Profiles") String vnicProfilesTitle(); + @DefaultStringValue("External Subnet") + String externalSubnetTitle(); + @DefaultStringValue("External Subnets") String externalSubnetsTitle(); diff --git a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties index 4d25bae..c7f5c81 100644 --- a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties +++ b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/LocalizedEnums.properties @@ -341,6 +341,7 @@ VdcActionType___AddVnicProfile=Add Vnic Profile VdcActionType___UpdateProfile=Update Vnic Profile VdcActionType___RemoveVnicProfile=Remove Vnic Profile +VdcActionType___AddSubnetToProvider=Add Subnet to Provider VdcActionType___RemoveSubnetFromProvider=Remove Subnet from Provider VdcObjectType___AdElements=Active Directory Users and Groups VdcObjectType___System=System 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 a6a5b68..6126f69 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 @@ -1167,6 +1167,9 @@ @DefaultStringValue("External ID") String externalIdExternalSubnet(); + @DefaultStringValue("Network") + String networkExternalSubnet(); + @DefaultStringValue("Name") String nameExternalSubnet(); @@ -1899,6 +1902,9 @@ @DefaultStringValue("Remove") String removeNetworkProfile(); + @DefaultStringValue("New") + String newNetworkExternalSubnet(); + @DefaultStringValue("Remove") String removeNetworkExternalSubnet(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java index 703d291..90608fd 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java @@ -63,6 +63,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.pool.PoolEditPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.pool.PoolNewPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.profile.VnicProfilePopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.ExternalSubnetPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.ImportNetworksPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.ProviderPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.quota.ChangeQuotaPopupPresenterWidget; @@ -274,6 +275,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.popup.pool.PoolEditPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.pool.PoolNewPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.profile.VnicProfilePopupView; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.provider.ExternalSubnetPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.provider.ImportNetworksPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.provider.ProviderPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.quota.ChangeQuotaPopupView; @@ -1331,5 +1333,10 @@ bindPresenterWidget(VnicProfilePopupPresenterWidget.class, VnicProfilePopupPresenterWidget.ViewDef.class, VnicProfilePopupView.class); + + // External Subnet + bindPresenterWidget(ExternalSubnetPopupPresenterWidget.class, + ExternalSubnetPopupPresenterWidget.ViewDef.class, + ExternalSubnetPopupView.class); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java index 8c957ce..5a6d681 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/NetworkModule.java @@ -46,6 +46,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksInterfacePopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksManagementPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.profile.VnicProfilePopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.ExternalSubnetPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.ImportNetworksPopupPresenterWidget; import com.google.gwt.event.shared.EventBus; @@ -151,6 +152,7 @@ @Singleton public SearchableDetailModelProvider<ExternalSubnet, NetworkListModel, NetworkExternalSubnetListModel> getExternalSubnetListProvider(EventBus eventBus, Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, + final Provider<ExternalSubnetPopupPresenterWidget> newExternalSubnetPopupProvider, final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider) { return new SearchableDetailTabModelProvider<ExternalSubnet, NetworkListModel, NetworkExternalSubnetListModel>(eventBus, defaultConfirmPopupProvider, @@ -158,6 +160,17 @@ NetworkExternalSubnetListModel.class) { @Override + public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(NetworkExternalSubnetListModel source, + UICommand lastExecutedCommand, + Model windowModel) { + if (lastExecutedCommand == getModel().getNewCommand()) { + return newExternalSubnetPopupProvider.get(); + } + + return super.getModelPopup(source, lastExecutedCommand, windowModel); + } + + @Override public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(NetworkExternalSubnetListModel source, UICommand lastExecutedCommand) { if (lastExecutedCommand == getModel().getRemoveCommand()) { //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ExternalSubnetPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ExternalSubnetPopupPresenterWidget.java new file mode 100644 index 0000000..b0e15ea --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ExternalSubnetPopupPresenterWidget.java @@ -0,0 +1,23 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider; + +import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; +import org.ovirt.engine.ui.uicommonweb.models.providers.NewExternalSubnetModel; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + +public class ExternalSubnetPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidget<NewExternalSubnetModel, ExternalSubnetPopupPresenterWidget.ViewDef> { + + public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<NewExternalSubnetModel> { + } + + @Inject + public ExternalSubnetPopupPresenterWidget(EventBus eventBus, ViewDef view) { + super(eventBus, view); + } + + @Override + public void init(NewExternalSubnetModel model) { + super.init(model); + } +} 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 new file mode 100644 index 0000000..d0c5b3a --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.java @@ -0,0 +1,96 @@ +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.core.common.businessentities.network.Network; +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.StringEntityModelTextBoxEditor; +import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer; +import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer; +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 com.google.gwt.core.client.GWT; +import com.google.gwt.editor.client.SimpleBeanEditorDriver; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.inject.Inject; + +public class ExternalSubnetPopupView extends AbstractModelBoundPopupView<NewExternalSubnetModel> implements ExternalSubnetPopupPresenterWidget.ViewDef { + + interface Driver extends SimpleBeanEditorDriver<NewExternalSubnetModel, ExternalSubnetPopupView> { + } + + interface ViewUiBinder extends UiBinder<SimpleDialogPanel, ExternalSubnetPopupView> { + ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); + } + + interface ViewIdHandler extends ElementIdHandler<ExternalSubnetPopupView> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.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") + protected ListModelListBoxEditor<IpVersion> ipVersionEditor; + + @UiField(provided = true) + @Path("network.selectedItem") + ListModelListBoxEditor<Object> networkEditor; + + private final Driver driver = GWT.create(Driver.class); + + @Inject + public ExternalSubnetPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants) { + super(eventBus, resources); + networkEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + @Override + public String renderNullSafe(Object object) { + return ((Network) object).getName(); + } + }); + 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()); + } + + @Override + public void focusInput() { + nameEditor.setFocus(true); + } + + @Override + public void edit(final NewExternalSubnetModel subnet) { + driver.edit(subnet); + } + + @Override + public NewExternalSubnetModel 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 new file mode 100644 index 0000000..67e8f75 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ExternalSubnetPopupView.ui.xml @@ -0,0 +1,23 @@ +<?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: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:k="urn:import:org.ovirt.engine.ui.common.widget.form.key_value" > + + <ui:with field='constants' type='org.ovirt.engine.ui.webadmin.ApplicationConstants' /> + + <d:SimpleDialogPanel width="350px" height="220px"> + <d:content> + <g:FlowPanel> + <e:ListModelListBoxEditor ui:field="networkEditor" /> + <ge:StringEntityModelTextBoxEditor ui:field="nameEditor" /> + <ge:StringEntityModelTextBoxEditor ui:field="cidrEditor" /> + <e:ListModelListBoxEditor ui:field="ipVersionEditor"/> + </g:FlowPanel> + </d:content> + </d:SimpleDialogPanel> + +</ui:UiBinder> + diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkExternalSubnetView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkExternalSubnetView.java index 1c781c4..01eff55 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkExternalSubnetView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkExternalSubnetView.java @@ -67,6 +67,12 @@ getTable().addColumn(externalIdColumn, constants.externalIdExternalSubnet(), "300px"); //$NON-NLS-1$ + getTable().addActionButton(new WebAdminButtonDefinition<ExternalSubnet>(constants.newNetworkExternalSubnet()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getNewCommand(); + } + }); getTable().addActionButton(new WebAdminButtonDefinition<ExternalSubnet>(constants.removeNetworkExternalSubnet()) { @Override protected UICommand resolveCommand() { -- To view, visit http://gerrit.ovirt.org/22689 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7315f9ffe29f72d06deb56dcd637c53fba47b116 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Mike Kolesnik <mkole...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches