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