class SettingsPresenter {

    Promise<Object> setupSection(final ProjectScreenModel model,
                                 final Section<ProjectScreenModel> section) {

        return section.setup(model)
                .then(i -> {
                    sectionManager.resetDirtyIndicator(section);
                    return promises.resolve();
                }).catch_(e -> {
                    sectionManager.remove(section);
                    notificationEvent.fire(new NotificationEvent(getSectionSetupErrorMessage(section), WARNING));
                    return promises.resolve();
                });
    }

    @Inject public  SettingsPresenter(final View view,
                             final Promises promises,
                             final Event<NotificationEvent> notificationEvent,
                             final @Customizable SettingsSections<ProjectScreenModel> settingsSections,
                             final SavePopUpPresenter savePopUpPresenter,
                             final Caller<ProjectScreenService> projectScreenService,
                             final WorkspaceProjectContext projectContext,
                             final ManagedInstance<ObservablePath> observablePaths,
                             final ConflictingRepositoriesPopup conflictingRepositoriesPopup,
                             final SectionManager<ProjectScreenModel> sectionManager,
                             final ProjectController projectController);

}