diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ControlStatementsTabPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ControlStatementsTabPage.java new file mode 100644 index 00000000000..0ca0442a4aa --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ControlStatementsTabPage.java @@ -0,0 +1,139 @@ +/******************************************************************************* + * Copyright (c) 2000, 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.internal.ui.preferences.formatter; + +import java.util.Map; +import java.util.Observable; +import java.util.Observer; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; + +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants; + + +public class ControlStatementsTabPage extends FormatterTabPage { + + /** + * Constant array for boolean selection + */ + private static String[] FALSE_TRUE = { + DefaultCodeFormatterConstants.FALSE, + DefaultCodeFormatterConstants.TRUE + }; + + /** + * Constant array for insert / not_insert. + */ + private static String[] DO_NOT_INSERT_INSERT = { + CCorePlugin.DO_NOT_INSERT, + CCorePlugin.INSERT + }; + + + private final String PREVIEW= + createPreviewHeader(FormatterMessages.ControlStatementsTabPage_preview_header) + + "class Example {" + //$NON-NLS-1$ + " void bar() {" + //$NON-NLS-1$ + " do {} while (true);" + //$NON-NLS-1$ + " try {} catch (...) { }" + //$NON-NLS-1$ + " }" + //$NON-NLS-1$ + " void foo2() {" + //$NON-NLS-1$ + " if (true) { " + //$NON-NLS-1$ + " return;" + //$NON-NLS-1$ + " }" + //$NON-NLS-1$ + " if (true) {" + //$NON-NLS-1$ + " return;" + //$NON-NLS-1$ + " } else if (false) {" + //$NON-NLS-1$ + " return; " + //$NON-NLS-1$ + " } else {" + //$NON-NLS-1$ + " return;" + //$NON-NLS-1$ + " }" + //$NON-NLS-1$ + " }" + //$NON-NLS-1$ + " void foo(int state) {" + //$NON-NLS-1$ + " if (true) return;" + //$NON-NLS-1$ + " if (true) " + //$NON-NLS-1$ + " return;" + //$NON-NLS-1$ + " else if (false)" + //$NON-NLS-1$ + " return;" + //$NON-NLS-1$ + " else return;" + //$NON-NLS-1$ + " }" + //$NON-NLS-1$ + "};"; //$NON-NLS-1$ + + + private TranslationUnitPreview fPreview; + + protected CheckboxPreference fThenStatementPref, fSimpleIfPref; + + + public ControlStatementsTabPage(ModifyDialog modifyDialog, Map workingValues) { + super(modifyDialog, workingValues); + } + + protected void doCreatePreferences(Composite composite, int numColumns) { + + final Group generalGroup= createGroup(numColumns, composite, FormatterMessages.ControlStatementsTabPage_general_group_title); + createOption(generalGroup, numColumns, FormatterMessages.ControlStatementsTabPage_general_group_insert_new_line_before_else_statements, DefaultCodeFormatterConstants.FORMATTER_INSERT_NEW_LINE_BEFORE_ELSE_IN_IF_STATEMENT, DO_NOT_INSERT_INSERT); + createOption(generalGroup, numColumns, FormatterMessages.ControlStatementsTabPage_general_group_insert_new_line_before_catch_statements, DefaultCodeFormatterConstants.FORMATTER_INSERT_NEW_LINE_BEFORE_CATCH_IN_TRY_STATEMENT, DO_NOT_INSERT_INSERT); + createOption(generalGroup, numColumns, FormatterMessages.ControlStatementsTabPage_general_group_insert_new_line_before_while_in_do_statements, DefaultCodeFormatterConstants.FORMATTER_INSERT_NEW_LINE_BEFORE_WHILE_IN_DO_STATEMENT, DO_NOT_INSERT_INSERT); + + final Group ifElseGroup= createGroup(numColumns, composite, FormatterMessages.ControlStatementsTabPage_if_else_group_title); + fThenStatementPref= createOption(ifElseGroup, numColumns, FormatterMessages.ControlStatementsTabPage_if_else_group_keep_then_on_same_line, DefaultCodeFormatterConstants.FORMATTER_KEEP_THEN_STATEMENT_ON_SAME_LINE, FALSE_TRUE); + + Label l= new Label(ifElseGroup, SWT.NONE); + GridData gd= new GridData(); + gd.widthHint= fPixelConverter.convertWidthInCharsToPixels(4); + l.setLayoutData(gd); + + fSimpleIfPref= createOption(ifElseGroup, numColumns - 1, FormatterMessages.ControlStatementsTabPage_if_else_group_keep_simple_if_on_one_line, DefaultCodeFormatterConstants.FORMATTER_KEEP_SIMPLE_IF_ON_ONE_LINE, FALSE_TRUE); + + fThenStatementPref.addObserver( new Observer() { + public void update(Observable o, Object arg) { + fSimpleIfPref.setEnabled(!fThenStatementPref.getChecked()); + } + + }); + + fSimpleIfPref.setEnabled(!fThenStatementPref.getChecked()); + + createOption(ifElseGroup, numColumns, FormatterMessages.ControlStatementsTabPage_if_else_group_keep_else_on_same_line, DefaultCodeFormatterConstants.FORMATTER_KEEP_ELSE_STATEMENT_ON_SAME_LINE, FALSE_TRUE); + createCheckboxPref(ifElseGroup, numColumns, FormatterMessages.ControlStatementsTabPage_if_else_group_keep_else_if_on_one_line, DefaultCodeFormatterConstants.FORMATTER_COMPACT_ELSE_IF, FALSE_TRUE); +// createCheckboxPref(ifElseGroup, numColumns, FormatterMessages.ControlStatementsTabPage_if_else_group_keep_guardian_clause_on_one_line, DefaultCodeFormatterConstants.FORMATTER_KEEP_GUARDIAN_CLAUSE_ON_ONE_LINE, FALSE_TRUE); + } + + protected void initializePage() { + fPreview.setPreviewText(PREVIEW); + } + + /* + * @see org.eclipse.cdt.internal.ui.preferences.formatter.ModifyDialogTabPage#doCreateCPreview(org.eclipse.swt.widgets.Composite) + */ + protected CPreview doCreateCPreview(Composite parent) { + fPreview= new TranslationUnitPreview(fWorkingValues, parent); + return fPreview; + } + + /* + * @see org.eclipse.cdt.internal.ui.preferences.formatter.ModifyDialogTabPage#doUpdatePreview() + */ + protected void doUpdatePreview() { + super.doUpdatePreview(); + fPreview.update(); + } + + private CheckboxPreference createOption(Composite composite, int span, String name, String key, String [] values) { + return createCheckboxPref(composite, span, name, key, values); + } +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterMessages.java index a0df5bc6285..c624dc02e73 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterMessages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterMessages.java @@ -320,17 +320,16 @@ final class FormatterMessages extends NLS { // public static String CommentsTabPage_new_line_after_param_tags; // public static String CommentsTabPage_group3_title; // public static String CommentsTabPage_line_width; -// public static String ControlStatementsTabPage_preview_header; -// public static String ControlStatementsTabPage_general_group_title; -// public static String ControlStatementsTabPage_general_group_insert_new_line_before_else_statements; -// public static String ControlStatementsTabPage_general_group_insert_new_line_before_catch_statements; -// public static String ControlStatementsTabPage_general_group_insert_new_line_before_finally_statements; -// public static String ControlStatementsTabPage_general_group_insert_new_line_before_while_in_do_statements; -// public static String ControlStatementsTabPage_if_else_group_title; -// public static String ControlStatementsTabPage_if_else_group_keep_then_on_same_line; -// public static String ControlStatementsTabPage_if_else_group_keep_simple_if_on_one_line; -// public static String ControlStatementsTabPage_if_else_group_keep_else_on_same_line; -// public static String ControlStatementsTabPage_if_else_group_keep_else_if_on_one_line; + public static String ControlStatementsTabPage_preview_header; + public static String ControlStatementsTabPage_general_group_title; + public static String ControlStatementsTabPage_general_group_insert_new_line_before_else_statements; + public static String ControlStatementsTabPage_general_group_insert_new_line_before_catch_statements; + public static String ControlStatementsTabPage_general_group_insert_new_line_before_while_in_do_statements; + public static String ControlStatementsTabPage_if_else_group_title; + public static String ControlStatementsTabPage_if_else_group_keep_then_on_same_line; + public static String ControlStatementsTabPage_if_else_group_keep_simple_if_on_one_line; + public static String ControlStatementsTabPage_if_else_group_keep_else_on_same_line; + public static String ControlStatementsTabPage_if_else_group_keep_else_if_on_one_line; // public static String ControlStatementsTabPage_if_else_group_keep_guardian_clause_on_one_line; public static String CreateProfileDialog_status_message_profile_with_this_name_already_exists; public static String CreateProfileDialog_status_message_profile_name_is_empty; @@ -366,7 +365,7 @@ final class FormatterMessages extends NLS { public static String ModifyDialog_tabpage_whitespace_title; // public static String ModifyDialog_tabpage_blank_lines_title; // public static String ModifyDialog_tabpage_new_lines_title; -// public static String ModifyDialog_tabpage_control_statements_title; + public static String ModifyDialog_tabpage_control_statements_title; public static String ModifyDialog_tabpage_line_wrapping_title; // public static String ModifyDialog_tabpage_comments_title; public static String ModifyDialogTabPage_preview_label_text; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterMessages.properties index 33f7f1d05e4..6529fe3cc2f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterMessages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterMessages.properties @@ -364,18 +364,17 @@ CustomCodeFormatterBlock_contributed_formatter_warning=Contributed formatters ma #CommentsTabPage_line_width=Ma&ximum line width for comments: -#ControlStatementsTabPage_preview_header=If...else -#ControlStatementsTabPage_general_group_title=General -#ControlStatementsTabPage_general_group_insert_new_line_before_else_statements=Insert new line before '&else' in an 'if' statement -#ControlStatementsTabPage_general_group_insert_new_line_before_catch_statements=Insert new line before '&catch' in a 'try' statement -#ControlStatementsTabPage_general_group_insert_new_line_before_finally_statements=Insert new line before '&finally' in a 'try' statement -#ControlStatementsTabPage_general_group_insert_new_line_before_while_in_do_statements=Insert new line before 'w&hile' in a 'do' statement +ControlStatementsTabPage_preview_header=If...else +ControlStatementsTabPage_general_group_title=General +ControlStatementsTabPage_general_group_insert_new_line_before_else_statements=Insert new line before '&else' in an 'if' statement +ControlStatementsTabPage_general_group_insert_new_line_before_catch_statements=Insert new line before '&catch' in a 'try' statement +ControlStatementsTabPage_general_group_insert_new_line_before_while_in_do_statements=Insert new line before 'w&hile' in a 'do' statement -#ControlStatementsTabPage_if_else_group_title='if else' -#ControlStatementsTabPage_if_else_group_keep_then_on_same_line=Keep 'then' statement &on same line -#ControlStatementsTabPage_if_else_group_keep_simple_if_on_one_line=Keep &simple 'if' on one line -#ControlStatementsTabPage_if_else_group_keep_else_on_same_line=Keep 'else' st&atement on same line -#ControlStatementsTabPage_if_else_group_keep_else_if_on_one_line=&Keep 'else if' on one line +ControlStatementsTabPage_if_else_group_title='if else' +ControlStatementsTabPage_if_else_group_keep_then_on_same_line=Keep 'then' statement &on same line +ControlStatementsTabPage_if_else_group_keep_simple_if_on_one_line=Keep &simple 'if' on one line +ControlStatementsTabPage_if_else_group_keep_else_on_same_line=Keep 'else' st&atement on same line +ControlStatementsTabPage_if_else_group_keep_else_if_on_one_line=&Keep 'else if' on one line #ControlStatementsTabPage_if_else_group_keep_guardian_clause_on_one_line=Keep 'return' or 'throw' cla&use on one line CreateProfileDialog_status_message_profile_with_this_name_already_exists=A profile with this name already exists. @@ -429,7 +428,7 @@ ModifyDialog_tabpage_indentation_title=In&dentation ModifyDialog_tabpage_whitespace_title=&White Space #ModifyDialog_tabpage_blank_lines_title=Bla&nk Lines #ModifyDialog_tabpage_new_lines_title=New &Lines -#ModifyDialog_tabpage_control_statements_title=Con&trol Statements +ModifyDialog_tabpage_control_statements_title=Con&trol Statements ModifyDialog_tabpage_line_wrapping_title=Line Wra&pping #ModifyDialog_tabpage_comments_title=Co&mments diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterModifyDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterModifyDialog.java index 3f1cd97ee08..c1620507910 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterModifyDialog.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/FormatterModifyDialog.java @@ -29,7 +29,7 @@ public class FormatterModifyDialog extends ModifyDialog { addTabPage(FormatterMessages.ModifyDialog_tabpage_whitespace_title, new WhiteSpaceTabPage(this, values)); // addTabPage(FormatterMessages.ModifyDialog_tabpage_blank_lines_title, new BlankLinesTabPage(this, values)); // addTabPage(FormatterMessages.ModifyDialog_tabpage_new_lines_title, new NewLinesTabPage(this, values)); -// addTabPage(FormatterMessages.ModifyDialog_tabpage_control_statements_title, new ControlStatementsTabPage(this, values)); + addTabPage(FormatterMessages.ModifyDialog_tabpage_control_statements_title, new ControlStatementsTabPage(this, values)); addTabPage(FormatterMessages.ModifyDialog_tabpage_line_wrapping_title, new LineWrappingTabPage(this, values)); // addTabPage(FormatterMessages.ModifyDialog_tabpage_comments_title, new CommentsTabPage(this, values)); }