Alona Kaplan has uploaded a new change for review. Change subject: webadmin: Discover Network ......................................................................
webadmin: Discover Network Change-Id: Ic4f9e158168066e12e5cc9cc8c8f585c97fc1de8 Signed-off-by: Alona Kaplan <alkap...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.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/gin/PresenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/DiscoverNetworkPopupPresenterWidget.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/DiscoverNetworkPopupView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/DiscoverNetworkPopupView.ui.xml 11 files changed, 494 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/24/11124/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 1b0e739..b32daba 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 @@ -55,7 +55,6 @@ import org.ovirt.engine.core.common.queries.CommandVersionsInfo; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.common.queries.GetAllAttachableDisks; -import org.ovirt.engine.core.common.queries.InterfaceAndIdQueryParameters; import org.ovirt.engine.core.common.queries.GetAllDisksByVmIdParameters; import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters; import org.ovirt.engine.core.common.queries.GetAllImagesListByStoragePoolIdParameters; @@ -83,6 +82,7 @@ import org.ovirt.engine.core.common.queries.GetVmTemplatesByStoragePoolIdParameters; import org.ovirt.engine.core.common.queries.GetVmTemplatesDisksParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.InterfaceAndIdQueryParameters; import org.ovirt.engine.core.common.queries.IsVmPoolWithSameNameExistsParameters; import org.ovirt.engine.core.common.queries.IsVmTemlateWithSameNameExistParameters; import org.ovirt.engine.core.common.queries.IsVmWithSameNameExistParameters; @@ -2941,4 +2941,20 @@ Frontend.RunQuery(VdcQueryType.GetVmGuestAgentInterfacesByVmId, new IdQueryParameters(vmId), aQuery); } + public static void GetExternalNetworkList(AsyncQuery aQuery, Guid providerId) { + aQuery.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) + { + if (source == null) + { + return new ArrayList<Network>(); + } + return source; + } + }; + Frontend.RunQuery(VdcQueryType.GetAllExternalNetworksOnProvider, + new IdQueryParameters(providerId), + aQuery); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java new file mode 100644 index 0000000..2822145 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/DiscoverNetworksModel.java @@ -0,0 +1,32 @@ +package org.ovirt.engine.ui.uicommonweb.models.providers; + +import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.ui.uicommonweb.models.Model; + +public class DiscoverNetworksModel extends Model { + + public ListModel getDataCenters() { + return dataCenters; + } + + public void setDataCenters(ListModel dc) { + this.dataCenters = dc; + } + + public ListModel getNetworkList() { + return networkList; + } + + public void setNetworkList(ListModel networkList) { + this.networkList = networkList; + } + + private ListModel dataCenters; + private ListModel networkList; + + public DiscoverNetworksModel() { + setDataCenters(new ListModel()); + setNetworkList(new ListModel()); + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java new file mode 100644 index 0000000..e6a1a32 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ExternalNetwork.java @@ -0,0 +1,30 @@ +package org.ovirt.engine.ui.uicommonweb.models.providers; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; + +public class ExternalNetwork extends EntityModel { + + Network network; + boolean attached; + + public ExternalNetwork() { + } + + public Network getNetwork() { + return network; + } + + public void setNetwork(Network network) { + this.network = network; + } + + public boolean isAttached() { + return attached; + } + + public void setAttached(boolean attached) { + this.attached = attached; + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.java index 62bf7f0..8fb02fd 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.java @@ -3,10 +3,24 @@ import java.util.ArrayList; import java.util.List; +import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters; +import org.ovirt.engine.core.common.action.ProviderParameters; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.businessentities.storage_pool; +import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.compat.StringHelper; +import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; @@ -69,15 +83,135 @@ return; } - super.SyncSearch(VdcQueryType.GetAllNetworksOnProvider, new IdQueryParameters(provider.getId())); + super.SyncSearch(VdcQueryType.GetAllNetworksForProvider, new IdQueryParameters(provider.getId())); } private void discover() { + if (getWindow() != null) + { + return; + } + + final DiscoverNetworksModel model = new DiscoverNetworksModel(); + + model.setTitle(ConstantsManager.getInstance().getConstants().discoverNetworksTitle()); + model.setHashName("discover_networks"); //$NON-NLS-1$ + + AsyncQuery _asyncQuery = new AsyncQuery(); + _asyncQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void OnSuccess(Object innerModel, Object result) + { + ArrayList<storage_pool> dataCenters = (ArrayList<storage_pool>) result; + model.getDataCenters().setItems(dataCenters); + model.getDataCenters().setSelectedItem(Linq.FirstOrDefault(dataCenters)); + + AsyncQuery _asyncQuery2 = new AsyncQuery(); + _asyncQuery2.asyncCallback = new INewAsyncCallback() { + @Override + public void OnSuccess(Object innerModel, Object result) + { + List<Network> networks = (ArrayList<Network>) result; + List<ExternalNetwork> items = new ArrayList<ExternalNetwork>(); + for (Network network : networks) { + ExternalNetwork externalNetwork = new ExternalNetwork(); + externalNetwork.setNetwork(network); + externalNetwork.setAttached(false); + items.add(externalNetwork); + } + model.getNetworkList().setItems(items); + + setWindow(model); + + UICommand tempVar = new UICommand("OnDiscover", ProviderNetworkListModel.this); //$NON-NLS-1$ + tempVar.setTitle(ConstantsManager.getInstance().getConstants().importNetworksTitle()); + tempVar.setIsDefault(true); + model.getCommands().add(tempVar); + UICommand tempVar2 = new UICommand("Cancel", ProviderNetworkListModel.this); //$NON-NLS-1$ + tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + tempVar2.setIsCancel(true); + model.getCommands().add(tempVar2); + } + }; + AsyncDataProvider.GetExternalNetworkList(_asyncQuery2, getEntity().getId()); + } + }; + AsyncDataProvider.GetDataCenterList(_asyncQuery); } - private void remove() + public void onDiscover() { + DiscoverNetworksModel model = (DiscoverNetworksModel) getWindow(); + ArrayList<VdcActionParametersBase> mulipleActionParameters = + new ArrayList<VdcActionParametersBase>(); + + Guid dcId = ((storage_pool) (model.getDataCenters().getSelectedItem())).getId(); + for (ExternalNetwork externalNetwork : (List<ExternalNetwork>) model.getNetworkList().getItems()) { + + mulipleActionParameters.add(new AddNetworkStoragePoolParameters(dcId, externalNetwork.getNetwork())); + } + + Frontend.RunMultipleAction(VdcActionType.AddNetwork, mulipleActionParameters); + + cancel(); + } + + public void remove() { + if (getWindow() != null) + { + return; + } + + ConfirmationModel model = new ConfirmationModel(); + setWindow(model); + model.setTitle(ConstantsManager.getInstance().getConstants().removeProviderTitle()); + model.setHashName("remove_provider"); //$NON-NLS-1$ + model.setMessage(ConstantsManager.getInstance().getConstants().providersMsg()); + + ArrayList<String> list = new ArrayList<String>(); + for (Network a : Linq.<Network> Cast(getSelectedItems())) + { + list.add(a.getName()); + } + model.setItems(list); + + UICommand tempVar = new UICommand("OnRemove", this); //$NON-NLS-1$ + tempVar.setTitle(ConstantsManager.getInstance().getConstants().ok()); + tempVar.setIsDefault(true); + model.getCommands().add(tempVar); + UICommand tempVar2 = new UICommand("Cancel", this); //$NON-NLS-1$ + tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel()); + tempVar2.setIsCancel(true); + model.getCommands().add(tempVar2); + } + + public void onRemove() + { + ConfirmationModel model = (ConfirmationModel) getWindow(); + + if (model.getProgress() != null) + { + return; + } + + ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); + for (Network a : Linq.<Network> Cast(getSelectedItems())) + { + parameters.add(new ProviderParameters(getEntity())); + } + + model.StartProgress(null); + + // Frontend.RunMultipleAction(VdcActionType.RemoveProvider, parameters, + // new IFrontendMultipleActionAsyncCallback() { + // @Override + // public void Executed(FrontendMultipleActionAsyncResult result) { + // StopProgress(); + // cancel(); + // + // } + // }, model); } @Override @@ -108,7 +242,24 @@ else if (command == getRemoveCommand()) { remove(); + } else if (StringHelper.stringsEqual(command.getName(), "OnSave")) //$NON-NLS-1$ + { + onDiscover(); } + else if (StringHelper.stringsEqual(command.getName(), "Cancel")) //$NON-NLS-1$ + { + cancel(); + } + else if (StringHelper.stringsEqual(command.getName(), "OnRemove")) //$NON-NLS-1$ + { + onRemove(); + } + } + + public void cancel() + { + setWindow(null); + setConfirmWindow(null); } @Override diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java index bf92055..793aad8 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java @@ -1712,4 +1712,16 @@ // Provider @DefaultStringValue("Networks") String providerNetworksTitle(); + + @DefaultStringValue("Remove Provider(s)") + String removeProviderTitle(); + + @DefaultStringValue("Provider(s)") + String providersMsg(); + + @DefaultStringValue("DiscoverNetworks") + String discoverNetworksTitle(); + + @DefaultStringValue("Import") + String importNetworksTitle(); } 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 5ef671c..07b87a2 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 @@ -2540,4 +2540,10 @@ @DefaultStringValue("Discover") String discoverProviderNetwork(); + + @DefaultStringValue("Name") + String nameNetworkHeader(); + + @DefaultStringValue("ID") + String idNetworkHeader(); } 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 226a6bd..429df95 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 @@ -52,6 +52,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.SetupNetworksManagementPopupPresenterWidget; 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.provider.DiscoverNetworkPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.quota.ChangeQuotaPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.quota.EditQuotaClusterPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.quota.EditQuotaStoragePopupPresenterWidget; @@ -236,6 +237,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.popup.host.SetupNetworksManagementPopupView; 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.provider.DiscoverNetworkPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.quota.ChangeQuotaPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.quota.EditQuotaClusterPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.quota.EditQuotaStoragePopupView; @@ -1167,5 +1169,10 @@ bindPresenterWidget(EditNetworkPopupPresenterWidget.class, EditNetworkPopupPresenterWidget.ViewDef.class, EditNetworkPopupView.class); + + // Provider + bindPresenterWidget(DiscoverNetworkPopupPresenterWidget.class, + DiscoverNetworkPopupPresenterWidget.ViewDef.class, + DiscoverNetworkPopupView.class); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java index 762cbbd..a113e0e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java @@ -16,6 +16,7 @@ import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderListModel; import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderNetworkListModel; import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.DiscoverNetworkPopupPresenterWidget; import com.google.gwt.inject.client.AbstractGinModule; import com.google.inject.Provider; @@ -73,7 +74,7 @@ @Provides @Singleton public SearchableDetailModelProvider<Network, ProviderListModel, ProviderNetworkListModel> getNetworkClusterListProvider(ClientGinjector ginjector, - // final Provider<DicoverProviderPopupPresenterWidget> discoverPopupProvider, + final Provider<DiscoverNetworkPopupPresenterWidget> discoverNetworkPopupProvider, final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider) { return new SearchableDetailTabModelProvider<Network, ProviderListModel, ProviderNetworkListModel>(ginjector, ProviderListModel.class, @@ -82,11 +83,11 @@ public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(ProviderNetworkListModel source, UICommand lastExecutedCommand, Model windowModel) { - // if (lastExecutedCommand == getModel().getDiscoverCommand()) { - // return discoverPopupProvider.get(); - // } else { + if (lastExecutedCommand == getModel().getDiscoverCommand()) { + return discoverNetworkPopupProvider.get(); + } else { return super.getModelPopup(source, lastExecutedCommand, windowModel); - // } + } } @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/DiscoverNetworkPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/DiscoverNetworkPopupPresenterWidget.java new file mode 100644 index 0000000..9573fa1 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/DiscoverNetworkPopupPresenterWidget.java @@ -0,0 +1,27 @@ +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.ListModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.DiscoverNetworksModel; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + +public class DiscoverNetworkPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidget<DiscoverNetworksModel, DiscoverNetworkPopupPresenterWidget.ViewDef> { + + public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<DiscoverNetworksModel> { + void setNetworkList(ListModel networkList); + } + + @Inject + public DiscoverNetworkPopupPresenterWidget(EventBus eventBus, ViewDef view) { + super(eventBus, view); + } + + @Override + public void init(DiscoverNetworksModel model) { + super.init(model); + getView().setNetworkList(model.getNetworkList()); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/DiscoverNetworkPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/DiscoverNetworkPopupView.java new file mode 100644 index 0000000..0b573e9 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/DiscoverNetworkPopupView.java @@ -0,0 +1,174 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.popup.provider; + +import java.util.ArrayList; + +import org.ovirt.engine.core.common.businessentities.storage_pool; +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.EntityModelCellTable; +import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable.SelectionMode; +import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; +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; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.DiscoverNetworksModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.ExternalNetwork; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationResources; +import org.ovirt.engine.ui.webadmin.ApplicationTemplates; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.DiscoverNetworkPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.widget.table.column.CheckboxHeader; + +import com.google.gwt.cell.client.Cell.Context; +import com.google.gwt.cell.client.FieldUpdater; +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.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.inject.Inject; + +public class DiscoverNetworkPopupView extends AbstractModelBoundPopupView<DiscoverNetworksModel> implements DiscoverNetworkPopupPresenterWidget.ViewDef { + + interface Driver extends SimpleBeanEditorDriver<DiscoverNetworksModel, DiscoverNetworkPopupView> { + Driver driver = GWT.create(Driver.class); + } + + interface ViewUiBinder extends UiBinder<SimpleDialogPanel, DiscoverNetworkPopupView> { + ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); + } + + @UiField(provided = true) + @Path(value = "dataCenters.selectedItem") + @WithElementId("dataCenter") + public ListModelListBoxEditor<Object> dataCenterEditor; + + @UiField(provided = true) + @Ignore + public final EntityModelCellTable<ListModel> networksTable; + + @Inject + public DiscoverNetworkPopupView(EventBus eventBus, ApplicationResources resources, + ApplicationConstants constants, ApplicationTemplates templates) { + super(eventBus, resources); + // Initialize Editors + dataCenterEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + @Override + public String renderNullSafe(Object object) { + return ((storage_pool) object).getname(); + } + }); + this.networksTable = new EntityModelCellTable<ListModel>(SelectionMode.NONE, true); + initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); + initEntityModelCellTable(constants, templates); + localize(constants); + Driver.driver.initialize(this); + } + + protected void localize(ApplicationConstants constants) { + dataCenterEditor.setLabel(constants.networkPopupDataCenterLabel()); + } + + @Override + public void focusInput() { + dataCenterEditor.setFocus(true); + } + + @SuppressWarnings("unchecked") + Iterable<ExternalNetwork> getNetworksTableItems() { + ListModel tableModel = networksTable.flush(); + return tableModel != null && tableModel.getItems() != null ? tableModel.getItems() + : new ArrayList<ExternalNetwork>(); + } + + void refreshNetworksTable() { + networksTable.edit(networksTable.flush()); + } + + void initEntityModelCellTable(final ApplicationConstants constants, final ApplicationTemplates templates) { + CheckboxHeader assignAllHeader = new CheckboxHeader(templates.textForCheckBoxHeader(constants.attachAll())) { + @Override + protected void selectionChanged(Boolean value) { + for (ExternalNetwork model : getNetworksTableItems()) { + model.setAttached(value); + } + refreshNetworksTable(); + } + + @Override + public Boolean getValue() { + for (ExternalNetwork model : getNetworksTableItems()) { + if (!model.isAttached()) { + return false; + } + } + return true; + } + + @Override + public boolean isEnabled() { + return true; + } + }; + + networksTable.addColumn(new CheckboxColumn<EntityModel>(new FieldUpdater<EntityModel, Boolean>() { + @Override + public void update(int index, EntityModel model, Boolean value) { + ExternalNetwork externalNetwork = (ExternalNetwork) model; + externalNetwork.setAttached(value); + refreshNetworksTable(); + } + }) { + @Override + public Boolean getValue(EntityModel model) { + return ((ExternalNetwork) model).isAttached(); + } + + @Override + protected boolean canEdit(EntityModel model) { + return true; + } + + @Override + public void render(Context context, EntityModel object, SafeHtmlBuilder sb) { + super.render(context, object, sb); + sb.append(templates.textForCheckBox(constants.attach())); + } + + }, assignAllHeader, "80px"); //$NON-NLS-1$ + + networksTable.addEntityModelColumn(new TextColumnWithTooltip<EntityModel>() { + @Override + public String getValue(EntityModel model) { + return ((ExternalNetwork) model).getNetwork().getName(); + } + }, constants.nameNetworkHeader()); + + networksTable.addEntityModelColumn(new TextColumnWithTooltip<EntityModel>() { + @Override + public String getValue(EntityModel model) { + return ((ExternalNetwork) model).getNetwork().getId().toString(); + } + }, constants.idNetworkHeader()); + } + + @Override + public void edit(DiscoverNetworksModel object) { + Driver.driver.edit(object); + } + + @Override + public DiscoverNetworksModel flush() { + return Driver.driver.flush(); + } + + @Override + public void setNetworkList(ListModel networkList) { + networksTable.edit(networkList); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/DiscoverNetworkPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/DiscoverNetworkPopupView.ui.xml new file mode 100644 index 0000000..c99f179 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/DiscoverNetworkPopupView.ui.xml @@ -0,0 +1,30 @@ +<?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:we="urn:import:org.ovirt.engine.ui.webadmin.widget.editor"> + + <ui:with field='constants' type='org.ovirt.engine.ui.webadmin.ApplicationConstants' /> + + <ui:style> + .indent { + padding-left: 20px; + } + </ui:style> + + <d:SimpleDialogPanel ui:field="mainPanel" width="435px" height="520px"> + <d:content> + <g:VerticalPanel> + <e:ListModelListBoxEditor ui:field="dataCenterEditor"/> + <g:VerticalPanel> + <g:HTMLPanel addStyleNames="{style.indent}"> + <g:ScrollPanel height="160px" width="100%"> + <e:EntityModelCellTable ui:field="networksTable" /> + </g:ScrollPanel> + </g:HTMLPanel> + </g:VerticalPanel> + </g:VerticalPanel> + </d:content> + </d:SimpleDialogPanel> + +</ui:UiBinder> -- To view, visit http://gerrit.ovirt.org/11124 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic4f9e158168066e12e5cc9cc8c8f585c97fc1de8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alona Kaplan <alkap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches