class GeneralSettingsPresenter extends Section<ProjectScreenModel> {

    @Override
    public Promise<Void> setup(final ProjectScreenModel model) {

        pom = model.getPOM();

        view.init(this);
        view.setName(pom.getName());
        view.setDescription(pom.getDescription());
        view.setGroupId(pom.getGav().getGroupId());
        view.setArtifactId(pom.getGav().getArtifactId());
        view.setVersion(pom.getGav().getVersion());

        gitUrlsPresenter.setup(model.getGitUrls());
        view.setGitUrlsView(gitUrlsPresenter.getView());

        return promises.create((resolve, reject) -> {
            gavPreferences.load(projectScopedResolutionStrategySupplier.get(), gavPreferences -> {
                view.setConflictingGAVCheckDisabled(gavPreferences.isConflictingGAVCheckDisabled());
                view.setChildGavEditEnabled(gavPreferences.isChildGAVEditEnabled());
                resolve.onInvoke(promises.resolve());
            }, reject::onInvoke);
        });
    }

    @Inject public  GeneralSettingsPresenter(final View view,
                                    final Promises promises,
                                    final MenuItem<ProjectScreenModel> menuItem,
                                    final Caller<ValidationService> validationService,
                                    final Caller<WorkspaceProjectService> projectService,
                                    final Event<SettingsSectionChange<ProjectScreenModel>> settingsSectionChangeEvent,
                                    final GAVPreferences gavPreferences,
                                    final ProjectScopedResolutionStrategySupplier projectScopedResolutionStrategySupplier,
                                    final GitUrlsPresenter gitUrlsPresenter,
                                    final LibraryPlaces libraryPlaces);

}