public ProjectAndPreferencesBlock(
      IProject project, IProjectPreference<Boolean> useProjectSettingsPref) {
    super();
    this.project = project;
    this.useProjectSettingsPref = useProjectSettingsPref;

    this.projectSettingsBlock = init_createProjectSettingsBlock2();

    useProjectSettingsField.registerListener(
        () -> projectSettingsBlock.setEnabled(useProjectSettingsField.getFieldValue()));

    bindToPreference(useProjectSettingsField, useProjectSettingsPref);

    addPrefElement(projectSettingsBlock);
    validation.addValidatableField(true, projectSettingsBlock.getStatusField());
  }
  @Override
  protected void createContents(Composite topControl) {
    useProjectSettingsField.createComponent(topControl, GridDataFactory.fillDefaults().create());

    String prefPageId = getWorkspacePrefPageId();
    Link link =
        createOpenPreferencesDialogLink(
            topControl, prefPageId, LABEL_ConfigureWorkspaceSettings, null);
    GridDataFactory.swtDefaults().align(SWT.END, SWT.CENTER).applyTo(link);

    SWTFactoryUtil.createLabel(
        topControl,
        SWT.SEPARATOR | SWT.HORIZONTAL,
        "",
        GridDataFactory.fillDefaults().span(2, 1).create());

    projectSettingsBlock.createComponent(
        topControl, gdFillDefaults().span(2, 1).grab(true, false).create());

    // Update projectSettingsBlock setEnabled status - because setEnabled only works after the
    // control is created.
    useProjectSettingsField.fireFieldValueChanged();
  }