private void foldingSection() {
    final Composite group = createGroup(2, "Source folding");
    Composite p0 = getFieldEditorParent(group);
    GridData gd = new GridData();
    gd.horizontalSpan = 2;
    p0.setLayoutData(gd);
    enableFolding = new SpecialBoolFieldEditor(EDITOR_FOLDING_ENABLED, "Enable source folding", p0);
    enableFolding.load();
    addField(enableFolding);

    final Composite composite = new Composite(group, SWT.NONE);
    GridLayout layout = new GridLayout(1, true);
    composite.setLayout(layout);
    GridData gd2 = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    gd2.grabExcessHorizontalSpace = true;
    composite.setLayoutData(gd2);

    final Composite p1 = getFieldEditorParent(composite);
    autoFoldImports =
        new BooleanFieldEditor(AUTO_FOLD_IMPORTS, "Automatically fold import lists", p1);
    autoFoldImports.load();
    addField(autoFoldImports);
    final Composite p2 = getFieldEditorParent(composite);
    autoFoldComments =
        new BooleanFieldEditor(AUTO_FOLD_COMMENTS, "Automatically fold comments", p2);
    autoFoldComments.load();
    addField(autoFoldComments);

    boolean enabled = EditorsUI.getPreferenceStore().getBoolean(EDITOR_FOLDING_ENABLED);
    autoFoldImports.setEnabled(enabled, p1);
    autoFoldComments.setEnabled(enabled, p2);
    //        composite.setVisible(enabled);
    //        composite.setEnabled(enabled);
    //        ((GridData) composite.getLayoutData()).exclude = !enabled;
    enableFolding.setListener(
        new Listener() {
          @Override
          public void valueChanged(boolean oldValue, boolean newValue) {
            autoFoldImports.setEnabled(newValue, p1);
            autoFoldComments.setEnabled(newValue, p2);
            //                composite.setVisible(newValue);
            //                composite.setEnabled(newValue);
            //                ((GridData) composite.getLayoutData()).exclude = !newValue;
            //                group.layout();
          }
        });
  }
 @Override
 public boolean performOk() {
   bracketMatching.store();
   IPreferenceStore store = EditorsUI.getPreferenceStore();
   store.setValue(SELECTED_BRACKET, matchingBrackets.getSelection());
   store.setValue(ENCLOSING_BRACKETS, enclosingBrackets.getSelection());
   smartCaret.store();
   pasteCorrectIndent.store();
   pasteEscapeQuoted.store();
   pasteImports.store();
   autoFoldImports.store();
   autoFoldComments.store();
   closeAngles.store();
   closeBackticks.store();
   closeBraces.store();
   closeBrackets.store();
   closeParens.store();
   closeQuotes.store();
   enableFolding.store();
   return true;
 }
 @Override
 protected void performDefaults() {
   super.performDefaults();
   bracketMatching.loadDefault();
   IPreferenceStore store = EditorsUI.getPreferenceStore();
   matchingBrackets.setSelection(store.getDefaultBoolean(SELECTED_BRACKET));
   enclosingBrackets.setSelection(store.getDefaultBoolean(ENCLOSING_BRACKETS));
   oppositeBracket.setSelection(false);
   smartCaret.loadDefault();
   pasteCorrectIndent.loadDefault();
   pasteEscapeQuoted.loadDefault();
   pasteImports.loadDefault();
   autoFoldImports.loadDefault();
   autoFoldComments.loadDefault();
   closeAngles.loadDefault();
   closeBackticks.loadDefault();
   closeBraces.loadDefault();
   closeBrackets.loadDefault();
   closeParens.loadDefault();
   closeQuotes.loadDefault();
   enableFolding.store();
 }
  private void bracketHighlightingSection() {
    Group group = createGroup(1, "Bracket highlighting");
    Composite p = getFieldEditorParent(group);
    GridData gd = new GridData();
    gd.horizontalSpan = 1;
    p.setLayoutData(gd);
    bracketMatching =
        new SpecialBoolFieldEditor(MATCHING_BRACKET, "Enable matching bracket highlighting", p);
    bracketMatching.load();
    addField(bracketMatching);

    Composite composite = new Composite(group, SWT.NONE);
    GridLayout layout = new GridLayout(1, true);
    composite.setLayout(layout);
    GridData gd2 = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    gd2.grabExcessHorizontalSpace = true;
    composite.setLayoutData(gd2);

    oppositeBracket = new Button(composite, SWT.RADIO);
    oppositeBracket.setText("Matching bracket only");
    oppositeBracket.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            boolean selected = oppositeBracket.getSelection();
            matchingBrackets.setSelection(!selected);
            enclosingBrackets.setSelection(!selected);
          }
        });
    matchingBrackets = new Button(composite, SWT.RADIO);
    matchingBrackets.setText("Matching bracket and selected bracket");
    matchingBrackets.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            boolean selected = matchingBrackets.getSelection();
            oppositeBracket.setSelection(!selected);
            enclosingBrackets.setSelection(!selected);
          }
        });
    enclosingBrackets = new Button(composite, SWT.RADIO);
    enclosingBrackets.setText("Enclosing brackets");
    enclosingBrackets.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            boolean selected = enclosingBrackets.getSelection();
            matchingBrackets.setSelection(!selected);
            oppositeBracket.setSelection(!selected);
          }
        });

    IPreferenceStore store = EditorsUI.getPreferenceStore();
    matchingBrackets.setSelection(
        store.getBoolean(SELECTED_BRACKET) && !store.getBoolean(ENCLOSING_BRACKETS));
    enclosingBrackets.setSelection(store.getBoolean(ENCLOSING_BRACKETS));
    oppositeBracket.setSelection(
        !store.getBoolean(SELECTED_BRACKET) && !store.getBoolean(ENCLOSING_BRACKETS));

    boolean enabled = EditorsUI.getPreferenceStore().getBoolean(MATCHING_BRACKET);
    oppositeBracket.setEnabled(enabled);
    matchingBrackets.setEnabled(enabled);
    enclosingBrackets.setEnabled(enabled);
    bracketMatching.setListener(
        new Listener() {
          @Override
          public void valueChanged(boolean oldValue, boolean newValue) {
            oppositeBracket.setEnabled(newValue);
            matchingBrackets.setEnabled(newValue);
            enclosingBrackets.setEnabled(newValue);
          }
        });
  }