Lior Vernia has uploaded a new change for review. Change subject: webadmin: Added Provider/Networks subtab ......................................................................
webadmin: Added Provider/Networks subtab Change-Id: I5806572ec4ac0c7b892dfa8ef714d8f93a8459a7 Signed-off-by: Lior Vernia <lver...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.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/PresenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/provider/SubTabProviderNetworkPresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/provider/SubTabProviderNetworkView.java 9 files changed, 307 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/28/15028/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderListModel.java index 27dd2ac..607e590 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderListModel.java @@ -79,6 +79,7 @@ ObservableCollection<EntityModel> list = new ObservableCollection<EntityModel>(); list.add(new ProviderGeneralModel()); + list.add(new ProviderNetworkListModel()); setDetailModels(list); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.java new file mode 100644 index 0000000..3881afb --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderNetworkListModel.java @@ -0,0 +1,111 @@ +package org.ovirt.engine.ui.uicommonweb.models.providers; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class ProviderNetworkListModel extends SearchableListModel { + + private UICommand privateDiscoverCommand; + private UICommand privateRemoveCommand; + + public ProviderNetworkListModel() { + setTitle(ConstantsManager.getInstance().getConstants().networkInterfacesTitle()); + setHashName("networks"); //$NON-NLS-1$ + + setDiscoverCommand(new UICommand("Discover", this)); //$NON-NLS-1$ + setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$ + + updateActionAvailability(); + } + + public UICommand getDiscoverCommand() { + return privateDiscoverCommand; + } + + private void setDiscoverCommand(UICommand value) { + privateDiscoverCommand = value; + } + + public UICommand getRemoveCommand() { + return privateRemoveCommand; + } + + private void setRemoveCommand(UICommand value) { + privateRemoveCommand = value; + } + + @Override + protected void onEntityChanged() { + super.onEntityChanged(); + + if (getEntity() != null) { + getSearchCommand().execute(); + } + + updateActionAvailability(); + } + + @Override + protected void syncSearch() { + Provider provider = getEntity(); + if (provider == null) { + return; + } + + super.syncSearch(VdcQueryType.GetAllNetworksForProvider, new IdQueryParameters(provider.getId())); + } + + private void discover() { + } + + private void remove() { + } + + @Override + protected void selectedItemsChanged() { + super.selectedItemsChanged(); + updateActionAvailability(); + } + + private void updateActionAvailability() { + List tempVar = getSelectedItems(); + ArrayList selectedItems = + (ArrayList) ((tempVar != null) ? tempVar : new ArrayList()); + + getRemoveCommand().setIsExecutionAllowed(selectedItems.size() > 0); + } + + @Override + public void executeCommand(UICommand command) { + super.executeCommand(command); + + if (command == getDiscoverCommand()) { + discover(); + } else if (command == getRemoveCommand()) { + remove(); + } + } + + @Override + protected String getListName() { + return "ProviderNetworkListModel"; //$NON-NLS-1$ + } + + @Override + protected void onSelectedItemChanged() { + super.onSelectedItemChanged(); + updateActionAvailability(); + } + + @Override + public Provider getEntity() { + return (Provider) super.getEntity(); + } +} 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 127321e..4a1bd33 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 @@ -2664,4 +2664,14 @@ @DefaultStringValue("General") String providerGeneralSubTabLabel(); + + @DefaultStringValue("Networks") + String providerNetworksSubTabLabel(); + + // Provider Network + @DefaultStringValue("External ID") + String externalIdProviderNetwork(); + + @DefaultStringValue("Discover") + String discoverProviderNetwork(); } 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 2c3bdfe..22998b9 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 @@ -77,6 +77,7 @@ import org.ovirt.engine.ui.uicommonweb.models.pools.PoolVmListModel; import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderListModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderNetworkListModel; import org.ovirt.engine.ui.uicommonweb.models.quota.QuotaClusterListModel; import org.ovirt.engine.ui.uicommonweb.models.quota.QuotaEventListModel; import org.ovirt.engine.ui.uicommonweb.models.quota.QuotaListModel; @@ -195,6 +196,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.pool.SubTabPoolVmPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.provider.ProviderSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.provider.SubTabProviderGeneralPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.provider.SubTabProviderNetworkPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.quota.QuotaSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.quota.SubTabQuotaClusterPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.quota.SubTabQuotaEventPresenter; @@ -716,4 +718,8 @@ AsyncProvider<SubTabProviderGeneralPresenter> getSubTabProviderGeneralPresenter(); DetailModelProvider<ProviderListModel, ProviderGeneralModel> getSubTabProviderGeneralModelProvider(); + + AsyncProvider<SubTabProviderNetworkPresenter> getSubTabProviderNetworkPresenter(); + + SearchableDetailModelProvider<Network, ProviderListModel, ProviderNetworkListModel> getSubTabProviderNetworkModelProvider(); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java index 892ddac..92cff8f 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java @@ -151,6 +151,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.pool.SubTabPoolVmPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.provider.ProviderSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.provider.SubTabProviderGeneralPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.provider.SubTabProviderNetworkPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.quota.QuotaSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.quota.SubTabQuotaClusterPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.quota.SubTabQuotaEventPresenter; @@ -342,6 +343,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.tab.pool.SubTabPoolVmView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.provider.ProviderSubTabPanelView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.provider.SubTabProviderGeneralView; +import org.ovirt.engine.ui.webadmin.section.main.view.tab.provider.SubTabProviderNetworkView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.quota.QuotaSubTabPanelView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.quota.SubTabQuotaClusterView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.quota.SubTabQuotaEventView; @@ -874,6 +876,10 @@ SubTabProviderGeneralPresenter.ViewDef.class, SubTabProviderGeneralView.class, SubTabProviderGeneralPresenter.ProxyDef.class); + bindPresenter(SubTabProviderNetworkPresenter.class, + SubTabProviderNetworkPresenter.ViewDef.class, + SubTabProviderNetworkView.class, + SubTabProviderNetworkPresenter.ProxyDef.class); // Main section: popups diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java index 95cc7d4..36ef4d8 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/ProviderModule.java @@ -1,16 +1,20 @@ package org.ovirt.engine.ui.webadmin.gin.uicommon; +import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; import org.ovirt.engine.ui.common.presenter.popup.RemoveConfirmationPopupPresenterWidget; import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider; import org.ovirt.engine.ui.common.uicommon.model.DetailTabModelProvider; import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.common.uicommon.model.MainTabModelProvider; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailTabModelProvider; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderListModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderNetworkListModel; import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.provider.ProviderPopupPresenterWidget; @@ -66,6 +70,39 @@ ProviderGeneralModel.class); } + // Searchable Detail Models + + @Provides + @Singleton + public SearchableDetailModelProvider<Network, ProviderListModel, ProviderNetworkListModel> getNetworkClusterListProvider(ClientGinjector ginjector, + // final Provider<DicoverProviderPopupPresenterWidget> discoverPopupProvider, + final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider) { + return new SearchableDetailTabModelProvider<Network, ProviderListModel, ProviderNetworkListModel>(ginjector, + ProviderListModel.class, + ProviderNetworkListModel.class) { + @Override + public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(ProviderNetworkListModel source, + UICommand lastExecutedCommand, + Model windowModel) { + // if (lastExecutedCommand == getModel().getDiscoverCommand()) { + // return discoverPopupProvider.get(); + // } else { + return super.getModelPopup(source, lastExecutedCommand, windowModel); + // } + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(ProviderNetworkListModel source, + UICommand lastExecutedCommand) { + if (lastExecutedCommand == getModel().getRemoveCommand()) { + return removeConfirmPopupProvider.get(); + } else { + return super.getConfirmModelPopup(source, lastExecutedCommand); + } + } + }; + } + @Override protected void configure() { } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java index 7d3739b..f71aeb2 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java @@ -297,6 +297,9 @@ // Provider public static final String providerGeneralSubTabPlace = providerMainTabPlace + SUB_TAB_PREFIX + "general"; //$NON-NLS-1$ + public static final String providerNetworkSubTabPlace = providerMainTabPlace + SUB_TAB_PREFIX + + "networks"; //$NON-NLS-1$ + // Default places diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/provider/SubTabProviderNetworkPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/provider/SubTabProviderNetworkPresenter.java new file mode 100644 index 0000000..4723e40 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/provider/SubTabProviderNetworkPresenter.java @@ -0,0 +1,65 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.provider; + +import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter; +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.providers.ProviderListModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderNetworkListModel; +import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; +import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.ProviderSelectionChangeEvent; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.gwtplatform.mvp.client.TabData; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit; +import com.gwtplatform.mvp.client.annotations.ProxyEvent; +import com.gwtplatform.mvp.client.annotations.TabInfo; +import com.gwtplatform.mvp.client.proxy.PlaceManager; +import com.gwtplatform.mvp.client.proxy.PlaceRequest; +import com.gwtplatform.mvp.client.proxy.RevealContentEvent; +import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace; + +public class SubTabProviderNetworkPresenter extends AbstractSubTabPresenter<Provider, ProviderListModel, ProviderNetworkListModel, SubTabProviderNetworkPresenter.ViewDef, SubTabProviderNetworkPresenter.ProxyDef> { + + @ProxyCodeSplit + @NameToken(ApplicationPlaces.providerNetworkSubTabPlace) + public interface ProxyDef extends TabContentProxyPlace<SubTabProviderNetworkPresenter> { + } + + public interface ViewDef extends AbstractSubTabPresenter.ViewDef<Provider> { + } + + @TabInfo(container = ProviderSubTabPanelPresenter.class) + static TabData getTabData(ClientGinjector ginjector) { + return new ModelBoundTabData(ginjector.getApplicationConstants().providerNetworksSubTabLabel(), 1, + ginjector.getSubTabProviderNetworkModelProvider()); + } + + @Inject + public SubTabProviderNetworkPresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, + PlaceManager placeManager, + SearchableDetailModelProvider<Network, ProviderListModel, ProviderNetworkListModel> modelProvider) { + super(eventBus, view, proxy, placeManager, modelProvider); + } + + @Override + protected void revealInParent() { + RevealContentEvent.fire(this, ProviderSubTabPanelPresenter.TYPE_SetTabContent, this); + } + + @Override + protected PlaceRequest getMainTabRequest() { + return new PlaceRequest(ApplicationPlaces.providerMainTabPlace); + } + + @ProxyEvent + public void onProviderSelectionChange(ProviderSelectionChangeEvent event) { + updateMainTabSelection(event.getSelectedItems()); + } + +} + diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/provider/SubTabProviderNetworkView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/provider/SubTabProviderNetworkView.java new file mode 100644 index 0000000..4d2ce00 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/provider/SubTabProviderNetworkView.java @@ -0,0 +1,68 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.tab.provider; + +import javax.inject.Inject; + +import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.businessentities.network.Network; +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.providers.ProviderListModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.ProviderNetworkListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationResources; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.provider.SubTabProviderNetworkPresenter; +import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView; +import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; + +public class SubTabProviderNetworkView extends AbstractSubTabTableView<Provider, Network, ProviderListModel, ProviderNetworkListModel> + implements SubTabProviderNetworkPresenter.ViewDef { + + private final ApplicationConstants constants; + + @Inject + public SubTabProviderNetworkView(SearchableDetailModelProvider<Network, ProviderListModel, ProviderNetworkListModel> modelProvider, + ApplicationConstants constants, + ApplicationResources resources) { + super(modelProvider); + this.constants = constants; + initTable(); + initWidget(getTable()); + } + + void initTable() { + + TextColumnWithTooltip<Network> nameColumn = + new TextColumnWithTooltip<Network>() { + @Override + public String getValue(Network object) { + return object.getName(); + } + }; + getTable().addColumn(nameColumn, constants.nameNetwork()); + + TextColumnWithTooltip<Network> externalIdColumn = + new TextColumnWithTooltip<Network>() { + @Override + public String getValue(Network object) { + return object.getId().toString(); + } + }; + getTable().addColumn(externalIdColumn, constants.externalIdProviderNetwork(), "130px"); //$NON-NLS-1$ + + getTable().addActionButton(new WebAdminButtonDefinition<Network>(constants.discoverProviderNetwork()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getDiscoverCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<Network>(constants.removeNetwork()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getRemoveCommand(); + } + }); + } + +} -- To view, visit http://gerrit.ovirt.org/15028 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5806572ec4ac0c7b892dfa8ef714d8f93a8459a7 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <lver...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches