blob: abfaa6eb17deb253d83075bbb899750061206498 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 Mateusz Matela 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:
* Mateusz Matela <mateusz.matela@gmail.com> - Initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.ui.preferences.formatter;
import java.util.Map;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
public class ParenthesesTabPage extends FormatterTabPage {
private final String PREVIEW=
createPreviewHeader(FormatterMessages.ParenthesesTabPage_preview_header) +
"public class Example {\n" + //$NON-NLS-1$
" enum SomeEnum {\n" + //$NON-NLS-1$
" VALUE1(), VALUE2(\"example\")\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" @SomeAnnotation(key1 = \"value1\", key2 = \"value2\")\n" + //$NON-NLS-1$
" void method1() {\n" + //$NON-NLS-1$
" for (int counter = 0; counter < 100; counter++) {\n" + //$NON-NLS-1$
" if (counter % 2 == 0 && counter % 7 == 0 && counter % 13 == 0) {\n" + //$NON-NLS-1$
" try (AutoCloseable resource = null) {\n" + //$NON-NLS-1$
" // read resource\n" + //$NON-NLS-1$
" } catch (Exception e) {\n" + //$NON-NLS-1$
" e.printStackTrace();\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" @Deprecated()\n" + //$NON-NLS-1$
" void method2(String argument\n" + //$NON-NLS-1$
" ) {\n" + //$NON-NLS-1$
" this.method3(this, this, this, \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\", \"bbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\n" + //$NON-NLS-1$
" \"ccccccccccccccccccc\");\n" + //$NON-NLS-1$
" do {\n" + //$NON-NLS-1$
" this.method1();\n" + //$NON-NLS-1$
" } while (this.toString()//\n" + //$NON-NLS-1$
" .contains(argument));\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" void method3(\n" + //$NON-NLS-1$
" Example argument1, Example argument2, Example argument3, String argument4, String argument5,\n" + //$NON-NLS-1$
" String argument6) {\n" + //$NON-NLS-1$
" method1();\n" + //$NON-NLS-1$
" while (argument1.toString().contains(argument4)\n" + //$NON-NLS-1$
" ) {\n" + //$NON-NLS-1$
" argument1.method2(argument5);\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" java.util.function.BiConsumer<Integer, Integer> lambda = (Integer a, Integer b) -> {\n" + //$NON-NLS-1$
" switch (a.intValue()) {\n" + //$NON-NLS-1$
" case 0:\n" + //$NON-NLS-1$
" break;\n" + //$NON-NLS-1$
" }\n" + //$NON-NLS-1$
" };\n" + //$NON-NLS-1$
"}"; //$NON-NLS-1$
private CompilationUnitPreview fPreview;
private final String[] fPositions= {
DefaultCodeFormatterConstants.COMMON_LINES,
DefaultCodeFormatterConstants.SEPARATE_LINES_IF_WRAPPED,
DefaultCodeFormatterConstants.SEPARATE_LINES,
DefaultCodeFormatterConstants.PRESERVE_POSITIONS,
};
private final String[] fPositionNames= {
FormatterMessages.ParenthesesTabPage_positions_common_lines,
FormatterMessages.ParenthesesTabPage_positions_separate_lines_if_wrapped,
FormatterMessages.ParenthesesTabPage_positions_separate_lines,
FormatterMessages.ParenthesesTabPage_positions_preserve_positions,
};
private final String[] fPositionsWithEmpty= {
DefaultCodeFormatterConstants.COMMON_LINES,
DefaultCodeFormatterConstants.SEPARATE_LINES_IF_WRAPPED,
DefaultCodeFormatterConstants.SEPARATE_LINES_IF_NOT_EMPTY,
DefaultCodeFormatterConstants.SEPARATE_LINES,
DefaultCodeFormatterConstants.PRESERVE_POSITIONS,
};
private final String[] fPositionNamesWithEmpty= {
FormatterMessages.ParenthesesTabPage_positions_common_lines,
FormatterMessages.ParenthesesTabPage_positions_separate_lines_if_wrapped,
FormatterMessages.ParenthesesTabPage_positions_separate_lines_if_not_empty,
FormatterMessages.ParenthesesTabPage_positions_separate_lines,
FormatterMessages.ParenthesesTabPage_positions_preserve_positions,
};
/**
* Creates a new ParenthesesTabPage.
*
* @param modifyListener the modification listener
* @param workingValues the working values
*/
public ParenthesesTabPage(IModificationListener modifyListener, Map<String, String> workingValues) {
super(modifyListener, workingValues);
}
@Override
protected void doCreatePreferences(Composite composite, int numColumns) {
final Group group= createGroup(numColumns, composite, FormatterMessages.ParenthesesTabPage_group_parentheses_positions);
createParensCombo(group, numColumns, true, FormatterMessages.ParenthesesTabPage_option_method_declaration, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_METHOD_DECLARATION);
createParensCombo(group, numColumns, true, FormatterMessages.ParenthesesTabPage_option_method_invocation, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_METHOD_INVOCATION);
createParensCombo(group, numColumns, true, FormatterMessages.ParenthesesTabPage_option_enum_constant_declaration, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_ENUM_CONSTANT_DECLARATION);
createParensCombo(group, numColumns, true, FormatterMessages.ParenthesesTabPage_option_annotation, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_ANNOTATION);
createParensCombo(group, numColumns, true, FormatterMessages.ParenthesesTabPage_option_lambda_declaration, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_LAMBDA_DECLARATION);
createParensCombo(group, numColumns, false, FormatterMessages.ParenthesesTabPage_option_if_while_statement, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_IF_WHILE_STATEMENT);
createParensCombo(group, numColumns, false, FormatterMessages.ParenthesesTabPage_option_for_statement, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_FOR_STATEMENT);
createParensCombo(group, numColumns, false, FormatterMessages.ParenthesesTabPage_option_switch_statement, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_SWITCH_STATEMENT);
createParensCombo(group, numColumns, false, FormatterMessages.ParenthesesTabPage_option_try_clause, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_TRY_CLAUSE);
createParensCombo(group, numColumns, false, FormatterMessages.ParenthesesTabPage_option_catch_clause, DefaultCodeFormatterConstants.FORMATTER_PARENTHESES_POSITIONS_IN_CATCH_CLAUSE);
}
@Override
protected void initializePage() {
fPreview.setPreviewText(PREVIEW);
}
@Override
protected JavaPreview doCreateJavaPreview(Composite parent) {
fPreview= new CompilationUnitPreview(fWorkingValues, parent);
return fPreview;
}
private ComboPreference createParensCombo(Composite composite, int numColumns, boolean includeEmpty, String message, String key) {
return createComboPref(composite, numColumns, message, key, includeEmpty ? fPositionsWithEmpty : fPositions, includeEmpty ? fPositionNamesWithEmpty : fPositionNames);
}
@Override
protected void doUpdatePreview() {
super.doUpdatePreview();
fPreview.update();
}
}