Kanagaraj M has uploaded a new change for review. Change subject: webadmin: [WIP] Cluster sub tab - Services tree ......................................................................
webadmin: [WIP] Cluster sub tab - Services tree This is a partial implementation. Change-Id: I08a50e142b1208ad585fb3dfbc571e33ceb692ad Signed-off-by: Kanagaraj M <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterServiceListModel.java D frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterServiceModel.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/ManagedComponents.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterServicePresenter.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterServiceView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/cluster/ServiceTree.java 10 files changed, 269 insertions(+), 399 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/12150/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index 8dd82ed..4c74f14 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -1140,4 +1140,28 @@ @DefaultStringValue("Collapse Snapshots") String collapseSnapshots(); + // Cluster service + @DefaultStringValue("Host") + String hostService(); + + @DefaultStringValue("Service") + String nameService(); + + @DefaultStringValue("Status") + String statusService(); + + @DefaultStringValue("Port") + String portService(); + + @DefaultStringValue("Process Id") + String pidService(); + + @DefaultStringValue("Action") + String actionService(); + + @DefaultStringValue("Filter") + String filterService(); + + @DefaultStringValue("Show All") + String showAllService(); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java index 2fc6a9c..ff86f3a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java @@ -144,13 +144,13 @@ privateGuideContext = value; } - private ClusterServiceModel clusterServiceModel; + private ClusterServiceListModel clusterServiceModel; - public ClusterServiceModel getClusterServiceModel() { + public ClusterServiceListModel getClusterServiceModel() { return clusterServiceModel; } - public void setClusterServiceModel(ClusterServiceModel clusterServiceModel) { + public void setClusterServiceModel(ClusterServiceListModel clusterServiceModel) { this.clusterServiceModel = clusterServiceModel; } @@ -210,7 +210,7 @@ { super.InitDetailModels(); - setClusterServiceModel(new ClusterServiceModel()); + setClusterServiceModel(new ClusterServiceListModel()); ObservableCollection<EntityModel> list = new ObservableCollection<EntityModel>(); clusterGeneralModel = new ClusterGeneralModel(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterServiceListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterServiceListModel.java new file mode 100644 index 0000000..afab637 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterServiceListModel.java @@ -0,0 +1,74 @@ +package org.ovirt.engine.ui.uicommonweb.models.clusters; + +import java.util.Arrays; + +import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class ClusterServiceListModel extends SearchableListModel { + + @Override + public VDSGroup getEntity() { + return (VDSGroup) ((super.getEntity() instanceof VDSGroup) ? super.getEntity() : null); + } + + public ClusterServiceListModel() { + setTitle(ConstantsManager.getInstance().getConstants().servicesTitle()); + setHashName("services"); //$NON-NLS-1$ + } + + @Override + protected void OnEntityChanged() + { + super.OnEntityChanged(); + + getSearchCommand().Execute(); + } + + @Override + public void setEntity(Object value) + { + if (value == null || !value.equals(getEntity())) { + super.setEntity(value); + } + } + + @Override + public void Search() + { + if (getEntity() != null) + { + super.Search(); + } + else + { + setItems(null); + } + } + + @Override + protected void SyncSearch() + { + if (getEntity() == null) + { + return; + } + + super.SyncSearch(); + setItems(Arrays.asList(ServiceType.values())); + } + + @Override + protected void AsyncSearch() + { + super.AsyncSearch(); + SyncSearch(); + } + + @Override + protected String getListName() { + return "ClusterServiceListModel"; //$NON-NLS-1$ + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterServiceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterServiceModel.java deleted file mode 100644 index 3945dce..0000000 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterServiceModel.java +++ /dev/null @@ -1,203 +0,0 @@ -package org.ovirt.engine.ui.uicommonweb.models.clusters; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.ovirt.engine.core.common.businessentities.VDS; -import org.ovirt.engine.core.common.businessentities.VDSGroup; -import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails; -import org.ovirt.engine.core.common.businessentities.gluster.ServiceInfo; -import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; -import org.ovirt.engine.ui.frontend.AsyncQuery; -import org.ovirt.engine.ui.frontend.INewAsyncCallback; -import org.ovirt.engine.ui.uicommonweb.UICommand; -import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; -import org.ovirt.engine.ui.uicommonweb.models.EntityModel; -import org.ovirt.engine.ui.uicommonweb.models.ListModel; -import org.ovirt.engine.ui.uicompat.ConstantsManager; - -public class ClusterServiceModel extends EntityModel { - - private ListModel hostList; - - public ListModel getHostList() { - return hostList; - } - - public void setHostList(ListModel hostList) { - this.hostList = hostList; - } - - private ListModel serviceTypeList; - - public ListModel getServiceTypeList() { - return serviceTypeList; - } - - public void setServiceTypeList(ListModel serviceTypeList) { - this.serviceTypeList = serviceTypeList; - } - - private ListModel serviceList; - - public ListModel getServiceList() { - return serviceList; - } - - public void setServiceList(ListModel serviceList) { - this.serviceList = serviceList; - } - - private List<ServiceInfo> actualServiceList; - - public List<ServiceInfo> getActualServiceList() { - return actualServiceList; - } - - public void setActualServiceList(List<ServiceInfo> actualServiceList) { - this.actualServiceList = actualServiceList; - } - - private UICommand filterServicesCommand; - - public UICommand getFilterServicesCommand() { - return filterServicesCommand; - } - - private void setFilterServicesCommand(UICommand value) { - filterServicesCommand = value; - } - - private UICommand clearFilterServicesCommand; - - public UICommand getClearFilterServicesCommand() { - return clearFilterServicesCommand; - } - - private void setClearFilterServicesCommand(UICommand value) { - clearFilterServicesCommand = value; - } - - @Override - public VDSGroup getEntity() { - return (VDSGroup) ((super.getEntity() instanceof VDSGroup) ? super.getEntity() : null); - } - - public ClusterServiceModel() { - setTitle(ConstantsManager.getInstance().getConstants().servicesTitle()); - setHashName("services"); //$NON-NLS-1$ - - setActualServiceList(new ArrayList<ServiceInfo>()); - setServiceList(new ListModel()); - setHostList(new ListModel()); - setServiceTypeList(new ListModel()); - updateServiceTypeList(); - setFilterServicesCommand(new UICommand("FilterServices", this)); //$NON-NLS-1$ - setClearFilterServicesCommand(new UICommand("ClearFilterServices", this)); //$NON-NLS-1$ - } - - @Override - protected void OnEntityChanged() { - super.OnEntityChanged(); - if (getEntity() != null) { - updateServiceList(); - updateHostList(); - } - } - - private void updateHostList() { - boolean refreshNeeded = false; - List<VDS> hostList = (List<VDS>) getHostList().getItems(); - if (hostList != null && hostList.size() > 1) { - for(VDS vds : hostList) { - if (vds != null && !vds.getVdsGroupName().equals(getEntity().getname())) { - refreshNeeded = true; - break; - } - } - } - else { - refreshNeeded = true; - } - - if (!refreshNeeded) { - return; - } - - updateServiceTypeList(); - - AsyncQuery asyncQuery = new AsyncQuery(); - asyncQuery.setModel(this); - asyncQuery.asyncCallback = new INewAsyncCallback() { - @Override - public void OnSuccess(Object model, Object result) - { - List<VDS> hostList = (List<VDS>) result; - hostList.add(0, null); - getHostList().setItems(hostList); - } - }; - AsyncDataProvider.GetHostListByCluster(asyncQuery, getEntity().getname()); - } - - private void updateServiceTypeList() { - ArrayList<ServiceType> serviceTypes = new ArrayList<ServiceType>(); - serviceTypes.add(null); - serviceTypes.addAll(Arrays.asList(ServiceType.values())); - getServiceTypeList().setItems(serviceTypes); - } - - private void updateServiceList() { - AsyncQuery asyncQuery = new AsyncQuery(); - asyncQuery.setModel(this); - asyncQuery.asyncCallback = new INewAsyncCallback() { - @Override - public void OnSuccess(Object model, Object result) - { - GlusterVolumeAdvancedDetails details = (GlusterVolumeAdvancedDetails) result; - if (details.getServiceInfo() != null) { - setActualServiceList(details.getServiceInfo()); - } - else { - setActualServiceList(new ArrayList<ServiceInfo>()); - } - filterServices(); - } - }; - AsyncDataProvider.GetClusterGlusterServices(asyncQuery, getEntity().getId()); - } - - private void filterServices() { - VDS selectedVds = (VDS) hostList.getSelectedItem(); - ServiceType serviceType = (ServiceType) serviceTypeList.getSelectedItem(); - ArrayList<EntityModel> list = new ArrayList<EntityModel>(); - for (ServiceInfo service : getActualServiceList()) { - if ((selectedVds == null || service.getHostName().equals(selectedVds.getHostName())) - && (serviceType == null || service.getServiceType() == serviceType)) { - list.add(new EntityModel(service)); - } - } - getServiceList().setItems(list); - } - - private void clearFilters() { - getHostList().setSelectedItem(null); - getServiceTypeList().setSelectedItem(null); - filterServices(); - } - - @Override - public void ExecuteCommand(UICommand command) { - super.ExecuteCommand(command); - - if (command == getFilterServicesCommand()) - { - filterServices(); - } - else if (command == getClearFilterServicesCommand()) - { - clearFilters(); - } - } -} 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 ece724f..d0fe608 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 @@ -1648,28 +1648,6 @@ @DefaultStringValue("Load") String loadClusterHost(); - // Cluster service - @DefaultStringValue("Host") - String hostService(); - - @DefaultStringValue("Service") - String nameService(); - - @DefaultStringValue("Status") - String statusService(); - - @DefaultStringValue("Port") - String portService(); - - @DefaultStringValue("Process Id") - String pidService(); - - @DefaultStringValue("Filter") - String filterService(); - - @DefaultStringValue("Show All") - String showAllService(); - @DefaultStringValue("Display Address Overridden") String overriddenConsoleAddress(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java index ec48ccc..5300be2 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java @@ -12,15 +12,16 @@ import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VmPool; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.event_subscriber; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.common.businessentities.storage_domains; import org.ovirt.engine.core.common.businessentities.storage_pool; -import org.ovirt.engine.core.common.businessentities.VmPool; import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionEntity; +import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkCluster; import org.ovirt.engine.core.common.businessentities.network.NetworkView; @@ -36,7 +37,7 @@ import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterHostListModel; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkListModel; -import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterServiceModel; +import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterServiceListModel; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterVmListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterClusterListModel; @@ -55,9 +56,9 @@ import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeEventListModel; import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.gluster.VolumeParameterListModel; -import org.ovirt.engine.ui.uicommonweb.models.hosts.HostHardwareGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostEventListModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostGeneralModel; +import org.ovirt.engine.ui.uicommonweb.models.hosts.HostHardwareGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostHooksListModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceLineModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceListModel; @@ -167,9 +168,9 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.SubTabVolumePermissionPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.gluster.VolumeSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.HostSubTabPanelPresenter; -import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHardwarePresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostEventPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostGeneralPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHardwarePresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostHookPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostInterfacePresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.host.SubTabHostPermissionPresenter; @@ -420,7 +421,7 @@ AsyncProvider<SubTabClusterServicePresenter> getSubTabClusterServicePresenter(); - DetailModelProvider<ClusterListModel, ClusterServiceModel> getSubTabClusterServiceModelProvider(); + SearchableDetailModelProvider<ServiceType, ClusterListModel, ClusterServiceListModel> getSubTabClusterServiceModelProvider(); AsyncProvider<SubTabClusterPermissionPresenter> getSubTabClusterPermissionPresenter(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java index ba97aa1..3d5e289 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ClusterModule.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.permissions; +import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; import org.ovirt.engine.ui.common.presenter.ModelBoundPresenterWidget; @@ -22,15 +23,15 @@ import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterHostListModel; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkListModel; -import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterServiceModel; +import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterServiceListModel; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterVmListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel; import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; import org.ovirt.engine.ui.webadmin.section.main.presenter.ReportPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.ClusterManageNetworkPopupPresenterWidget; -import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.NewClusterNetworkPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.ClusterPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.cluster.NewClusterNetworkPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.gluster.DetachGlusterHostsPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.guide.GuidePopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.MultipleHostsPopupPresenterWidget; @@ -158,10 +159,10 @@ @Provides @Singleton - public DetailModelProvider<ClusterListModel, ClusterServiceModel> getClusterServiceProvider(ClientGinjector ginjector) { - return new DetailTabModelProvider<ClusterListModel, ClusterServiceModel>(ginjector, + public SearchableDetailModelProvider<ServiceType, ClusterListModel, ClusterServiceListModel> getClusterServiceListProvider(ClientGinjector ginjector) { + return new SearchableDetailTabModelProvider<ServiceType, ClusterListModel, ClusterServiceListModel>(ginjector, ClusterListModel.class, - ClusterServiceModel.class); + ClusterServiceListModel.class); } @Provides diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterServicePresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterServicePresenter.java index 479048f..b8b726b 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterServicePresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/SubTabClusterServicePresenter.java @@ -1,11 +1,12 @@ package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.cluster; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter; -import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel; -import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterServiceModel; +import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterServiceListModel; import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.ClusterSelectionChangeEvent; @@ -22,7 +23,7 @@ import com.gwtplatform.mvp.client.proxy.RevealContentEvent; import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace; -public class SubTabClusterServicePresenter extends AbstractSubTabPresenter<VDSGroup, ClusterListModel, ClusterServiceModel, SubTabClusterServicePresenter.ViewDef, SubTabClusterServicePresenter.ProxyDef> { +public class SubTabClusterServicePresenter extends AbstractSubTabPresenter<VDSGroup, ClusterListModel, ClusterServiceListModel, SubTabClusterServicePresenter.ViewDef, SubTabClusterServicePresenter.ProxyDef> { @ProxyCodeSplit @NameToken(ApplicationPlaces.clusterServiceSubTabPlace) @@ -40,7 +41,8 @@ @Inject public SubTabClusterServicePresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, - PlaceManager placeManager, DetailModelProvider<ClusterListModel, ClusterServiceModel> modelProvider) { + PlaceManager placeManager, + SearchableDetailModelProvider<ServiceType, ClusterListModel, ClusterServiceListModel> modelProvider) { super(eventBus, view, proxy, placeManager, modelProvider); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterServiceView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterServiceView.java index 037e3e0..3f0eee8 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterServiceView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterServiceView.java @@ -2,171 +2,40 @@ import javax.inject.Inject; -import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; -import org.ovirt.engine.core.common.businessentities.gluster.ServiceInfo; -import org.ovirt.engine.ui.common.idhandler.WithElementId; -import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider; -import org.ovirt.engine.ui.common.view.AbstractSubTabFormView; -import org.ovirt.engine.ui.common.widget.UiCommandButton; -import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable; -import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; -import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer; -import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer; -import org.ovirt.engine.ui.common.widget.table.column.EntityModelTextColumn; -import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.table.column.EmptyColumn; import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel; -import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterServiceModel; +import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterServiceListModel; 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.tab.cluster.SubTabClusterServicePresenter; +import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTreeView; +import org.ovirt.engine.ui.webadmin.widget.cluster.ServiceTree; -import com.google.gwt.core.client.GWT; -import com.google.gwt.editor.client.Editor; -import com.google.gwt.editor.client.SimpleBeanEditorDriver; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Widget; - -public class SubTabClusterServiceView extends AbstractSubTabFormView<VDSGroup, ClusterListModel, ClusterServiceModel> - implements SubTabClusterServicePresenter.ViewDef, Editor<ClusterServiceModel> { - - interface Driver extends SimpleBeanEditorDriver<ClusterServiceModel, SubTabClusterServiceView> { - Driver driver = GWT.create(Driver.class); - } - - interface ViewUiBinder extends UiBinder<Widget, SubTabClusterServiceView> { - ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); - } - - @UiField(provided = true) - @Path(value = "hostList.selectedItem") - @WithElementId("hostList") - ListModelListBoxEditor<Object> hostEditor; - - @UiField(provided = true) - @Path(value = "serviceTypeList.selectedItem") - @WithElementId - ListModelListBoxEditor<Object> serviceTypeEditor; - - @UiField - @WithElementId - UiCommandButton filterButton; - - @UiField - @WithElementId - UiCommandButton clearButton; - - @UiField(provided = true) - @Ignore - @WithElementId - EntityModelCellTable<ListModel> servicesTable; +public class SubTabClusterServiceView extends AbstractSubTabTreeView<ServiceTree<ClusterServiceListModel>, VDSGroup, ServiceType, ClusterListModel, ClusterServiceListModel> + implements SubTabClusterServicePresenter.ViewDef { @Inject - public SubTabClusterServiceView(final DetailModelProvider<ClusterListModel, ClusterServiceModel> modelProvider, - ApplicationConstants constants) { - super(modelProvider); - servicesTable = new EntityModelCellTable<ListModel>(false, true); - initListBoxEditors(); - initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); - localize(constants); - initTableColumns(constants); - initButtons(); - Driver.driver.initialize(this); - } - - private void initListBoxEditors() { - hostEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { - @Override - public String renderNullSafe(Object object) { - if (object != null) { - return ((VDS) object).getHostName(); - } - else { - return ""; //$NON-NLS-1$ - } - } - }); - serviceTypeEditor = new ListModelListBoxEditor<Object>(new EnumRenderer() { - @Override - public String render(Enum object) { - if (object != null) { - return super.render(object); - } - else { - return ""; //$NON-NLS-1$ - } - } - }); - } - - private void localize(ApplicationConstants constants) { - hostEditor.setLabel(constants.hostService()); - serviceTypeEditor.setLabel(constants.nameService()); - filterButton.setLabel(constants.filterService()); - clearButton.setLabel(constants.showAllService()); - } - - protected void initTableColumns(ApplicationConstants constants) { - // Table Entity Columns - servicesTable.addEntityModelColumn(new EntityModelTextColumn<ServiceInfo>() { - @Override - public String getText(ServiceInfo entity) { - return entity.getHostName(); - } - }, constants.hostService()); - - servicesTable.addEntityModelColumn(new EntityModelTextColumn<ServiceInfo>() { - @Override - public String getText(ServiceInfo entity) { - return entity.getServiceType().name(); - } - }, constants.nameService()); - - servicesTable.addEntityModelColumn(new EntityModelTextColumn<ServiceInfo>() { - @Override - public String getText(ServiceInfo entity) { - return entity.getStatus().name(); - } - }, constants.statusService()); - - servicesTable.addEntityModelColumn(new EntityModelTextColumn<ServiceInfo>() { - @Override - public String getText(ServiceInfo entity) { - return String.valueOf(entity.getPort()); - } - }, constants.portService()); - - servicesTable.addEntityModelColumn(new EntityModelTextColumn<ServiceInfo>() { - @Override - public String getText(ServiceInfo entity) { - return String.valueOf(entity.getPid()); - } - }, constants.pidService()); - } - - private void initButtons() { - filterButton.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - getDetailModel().ExecuteCommand(getDetailModel().getFilterServicesCommand()); - } - }); - - clearButton.addClickHandler(new ClickHandler() { - - @Override - public void onClick(ClickEvent event) { - getDetailModel().ExecuteCommand(getDetailModel().getClearFilterServicesCommand()); - } - }); + public SubTabClusterServiceView(SearchableDetailModelProvider<ServiceType, ClusterListModel, ClusterServiceListModel> modelProvider, + ApplicationConstants constants, ApplicationTemplates templates, ApplicationResources resources) { + super(modelProvider, constants, templates, resources); } @Override - public void setMainTabSelectedItem(VDSGroup selectedItem) { - servicesTable.edit(getDetailModel().getServiceList()); - Driver.driver.edit(getDetailModel()); + protected void initHeader(ApplicationConstants constants) { + table.addColumn(new EmptyColumn(), constants.nameService(), "175px"); //$NON-NLS-1$ + table.addColumn(new EmptyColumn(), constants.hostService(), "100px"); //$NON-NLS-1$ + table.addColumn(new EmptyColumn(), constants.statusService(), "100px"); //$NON-NLS-1$ + table.addColumn(new EmptyColumn(), constants.portService(), "80px"); //$NON-NLS-1$ + table.addColumn(new EmptyColumn(), constants.pidService(), "80px"); //$NON-NLS-1$ + table.addColumn(new EmptyColumn(), constants.actionService(), "200px"); //$NON-NLS-1$ + } + + @Override + protected ServiceTree<ClusterServiceListModel> getTree() { + return new ServiceTree(resources, constants, templates); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/cluster/ServiceTree.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/cluster/ServiceTree.java new file mode 100644 index 0000000..dde4ddf --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/cluster/ServiceTree.java @@ -0,0 +1,124 @@ +package org.ovirt.engine.ui.webadmin.widget.cluster; + +import java.util.ArrayList; +import java.util.Arrays; + +import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus; +import org.ovirt.engine.core.common.businessentities.gluster.ServiceInfo; +import org.ovirt.engine.core.common.businessentities.gluster.ServiceType; +import org.ovirt.engine.ui.common.CommonApplicationConstants; +import org.ovirt.engine.ui.common.CommonApplicationResources; +import org.ovirt.engine.ui.common.widget.label.TextBoxLabel; +import org.ovirt.engine.ui.common.widget.tree.AbstractSubTabTree; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationResources; +import org.ovirt.engine.ui.webadmin.ApplicationTemplates; + +import com.google.gwt.resources.client.ImageResource; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.TreeItem; +import com.google.gwt.user.client.ui.VerticalPanel; + +public class ServiceTree<M extends SearchableListModel> extends AbstractSubTabTree<M, ServiceType, ServiceInfo> { + + ApplicationResources resources; + ApplicationConstants constants; + + public ServiceTree(CommonApplicationResources resources, + CommonApplicationConstants constants, + ApplicationTemplates templates) { + super(resources, constants, templates); + this.resources = (ApplicationResources) resources; + this.constants = (ApplicationConstants) constants; + } + + @Override + protected TreeItem getRootItem(ServiceType serviceType) { + HorizontalPanel panel = new HorizontalPanel(); + panel.setSpacing(1); + panel.setWidth("100%"); //$NON-NLS-1$ + + addItemToPanel(panel, new Image(resources.systemImage()), "25px"); //$NON-NLS-1$ + addTextBoxToPanel(panel, new TextBoxLabel(), serviceType.name(), ""); //$NON-NLS-1$ + + TreeItem treeItem = new TreeItem(panel); + treeItem.setUserObject(serviceType); + return treeItem; + } + + @Override + protected TreeItem getNodeItem(ServiceInfo serviceInfo) { + return getServiceInfoNode(new ArrayList<ServiceInfo>(Arrays.asList(serviceInfo))); + } + + @Override + protected TreeItem getLeafItem(ServiceInfo serviceInfo) { + return getServiceInfoNode(new ArrayList<ServiceInfo>(Arrays.asList(serviceInfo))); + } + + @Override + protected ArrayList<ServiceInfo> getNodeObjects(ServiceType serviceType) { + ArrayList<ServiceInfo> services = new ArrayList<ServiceInfo>(); + ServiceInfo s1 = new ServiceInfo(); + s1.setHostName("s1"); //$NON-NLS-1$ + s1.setStatus(GlusterStatus.UP); + s1.setPort(1); + s1.setPid(1); + services.add(s1); + + ServiceInfo s2 = new ServiceInfo(); + s2.setHostName("s1"); //$NON-NLS-1$ + s2.setStatus(GlusterStatus.UP); + s2.setPort(1); + s2.setPid(1); + services.add(s2); + + ServiceInfo s3 = new ServiceInfo(); + s3.setHostName("s1"); //$NON-NLS-1$ + s3.setStatus(GlusterStatus.UP); + s3.setPort(1); + s3.setPid(1); + services.add(s3); + + return services; + } + + @Override + protected String getNodeDisabledTooltip() { + return constants.differentStorageDomainWarning(); + } + + private TreeItem getServiceInfoNode(ArrayList<ServiceInfo> services) { + if (services.isEmpty()) { + return null; + } + + VerticalPanel vPanel = new VerticalPanel(); + vPanel.setWidth("100%"); //$NON-NLS-1$ + + for (ServiceInfo service : services) { + HorizontalPanel panel = new HorizontalPanel(); + + ImageResource image = resources.diskImage(); + String name = ""; //$NON-NLS-1$ + + addItemToPanel(panel, new Image(image), "25px"); //$NON-NLS-1$ + addTextBoxToPanel(panel, new TextBoxLabel(), name, "150px"); //$NON-NLS-1$ + addTextBoxToPanel(panel, new TextBoxLabel(), service.getHostName(), "100px"); //$NON-NLS-1$ + addTextBoxToPanel(panel, new TextBoxLabel(), service.getStatus().name(), "100px"); //$NON-NLS-1$ + addTextBoxToPanel(panel, new TextBoxLabel(), Integer.toString(service.getPort()), "80px"); //$NON-NLS-1$ + addTextBoxToPanel(panel, new TextBoxLabel(), Integer.toString(service.getPid()), "80px"); //$NON-NLS-1$ + + panel.setSpacing(1); + panel.setWidth("100%"); //$NON-NLS-1$ + + vPanel.add(panel); + } + + TreeItem treeItem = new TreeItem(vPanel); + treeItem.setUserObject(services.get(0).getHostName()); + return treeItem; + } +} -- To view, visit http://gerrit.ovirt.org/12150 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I08a50e142b1208ad585fb3dfbc571e33ceb692ad Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Kanagaraj M <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
