package org.ovirt.engine.ui.webadmin.gin; import org.ovirt.engine.ui.common.gin.BaseUiCommonModule; import org.ovirt.engine.ui.common.uicommon.model.DetailTabModelProvider; import org.ovirt.engine.ui.uicommonweb.models.CommonModel; import org.ovirt.engine.ui.uicommonweb.models.LoginModel; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeModel; import org.ovirt.engine.ui.uicommonweb.models.autocomplete.SearchSuggestModel; import org.ovirt.engine.ui.uicommonweb.models.bookmarks.BookmarkListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.SystemPermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.instancetypes.InstanceTypeGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.configure.instancetypes.InstanceTypeListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.roles_ui.RoleListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.roles_ui.RolePermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.ClusterPolicyClusterListModel; import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.ClusterPolicyListModel; import org.ovirt.engine.ui.uicommonweb.models.events.AlertListModel; import org.ovirt.engine.ui.uicommonweb.models.events.TaskListModel; import org.ovirt.engine.ui.uicommonweb.models.tags.TagListModel; import org.ovirt.engine.ui.webadmin.gin.uicommon.ClusterModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.DataCenterModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.DiskModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.ErrataModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.EventModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.HostModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.MacPoolModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.NetworkModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.PoolModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.ProviderModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.QuotaModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.SessionModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.StorageModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.TemplateModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.UserModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.VirtualMachineModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.VnicProfileModule; import org.ovirt.engine.ui.webadmin.gin.uicommon.VolumeModule; import org.ovirt.engine.ui.webadmin.uicommon.WebAdminConfigurator; import org.ovirt.engine.ui.webadmin.uicommon.model.AlertModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.BookmarkModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyClusterModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.ClusterPolicyModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.CpuProfilePermissionModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.DiskProfilePermissionModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.InstanceTypeModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.RoleModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.RolePermissionModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemPermissionModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.SystemTreeModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.TagModelProvider; import org.ovirt.engine.ui.webadmin.uicommon.model.TaskModelProvider; import com.google.inject.Singleton; import com.google.inject.TypeLiteral; /** * GIN module containing WebAdmin UiCommon model and integration bindings. */ public class UiCommonModule extends BaseUiCommonModule { @Override protected void configure() { bindModels(); bindIntegration(); } void bindModels() { // All model providers are ultimately referenced via ModelBoundTabData // and are therefore created early on, just like eager singletons install(new DataCenterModule()); install(new StorageModule()); install(new ClusterModule()); install(new VirtualMachineModule()); install(new HostModule()); install(new PoolModule()); install(new TemplateModule()); install(new UserModule()); install(new EventModule()); install(new QuotaModule()); install(new VolumeModule()); install(new DiskModule()); install(new NetworkModule()); install(new ProviderModule()); install(new VnicProfileModule()); install(new MacPoolModule()); install(new ErrataModule()); install(new SessionModule()); bindCommonModels(); // SystemTreeModel bind(SystemTreeModelProvider.class).asEagerSingleton(); // BookmarkListModel bind(BookmarkModelProvider.class).asEagerSingleton(); // TagListModel bind(TagModelProvider.class).asEagerSingleton(); // AlertListModel bind(AlertModelProvider.class).in(Singleton.class); // TaskListModel bind(TaskModelProvider.class).in(Singleton.class); // RoleListModel bind(RoleModelProvider.class).in(Singleton.class); // RolePermissionListModel bind(RolePermissionModelProvider.class).in(Singleton.class); // SystemPermissionListModel bind(SystemPermissionModelProvider.class).in(Singleton.class); // ClusterPolicyListModel bind(ClusterPolicyModelProvider.class).in(Singleton.class); // ClusterPolicyClusterListModel bind(ClusterPolicyClusterModelProvider.class).in(Singleton.class); bind(InstanceTypeModelProvider.class).in(Singleton.class); bind(new TypeLiteral<DetailTabModelProvider<InstanceTypeListModel, InstanceTypeGeneralModel>>(){}).in(Singleton.class); // disk profiles permissions bind(DiskProfilePermissionModelProvider.class).in(Singleton.class); // cpu profiles permissions bind(CpuProfilePermissionModelProvider.class).in(Singleton.class); } void bindIntegration() { bindCommonIntegration(); bindConfiguratorIntegration(WebAdminConfigurator.class); bind(LoginModel.class).in(Singleton.class); } void bindCommonModels() { bind(CommonModel.class).in(Singleton.class); bind(PermissionListModel.class).in(Singleton.class); bind(RoleListModel.class).in(Singleton.class); bind(RolePermissionListModel.class).in(Singleton.class); bind(SystemPermissionListModel.class).in(Singleton.class); bind(ClusterPolicyListModel.class).in(Singleton.class); bind(ClusterPolicyClusterListModel.class).in(Singleton.class); bind(InstanceTypeListModel.class).in(Singleton.class); bind(InstanceTypeGeneralModel.class).in(Singleton.class); bind(SearchSuggestModel.class).in(Singleton.class); bind(BookmarkListModel.class).in(Singleton.class); bind(TagListModel.class).in(Singleton.class); bind(SystemTreeModel.class).in(Singleton.class); bind(AlertListModel.class).in(Singleton.class); bind(TaskListModel.class).in(Singleton.class); } }