package org.ovirt.engine.ui.webadmin.gin.uicommon; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.common.businessentities.vm_pools; 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.configure.PermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolListModel; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolVmListModel; import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.AbstractModelBoundPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.RemoveConfirmationPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.uicommon.model.DetailModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.DetailTabModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.MainTabModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SearchableDetailTabModelProvider; import com.google.gwt.inject.client.AbstractGinModule; import com.google.inject.Provider; import com.google.inject.Provides; import com.google.inject.Singleton; public class PoolModule extends AbstractGinModule { // Main List Model @Provides @Singleton public MainModelProvider<vm_pools, PoolListModel> getPoolListProvider(ClientGinjector ginjector) { return new MainTabModelProvider<vm_pools, PoolListModel>(ginjector, PoolListModel.class); } // Form Detail Models @Provides @Singleton public DetailModelProvider<PoolListModel, PoolGeneralModel> getPoolGeneralProvider(ClientGinjector ginjector) { return new DetailTabModelProvider<PoolListModel, PoolGeneralModel>(ginjector, PoolListModel.class, PoolGeneralModel.class); } // Searchable Detail Models @Provides @Singleton public SearchableDetailModelProvider<permissions, PoolListModel, PermissionListModel> getPermissionListProvider(ClientGinjector ginjector, final Provider<PermissionsPopupPresenterWidget> popupProvider, final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider) { return new SearchableDetailTabModelProvider<permissions, PoolListModel, PermissionListModel>(ginjector, PoolListModel.class, PermissionListModel.class) { @Override protected AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(UICommand lastExecutedCommand) { PermissionListModel model = getModel(); if (lastExecutedCommand == model.getAddCommand()) { return popupProvider.get(); } else { return super.getModelPopup(lastExecutedCommand); } } @Override protected AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(UICommand lastExecutedCommand) { if (lastExecutedCommand == getModel().getRemoveCommand()) { return removeConfirmPopupProvider.get(); } else { return super.getConfirmModelPopup(lastExecutedCommand); } } }; } @Provides @Singleton public SearchableDetailModelProvider<VM, PoolListModel, PoolVmListModel> getPoolVmListProvider(ClientGinjector ginjector) { return new SearchableDetailTabModelProvider<VM, PoolListModel, PoolVmListModel>(ginjector, PoolListModel.class, PoolVmListModel.class); } @Override protected void configure() { } }