Alona Kaplan has uploaded a new change for review.

Change subject: webadmin: Netwrok as Main Tab- (Phase 3) (wip)
......................................................................

webadmin: Netwrok as Main Tab- (Phase 3) (wip)

Add to Network->Host subtab radio button that will show either-
1.All the hosts that this network is attached to.
2.All the hosts where this network attached to the cluster but not to the
host.


Change-Id: I538a4269315d4c3e005d6e4c0847d9d96d0f469e
Signed-off-by: Alona Kaplan <alkap...@redhat.com>
---
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/ViewRadioGroup.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ViewFilter.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostFilter.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.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/section/main/view/tab/network/SubTabNetworkClusterView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java
10 files changed, 473 insertions(+), 43 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/23/8623/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/ViewRadioGroup.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/ViewRadioGroup.java
new file mode 100644
index 0000000..83aae29
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/ViewRadioGroup.java
@@ -0,0 +1,74 @@
+package org.ovirt.engine.ui.common.view;
+
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.ovirt.engine.ui.uicommonweb.ViewFilter;
+
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.RadioButton;
+import com.google.gwt.user.client.ui.Widget;
+
+public class ViewRadioGroup<K> extends Composite {
+
+    private final List<? extends ViewFilter<K>> items;
+    private final Map<K, RadioButton> buttons = new HashMap<K, RadioButton>();
+
+
+    public ViewRadioGroup(List<? extends ViewFilter<K>> items) {
+        this.items = items;
+        initWidget(getRadioGroupPanel());
+    }
+
+
+    private Widget getRadioGroupPanel() {
+        FlowPanel buttonsPanel = new FlowPanel();
+        buttonsPanel.getElement().getStyle().setProperty("marginLeft", 
"auto"); //$NON-NLS-1$ //$NON-NLS-2$
+        buttonsPanel.getElement().getStyle().setProperty("marginRight", 
"auto"); //$NON-NLS-1$ //$NON-NLS-2$
+
+        for (ViewFilter<K> item : items){
+            RadioButton radioButton = new RadioButton("viewRadioGroup", 
item.toString()); //$NON-NLS-1$
+            radioButton.getElement().getStyle().setMarginRight(20, Unit.PX);
+            radioButton.setText(item.getText());
+            buttons.put(item.getValue(), radioButton);
+            buttonsPanel.add(radioButton);
+        }
+
+        setSelectedValue(items.get(0).getValue());
+
+        return buttonsPanel;
+    }
+
+    public void addClickHandler(ClickHandler clickHandler) {
+        for (RadioButton button : buttons.values()){
+            button.addClickHandler(clickHandler);
+        }
+    }
+
+    public RadioButton getButton(String name) {
+        return buttons.get(name);
+    }
+
+    public K getSelectedValue() {
+        for (Map.Entry<K, RadioButton> buttonEntry : buttons.entrySet()){
+            if (buttonEntry.getValue().getValue()){
+                return buttonEntry.getKey();
+            }
+        }
+        return null;
+    }
+
+    public void setSelectedValue(K value) {
+        RadioButton button = buttons.get(value);
+
+        if (button != null)
+        {
+            button.setValue(true);
+        }
+    }
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ViewFilter.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ViewFilter.java
new file mode 100644
index 0000000..f89cb6a
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ViewFilter.java
@@ -0,0 +1,7 @@
+package org.ovirt.engine.ui.uicommonweb;
+
+public interface ViewFilter<T> {
+    String getText();
+
+    T getValue();
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
index 9ac2236..44eefa0 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
@@ -528,13 +528,14 @@
         clusterList.setIsAvailable(model.getType() == 
SystemTreeItemType.DataCenter
                 || model.getType() == SystemTreeItemType.Clusters || 
model.getType() == SystemTreeItemType.Cluster
                 || model.getType() == SystemTreeItemType.Cluster_Gluster
-                || model.getType() == SystemTreeItemType.Storage || 
model.getType() == SystemTreeItemType.System);
+                || model.getType() == SystemTreeItemType.Storage || 
model.getType() == SystemTreeItemType.Network
+                || model.getType() == SystemTreeItemType.System);
 
         hostList.setIsAvailable(model.getType() == 
SystemTreeItemType.DataCenter
                 || model.getType() == SystemTreeItemType.Cluster
                 || model.getType() == SystemTreeItemType.Cluster_Gluster || 
model.getType() == SystemTreeItemType.Hosts
                 || model.getType() == SystemTreeItemType.Host || 
model.getType() == SystemTreeItemType.Storage
-                || model.getType() == SystemTreeItemType.System);
+                || model.getType() == SystemTreeItemType.Network || 
model.getType() == SystemTreeItemType.System);
 
         volumeList.setIsAvailable(model.getType() == 
SystemTreeItemType.Cluster_Gluster
                 || model.getType() == SystemTreeItemType.Volume
@@ -568,7 +569,8 @@
         vmList.setIsAvailable(model.getType() == SystemTreeItemType.DataCenter
                 || model.getType() == SystemTreeItemType.Cluster
                 || model.getType() == SystemTreeItemType.Cluster_Gluster || 
model.getType() == SystemTreeItemType.Host
-                || isDataStorage || model.getType() == SystemTreeItemType.VMs
+                || model.getType() == SystemTreeItemType.Network || 
isDataStorage
+                || model.getType() == SystemTreeItemType.VMs
                 || model.getType() == SystemTreeItemType.System);
 
         if (poolList != null)
@@ -579,7 +581,8 @@
         templateList.setIsAvailable(model.getType() == 
SystemTreeItemType.DataCenter
                 || model.getType() == SystemTreeItemType.Cluster
                 || model.getType() == SystemTreeItemType.Cluster_Gluster || 
model.getType() == SystemTreeItemType.Host
-                || isDataStorage || model.getType() == 
SystemTreeItemType.Templates
+                || model.getType() == SystemTreeItemType.Network || 
isDataStorage
+                || model.getType() == SystemTreeItemType.Templates
                 || model.getType() == SystemTreeItemType.System);
 
         userList.setIsAvailable(model.getType() == SystemTreeItemType.System);
@@ -1227,7 +1230,8 @@
             case Networks: {
                 if (networkList.IsSearchStringMatch(source))
                 {
-                    prefix.argvalue = StringFormat.format("Network: 
datacenter.name = %1$s", model.getParent().getTitle()); //$NON-NLS-1$
+                    prefix.argvalue =
+                            StringFormat.format("Network: datacenter.name = 
%1$s", model.getParent().getTitle()); //$NON-NLS-1$
                 }
             }
                 break;
@@ -1235,27 +1239,32 @@
                 if (networkList.IsSearchStringMatch(source))
                 {
                     // TODO get dc name from treeItem!!!
-                    prefix.argvalue = StringFormat.format("Network: name = 
%1$s datacenter.name = %2$s", model.getTitle(), model.getParent().getTitle()); 
//$NON-NLS-1$
+                    prefix.argvalue =
+                            StringFormat.format("Network: name = %1$s 
datacenter.name = %2$s", model.getTitle(), model.getParent().getTitle()); 
//$NON-NLS-1$
                 }
                 else if (clusterList.IsSearchStringMatch(source))
                 {
                     // TODO get dc name from treeItem!!!
-                    prefix.argvalue = StringFormat.format("Cluster: 
network.name = %1$s datacenter.name = %2$s", model.getTitle()); //$NON-NLS-1$
+                    prefix.argvalue =
+                            StringFormat.format("Cluster: network.name = %1$s 
datacenter.name = %2$s", model.getTitle()); //$NON-NLS-1$
                 }
                 else if (hostList.IsSearchStringMatch(source))
                 {
                     // TODO get dc name from treeItem!!!
-                    prefix.argvalue = StringFormat.format("Host: network.name 
= %1$s datacenter.name = %2$s", model.getTitle()); //$NON-NLS-1$
+                    prefix.argvalue =
+                            StringFormat.format("Host: network.name = %1$s 
datacenter.name = %2$s", model.getTitle()); //$NON-NLS-1$
                 }
                 else if (vmList.IsSearchStringMatch(source))
                 {
                     // TODO get dc name from treeItem!!!
-                    prefix.argvalue = StringFormat.format("Vms: network.name = 
%1$s datacenter.name = %2$s", model.getTitle()); //$NON-NLS-1$
+                    prefix.argvalue =
+                            StringFormat.format("Vms: network.name = %1$s 
datacenter.name = %2$s", model.getTitle()); //$NON-NLS-1$
                 }
                 else if (templateList.IsSearchStringMatch(source))
                 {
                     // TODO get dc name from treeItem!!!
-                    prefix.argvalue = StringFormat.format("Template: 
network.name = %1$s datacenter.name = %2$s", model.getTitle()); //$NON-NLS-1$
+                    prefix.argvalue =
+                            StringFormat.format("Template: network.name = %1$s 
datacenter.name = %2$s", model.getTitle()); //$NON-NLS-1$
                 }
             }
                 break;
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java
index 0faf872..c931b3e 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkClusterListModel.java
@@ -1,13 +1,186 @@
 package org.ovirt.engine.ui.uicommonweb.models.networks;
 
+import java.util.ArrayList;
+
 import org.ovirt.engine.core.common.businessentities.Network;
+import org.ovirt.engine.core.common.queries.NetworkIdParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.PropertyChangedEventArgs;
-import org.ovirt.engine.core.compat.StringFormat;
+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.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
+import 
org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkManageModel;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
 
 @SuppressWarnings("unused")
 public class NetworkClusterListModel extends ClusterListModel
 {
+    private UICommand privateManageCommand;
+
+    public UICommand getManageCommand()
+    {
+        return privateManageCommand;
+    }
+
+    private void setManageCommand(UICommand value)
+    {
+        privateManageCommand = value;
+    }
+
+    public void Manage()
+    {
+        if (getWindow() != null)
+        {
+            return;
+        }
+
+        ClusterNetworkManageModel networkManageModel = new 
ClusterNetworkManageModel(getEntity());
+        setWindow(networkManageModel);
+        
networkManageModel.setTitle(ConstantsManager.getInstance().getConstants().assignDetachNetworksTitle());
+        networkManageModel.setHashName("assign_networks"); //$NON-NLS-1$
+
+        // TODO- initialize with correct values
+        networkManageModel.setAttached(true);
+        networkManageModel.setRequired(true);
+        networkManageModel.setDisplayNetwork(true);
+
+        UICommand cancelCommand = new UICommand("Cancel", this); //$NON-NLS-1$
+        
cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel());
+        cancelCommand.setIsCancel(true);
+        networkManageModel.getCommands().add(cancelCommand);
+
+        UICommand okCommand = new UICommand("OnManage", this); //$NON-NLS-1$
+        okCommand.setTitle(ConstantsManager.getInstance().getConstants().ok());
+        okCommand.setIsDefault(true);
+        networkManageModel.getCommands().add(0, okCommand);
+
+    }
+
+//    private ListModel createNetworkList(List<Network> dcNetworks) {
+//        List<ClusterNetworkManageModel> networkList = new 
ArrayList<ClusterNetworkManageModel>();
+//        java.util.ArrayList<Network> clusterNetworks = Linq.<Network> 
Cast(getItems());
+//        for (Network network : dcNetworks) {
+//            ClusterNetworkManageModel networkManageModel = new 
ClusterNetworkManageModel(network);
+//            int index = clusterNetworks.indexOf(network);
+//            if (index >= 0) {
+//                Network clusterNetwork = clusterNetworks.get(index);
+//                
networkManageModel.setVmNetwork(clusterNetwork.isVmNetwork());
+//
+//                // getCluster can return null if the networks is not attached
+//                if (clusterNetwork.getCluster() == null) {
+//                    // Init default network_cluster values
+//                    clusterNetwork.setCluster(new network_cluster());
+//                }
+//                
networkManageModel.setRequired(clusterNetwork.getCluster().isRequired());
+//                
networkManageModel.setDisplayNetwork(clusterNetwork.getCluster().getis_display());
+//                if (clusterNetwork.getCluster().getis_display()) {
+//                    displayNetwork = clusterNetwork;
+//                }
+//                networkManageModel.setAttached(true);
+//            } else {
+//                networkManageModel.setAttached(false);
+//            }
+//            networkList.add(networkManageModel);
+//        }
+//
+//        Collections.sort(networkList, networkComparator);
+//
+//        ListModel listModel = new ListModel();
+//        listModel.setItems(networkList);
+//
+//        UICommand cancelCommand = new UICommand("Cancel", this); 
//$NON-NLS-1$
+//        
cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel());
+//        cancelCommand.setIsCancel(true);
+//        listModel.getCommands().add(cancelCommand);
+//
+//        UICommand okCommand = new UICommand("OnManage", this); //$NON-NLS-1$
+//        
okCommand.setTitle(ConstantsManager.getInstance().getConstants().ok());
+//        okCommand.setIsDefault(true);
+//        listModel.getCommands().add(0, okCommand);
+//
+//        return listModel;
+//    }
+
+    public void OnManage() {
+//        final ListModel windowModel = (ListModel) getWindow();
+//
+//        List<ClusterNetworkManageModel> manageList = 
Linq.<ClusterNetworkManageModel> Cast(windowModel.getItems());
+//        List<Network> existingClusterNetworks = Linq.<Network> 
Cast(getItems());
+//        final ArrayList<VdcActionParametersBase> toAttach = new 
ArrayList<VdcActionParametersBase>();
+//        final ArrayList<VdcActionParametersBase> toDetach = new 
ArrayList<VdcActionParametersBase>();
+//
+//        for (ClusterNetworkManageModel networkModel : manageList) {
+//            Network network = networkModel.getEntity();
+//            boolean contains = existingClusterNetworks.contains(network);
+//
+//            boolean needsAttach = networkModel.isAttached() && !contains;
+//            boolean needsDetach = !networkModel.isAttached() && contains;
+//            boolean needsUpdate = false;
+//
+//            if (contains && !needsDetach) {
+//                Network clusterNetwork = 
existingClusterNetworks.get(existingClusterNetworks.indexOf(network));
+//
+//                if ((networkModel.isRequired() != 
clusterNetwork.getCluster().isRequired())
+//                        || (networkModel.isDisplayNetwork() != 
clusterNetwork.getCluster().getis_display())) {
+//                    needsUpdate = true;
+//                }
+//            }
+//
+//            if (needsAttach || needsUpdate) {
+//                toAttach.add(new 
AttachNetworkToVdsGroupParameter(getEntity(), network));
+//            }
+//
+//            if (needsDetach) {
+//                toDetach.add(new 
AttachNetworkToVdsGroupParameter(getEntity(), network));
+//            }
+//        }
+//
+//        final IFrontendMultipleActionAsyncCallback callback = new 
IFrontendMultipleActionAsyncCallback() {
+//            Boolean needsAttach = !toAttach.isEmpty();
+//            Boolean needsDetach = !toDetach.isEmpty();
+//
+//            @Override
+//            public void Executed(FrontendMultipleActionAsyncResult result) {
+//                if (result.getActionType() == 
VdcActionType.DetachNetworkToVdsGroup) {
+//                    needsDetach = false;
+//                }
+//                if (result.getActionType() == 
VdcActionType.AttachNetworkToVdsGroup) {
+//                    needsAttach = false;
+//                }
+//
+//                if (needsAttach) {
+//                    
Frontend.RunMultipleAction(VdcActionType.AttachNetworkToVdsGroup, toAttach, 
this, null);
+//                }
+//
+//                if (needsDetach) {
+//                    
Frontend.RunMultipleAction(VdcActionType.DetachNetworkToVdsGroup, toDetach, 
this, null);
+//                }
+//
+//                if (!needsAttach && !needsDetach) {
+//                    doFinish();
+//                }
+//            }
+//
+//            private void doFinish() {
+//                windowModel.StopProgress();
+//                Cancel();
+//                ForceRefresh();
+//            }
+//        };
+//
+//        callback.Executed(new FrontendMultipleActionAsyncResult(null, null, 
null));
+//        windowModel.StartProgress(null);
+    }
+
+    @Override
+    public void Cancel()
+    {
+        setWindow(null);
+    }
 
     @Override
     public Network getEntity()
@@ -32,9 +205,32 @@
     {
         if (getEntity() != null)
         {
-            setSearchString(StringFormat.format("clusters: network.name=%1$s", 
getEntity().getname())); //$NON-NLS-1$
             super.Search();
         }
+    }
+
+    @Override
+    protected void SyncSearch() {
+        if (getEntity() == null)
+        {
+            return;
+        }
+
+        super.SyncSearch();
+
+        AsyncQuery _asyncQuery = new AsyncQuery();
+        _asyncQuery.setModel(this);
+        _asyncQuery.asyncCallback = new INewAsyncCallback() {
+            @Override
+            public void OnSuccess(Object model, Object ReturnValue)
+            {
+                NetworkClusterListModel.this.setItems((ArrayList<Network>) 
((VdcQueryReturnValue) ReturnValue).getReturnValue());
+            }
+        };
+
+        NetworkIdParameters networkIdParams = new 
NetworkIdParameters(getEntity().getId());
+        networkIdParams.setRefresh(getIsQueryFirstTime());
+        Frontend.RunQuery(VdcQueryType.GetVdsGroupsByNetworkId, 
networkIdParams, _asyncQuery);
     }
 
     @Override
@@ -47,5 +243,29 @@
             getSearchCommand().Execute();
         }
     }
+
+    @Override
+    public void ExecuteCommand(UICommand command)
+    {
+        super.ExecuteCommand(command);
+
+        if (command == getManageCommand())
+        {
+            Manage();
+        }
+        else if (StringHelper.stringsEqual(command.getName(), "OnManage")) 
//$NON-NLS-1$
+        {
+            OnManage();
+        }
+        else if (StringHelper.stringsEqual(command.getName(), "Cancel")) 
//$NON-NLS-1$
+        {
+            Cancel();
+        }
+    }
+
+    @Override
+    protected String getListName() {
+        return "NetworkClusterListModel"; //$NON-NLS-1$
+    }
 }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostFilter.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostFilter.java
new file mode 100644
index 0000000..68e0577
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostFilter.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.ui.uicommonweb.models.networks;
+
+import org.ovirt.engine.ui.uicommonweb.ViewFilter;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+public enum NetworkHostFilter implements ViewFilter<NetworkHostFilter>{
+    attached(ConstantsManager.getInstance().getConstants().attachedHost()),
+    unattached(ConstantsManager.getInstance().getConstants().unattachedHost());
+
+    private String text;
+
+    NetworkHostFilter(String text){
+        this.text = text;
+    }
+
+    @Override
+    public String getText(){
+        return text;
+    }
+
+    @Override
+    public NetworkHostFilter getValue() {
+        return this;
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java
index e055815..8b45b9c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java
@@ -1,16 +1,30 @@
 package org.ovirt.engine.ui.uicommonweb.models.networks;
 
+import java.util.ArrayList;
+
 import org.ovirt.engine.core.common.businessentities.Network;
-import org.ovirt.engine.core.common.interfaces.SearchType;
-import org.ovirt.engine.core.common.queries.SearchParameters;
+import org.ovirt.engine.core.common.queries.NetworkIdParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.PropertyChangedEventArgs;
-import org.ovirt.engine.core.compat.StringFormat;
+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.models.hosts.HostListModel;
 
 @SuppressWarnings("unused")
 public class NetworkHostListModel extends HostListModel
 {
+    private NetworkHostFilter viewFilterType;
+
+    public NetworkHostFilter getViewFilterType() {
+        return viewFilterType;
+    }
+
+    public void setViewFilterType(NetworkHostFilter viewFilterType) {
+        this.viewFilterType = viewFilterType;
+        Search();
+    }
 
     @Override
     public Network getEntity()
@@ -35,7 +49,6 @@
     {
         if (getEntity() != null)
         {
-            setSearchString(StringFormat.format("hosts: network=%1$s", 
getEntity().getname())); //$NON-NLS-1$
             super.Search();
         }
     }
@@ -43,9 +56,31 @@
     @Override
     protected void SyncSearch()
     {
-        SearchParameters tempVar = new SearchParameters(getSearchString(), 
SearchType.VDS);
-        tempVar.setRefresh(getIsQueryFirstTime());
-        super.SyncSearch(VdcQueryType.Search, tempVar);
+        if (getEntity() == null)
+        {
+            return;
+        }
+
+        AsyncQuery _asyncQuery = new AsyncQuery();
+        _asyncQuery.setModel(getViewFilterType());
+        _asyncQuery.asyncCallback = new INewAsyncCallback() {
+            @Override
+            public void OnSuccess(Object model, Object ReturnValue)
+            {
+                if (model.equals(getViewFilterType())){
+                    NetworkHostListModel.this.setItems((ArrayList<Network>) 
((VdcQueryReturnValue) ReturnValue).getReturnValue());
+                }
+            }
+        };
+
+        NetworkIdParameters networkIdParams = new 
NetworkIdParameters(getEntity().getId());
+        networkIdParams.setRefresh(getIsQueryFirstTime());
+
+        if (NetworkHostFilter.unattached.equals(getViewFilterType())){
+            Frontend.RunQuery(VdcQueryType.GetVdsWithoutNetwork, 
networkIdParams, _asyncQuery);
+        }else{
+            Frontend.RunQuery(VdcQueryType.GetVdsByNetworkId, networkIdParams, 
_asyncQuery);
+        }
     }
 
     @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 12c315d..51f1f45 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
@@ -1,6 +1,7 @@
 package org.ovirt.engine.ui.uicompat;
 
 
+
 public interface Constants extends com.google.gwt.i18n.client.Constants {
 
     @DefaultStringValue("OK")
@@ -1551,4 +1552,11 @@
 
     @DefaultStringValue("Missing Quota for the selected Cluster, Please define 
proper Quota")
     String missingQuotaClusterEnforceMode();
+
+    // Network- Host
+    @DefaultStringValue("Attached")
+    String attachedHost();
+
+    @DefaultStringValue("Unattached")
+    String unattachedHost();
 }
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 f404249..4d7d1f2 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
@@ -1512,6 +1512,9 @@
     @DefaultStringValue("Assign/Unassign Networks")
     String assignDetatchNetworksNework();
 
+    @DefaultStringValue("Assign/Unassign Network")
+    String assignUnassignNetwork();
+
     @DefaultStringValue("Set as Display")
     String setAsDisplayNetwork();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
index e04dd12..3a50396 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkClusterView.java
@@ -6,11 +6,13 @@
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkClusterListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.tab.network.SubTabNetworkClusterPresenter;
 import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView;
+import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition;
 
 
 public class SubTabNetworkClusterView extends AbstractSubTabTableView<Network, 
VDSGroup, NetworkListModel, NetworkClusterListModel>
@@ -47,6 +49,13 @@
             }
         };
         getTable().addColumn(descColumn, constants.descriptionCluster());
+
+        getTable().addActionButton(new 
WebAdminButtonDefinition<VDSGroup>(constants.assignUnassignNetwork()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return getDetailModel().getManageCommand();
+            }
+        });
     }
 
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java
index 3a0bb53..bab2ede 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java
@@ -1,13 +1,17 @@
 package org.ovirt.engine.ui.webadmin.section.main.view.tab.network;
 
+import java.util.Arrays;
+
 import javax.inject.Inject;
 
 import org.ovirt.engine.core.common.businessentities.Network;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
+import org.ovirt.engine.ui.common.view.ViewRadioGroup;
 import org.ovirt.engine.ui.common.widget.table.column.EnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkHostFilter;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkHostListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -15,43 +19,78 @@
 import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView;
 import org.ovirt.engine.ui.webadmin.widget.table.column.HostStatusColumn;
 
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.RadioButton;
+
 public class SubTabNetworkHostView extends AbstractSubTabTableView<Network, 
VDS, NetworkListModel, NetworkHostListModel>
         implements SubTabNetworkHostPresenter.ViewDef {
+
+    private final ViewRadioGroup<NetworkHostFilter> viewRadioGroup;
+    static ApplicationConstants constants;
 
     @Inject
     public SubTabNetworkHostView(SearchableDetailModelProvider<VDS, 
NetworkListModel, NetworkHostListModel> modelProvider, ApplicationConstants 
constants) {
         super(modelProvider);
-        initTable(constants);
+        SubTabNetworkHostView.constants = constants;
+        viewRadioGroup = new 
ViewRadioGroup<NetworkHostFilter>(Arrays.asList(NetworkHostFilter.values()));
+        initTable();
         initWidget(getTable());
     }
 
-    void initTable(final ApplicationConstants constants) {
-        getTable().addColumn(new HostStatusColumn(), constants.empty(), 
"30px"); //$NON-NLS-1$
-
-        TextColumnWithTooltip<VDS> nameColumn = new 
TextColumnWithTooltip<VDS>() {
+    void initTableOverhead() {
+        viewRadioGroup.addClickHandler(new ClickHandler() {
             @Override
-            public String getValue(VDS object) {
-                return object.getvds_name();
+            public void onClick(ClickEvent event) {
+                if (((RadioButton) event.getSource()).getValue()) {
+                    handleRadioButtonClick(event);
+                }
             }
-        };
-        getTable().addColumn(nameColumn, constants.nameHost());
+        });
 
-        TextColumnWithTooltip<VDS> hostColumn = new 
TextColumnWithTooltip<VDS>() {
-            @Override
-            public String getValue(VDS object) {
-                return object.gethost_name();
-            }
-        };
-        getTable().addColumn(hostColumn, constants.ipHost());
-
-        TextColumnWithTooltip<VDS> statusColumn = new EnumColumn<VDS, 
VDSStatus>() {
-            @Override
-            public VDSStatus getRawValue(VDS object) {
-                return object.getstatus();
-            }
-        };
-        getTable().addColumn(statusColumn, constants.statusHost());
+        getTable().setTableOverhead(viewRadioGroup);
+        getTable().setTableTopMargin(20);
     }
 
+    private final HostStatusColumn hostStatus = new HostStatusColumn();
+
+    private final TextColumnWithTooltip<VDS> nameColumn = new 
TextColumnWithTooltip<VDS>() {
+        @Override
+        public String getValue(VDS object) {
+            return object.getvds_name();
+        }
+    };
+
+
+
+    private final TextColumnWithTooltip<VDS> hostColumn = new 
TextColumnWithTooltip<VDS>() {
+        @Override
+        public String getValue(VDS object) {
+            return object.gethost_name();
+        }
+    };
+
+
+    private final TextColumnWithTooltip<VDS> statusColumn = new 
EnumColumn<VDS, VDSStatus>() {
+        @Override
+        public VDSStatus getRawValue(VDS object) {
+            return object.getstatus();
+        }
+    };
+
+    private void handleRadioButtonClick(ClickEvent event) {
+        
getDetailModel().setViewFilterType((viewRadioGroup.getSelectedValue()));
+
+        getTable().ensureColumnPresent(hostStatus, constants.empty(), true, 
"30px"); //$NON-NLS-1$
+        getTable().ensureColumnPresent(nameColumn, constants.nameHost(), true);
+        getTable().ensureColumnPresent(hostColumn, constants.ipHost(), true);
+        getTable().ensureColumnPresent(statusColumn, constants.statusHost(), 
true);
+
+    }
+
+    void initTable() {
+        initTableOverhead();
+        handleRadioButtonClick(null);
+    }
 }
 


--
To view, visit http://gerrit.ovirt.org/8623
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I538a4269315d4c3e005d6e4c0847d9d96d0f469e
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