package org.ovirt.engine.ui.userportal.gin; import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.core.common.businessentities.GuestContainer; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.storage.Disk; import org.ovirt.engine.core.common.businessentities.storage.DiskImage; import org.ovirt.engine.ui.common.gin.BaseUiCommonModule; import org.ovirt.engine.ui.common.uicommon.model.OptionsProvider; import org.ovirt.engine.ui.uicommonweb.models.configure.UserPortalPermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolInterfaceListModel; import org.ovirt.engine.ui.uicommonweb.models.resources.ResourcesModel; import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateInterfaceListModel; import org.ovirt.engine.ui.uicommonweb.models.templates.UserPortalTemplateDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.templates.UserPortalTemplateEventListModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalBasicListModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalListModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalLoginModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalTemplateListModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.VmBasicDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.users.AdElementListModel; import org.ovirt.engine.ui.uicommonweb.models.users.UserPortalAdElementListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.UserPortalVmEventListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.UserPortalVmSnapshotListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGuestContainerListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmGuestInfoModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmInterfaceListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmMonitorModel; import org.ovirt.engine.ui.userportal.section.main.presenter.tab.extended.template.ExtendedTemplateMainTabSelectedItems; import org.ovirt.engine.ui.userportal.section.main.presenter.tab.extended.vm.ExtendedVmMainTabSelectedItems; import org.ovirt.engine.ui.userportal.uicommon.UserPortalConfigurator; import org.ovirt.engine.ui.userportal.uicommon.model.UserPortalDataBoundModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.UserPortalDetailModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.UserPortalSearchableDetailModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.basic.UserPortalBasicListProvider; import org.ovirt.engine.ui.userportal.uicommon.model.template.TemplateInterfaceListModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.template.TemplatePermissionListModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.template.UserPortalTemplateListProvider; import org.ovirt.engine.ui.userportal.uicommon.model.vm.UserPortalListProvider; import org.ovirt.engine.ui.userportal.uicommon.model.vm.VmDiskListModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.vm.VmInterfaceListModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.vm.VmMonitorModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.vm.VmPermissionListModelProvider; import org.ovirt.engine.ui.userportal.uicommon.model.vm.VmSnapshotListModelProvider; import com.google.inject.Singleton; import com.google.inject.TypeLiteral; /** * GIN module containing UserPortal UiCommon model and integration bindings. */ public class UiCommonModule extends BaseUiCommonModule { @Override protected void configure() { bindModels(); bindModelProviders(); bindIntegration(); bindMainTabEventHandlers(); } void bindModels() { bind(AdElementListModel.class).to(UserPortalAdElementListModel.class); // Basic tab bind(UserPortalBasicListModel.class).in(Singleton.class); bind(VmBasicDiskListModel.class).in(Singleton.class); // Extended tab: Virtual Machine bind(UserPortalListModel.class).in(Singleton.class); bind(VmGeneralModel.class).in(Singleton.class); bind(PoolGeneralModel.class).in(Singleton.class); bind(VmInterfaceListModel.class).in(Singleton.class); bind(VmDiskListModel.class).in(Singleton.class); bind(PoolDiskListModel.class).in(Singleton.class); bind(UserPortalVmSnapshotListModel.class).in(Singleton.class); bind(new TypeLiteral<UserPortalPermissionListModel<UserPortalListModel>>(){}).in(Singleton.class); bind(UserPortalVmEventListModel.class).in(Singleton.class); bind(new TypeLiteral<VmAppListModel<VM>>() {}).in(Singleton.class); bind(VmGuestContainerListModel.class).in(Singleton.class); bind(VmMonitorModel.class).in(Singleton.class); bind(PoolInterfaceListModel.class).in(Singleton.class); bind(VmGuestInfoModel.class).in(Singleton.class); // Extended tab: Template bind(UserPortalTemplateListModel.class).in(Singleton.class); bind(TemplateGeneralModel.class).in(Singleton.class); bind(TemplateInterfaceListModel.class).in(Singleton.class); bind(new TypeLiteral<UserPortalPermissionListModel<VmTemplate>>(){}).in(Singleton.class); bind(UserPortalTemplateDiskListModel.class).in(Singleton.class); bind(UserPortalTemplateEventListModel.class).in(Singleton.class); // Extended tab: Resources bind(ResourcesModel.class).in(Singleton.class); } void bindModelProviders() { // Basic tab bind(UserPortalBasicListProvider.class).in(Singleton.class); // Options bind(OptionsProvider.class).in(Singleton.class); // Extended tab: Virtual Machine bind(UserPortalListProvider.class).in(Singleton.class); bind(new TypeLiteral<UserPortalDetailModelProvider<UserPortalListModel, VmGeneralModel>>(){}) .in(Singleton.class); bind(new TypeLiteral<UserPortalDetailModelProvider<UserPortalListModel, PoolGeneralModel>>(){}) .in(Singleton.class); bind(VmInterfaceListModelProvider.class).in(Singleton.class); bind(VmDiskListModelProvider.class).in(Singleton.class); bind(new TypeLiteral<UserPortalSearchableDetailModelProvider<Disk, UserPortalListModel, PoolDiskListModel>>(){}) .in(Singleton.class); bind(VmSnapshotListModelProvider.class).in(Singleton.class); bind(VmPermissionListModelProvider.class).in(Singleton.class); bind(new TypeLiteral<UserPortalSearchableDetailModelProvider<AuditLog, UserPortalListModel, UserPortalVmEventListModel>>(){}).in(Singleton.class); bind(new TypeLiteral<UserPortalSearchableDetailModelProvider<String, UserPortalListModel, VmAppListModel<VM>>>(){}) .in(Singleton.class); bind(new TypeLiteral<UserPortalSearchableDetailModelProvider<GuestContainer, UserPortalListModel, VmGuestContainerListModel>>(){}) .in(Singleton.class); bind(VmMonitorModelProvider.class).in(Singleton.class); bind(new TypeLiteral<UserPortalSearchableDetailModelProvider<VmNetworkInterface, UserPortalListModel, PoolInterfaceListModel>>(){}).in(Singleton.class); bind(new TypeLiteral<UserPortalDetailModelProvider<UserPortalListModel, VmGuestInfoModel>>(){}) .in(Singleton.class); // Extended tab: Template bind(UserPortalTemplateListProvider.class).in(Singleton.class); bind(new TypeLiteral<UserPortalDetailModelProvider<UserPortalTemplateListModel, TemplateGeneralModel>>(){}) .in(Singleton.class); bind(TemplateInterfaceListModelProvider.class).in(Singleton.class); bind(new TypeLiteral<UserPortalSearchableDetailModelProvider<DiskImage, UserPortalTemplateListModel, UserPortalTemplateDiskListModel>>(){}).in(Singleton.class); bind(new TypeLiteral<UserPortalSearchableDetailModelProvider<AuditLog, UserPortalTemplateListModel, UserPortalTemplateEventListModel>>(){}).in(Singleton.class); bind(TemplatePermissionListModelProvider.class).in(Singleton.class); // Extended tab: Resources bind(new TypeLiteral<UserPortalDataBoundModelProvider<VM, ResourcesModel>>(){}).in(Singleton.class); } void bindIntegration() { bindCommonIntegration(); bindConfiguratorIntegration(UserPortalConfigurator.class); bind(UserPortalLoginModel.class).in(Singleton.class); } void bindMainTabEventHandlers() { bind(ExtendedTemplateMainTabSelectedItems.class).asEagerSingleton(); bind(ExtendedVmMainTabSelectedItems.class).asEagerSingleton(); } }