class LibraryScreen {

    @PostConstruct
    public void init() {

        final OrganizationalUnit activeOU = projectContext.getActiveOrganizationalUnit()
                .orElseThrow(() -> new IllegalStateException("Cannot initialize library screen without an active organizational unit."));

        view.init(this);
        view.setTitle(activeOU.getName());
        view.setDescription(activeOU.getDescription());
        view.showSettingsTab(organizationalUnitController.canUpdateOrgUnit(activeOU));

        showProjects();

        contributorsListPresenter.setup(spaceContributorsListService,
                                        contributorsCount -> view.setContributorsCount(contributorsCount));
    }

    @Inject public  LibraryScreen(final View view,
                         final ManagedInstance<DeleteOrganizationalUnitPopUpPresenter> deleteOrganizationalUnitPopUpPresenters,
                         final WorkspaceProjectContext projectContext,
                         final ProjectController projectController,
                         final OrganizationalUnitController organizationalUnitController,
                         final EmptyLibraryScreen emptyLibraryScreen,
                         final PopulatedLibraryScreen populatedLibraryScreen,
                         final OrgUnitsMetricsScreen orgUnitsMetricsScreen,
                         final SettingsScreenPresenter settingsScreenPresenter,
                         final ContributorsListPresenter contributorsListPresenter,
                         final Caller<LibraryService> libraryService,
                         final Caller<OrganizationalUnitService> organizationalUnitService,
                         final LibraryPlaces libraryPlaces,
                         final SpaceContributorsListServiceImpl spaceContributorsListService,
                         final Event<NotificationEvent> notificationEvent,
                         final TranslationService translationService,
                         final Promises promises);

}