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

Reply via email to