/******************************************************************************* * Copyright (c) 2000, 2011, 2013 QNX Software Systems 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: * QNX Software Systems - Initial API and implementation * Sergey Prigogin (Google) * Anton Leherbauer (Wind River Systems) * Red Hat Inc. - modified for use in SystemTap *******************************************************************************/ package org.eclipse.linuxtools.internal.systemtap.ui.ide.editors.stp; import org.eclipse.linuxtools.internal.systemtap.ui.ide.IDEPlugin; /** * Constants used to set up the options of the code formatter. * * @since 4.0 * @noextend This class is not intended to be subclassed by clients. * @noinstantiate This class is not intended to be instantiated by clients. */ public class STPDefaultCodeFormatterConstants { /** * <pre> * FORMATTER / Value to set an option to false. * </pre> */ public static final String FALSE = "false"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option for alignment of arguments in method invocation * - option id: "org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation" * - possible values: values returned by <code>createAlignmentValue(boolean, int, int)</code> call * - default: createAlignmentValue(false, WRAP_COMPACT, INDENT_DEFAULT) * </pre> * @see #createAlignmentValue(boolean, int, int) */ public static final String FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_METHOD_INVOCATION = IDEPlugin.PLUGIN_ID + ".formatter.alignment_for_arguments_in_method_invocation"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option for alignment of expressions in initializer list * - option id: "org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer" * - possible values: values returned by <code>createAlignmentValue(boolean, int, int)</code> call * - default: createAlignmentValue(false, WRAP_COMPACT, INDENT_DEFAULT) * </pre> * @see #createAlignmentValue(boolean, int, int) */ public static final String FORMATTER_ALIGNMENT_FOR_EXPRESSIONS_IN_INITIALIZER_LIST = IDEPlugin.PLUGIN_ID + ".formatter.alignment_for_expressions_in_array_initializer"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option for alignment of parameters in method declaration * - option id: "org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration" * - possible values: values returned by <code>createAlignmentValue(boolean, int, int)</code> call * - default: createAlignmentValue(false, WRAP_COMPACT, INDENT_DEFAULT) * </pre> * @see #createAlignmentValue(boolean, int, int) */ public static final String FORMATTER_ALIGNMENT_FOR_PARAMETERS_IN_METHOD_DECLARATION = IDEPlugin.PLUGIN_ID + ".formatter.alignment_for_parameters_in_method_declaration"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to position the braces of initializer list * - option id: "org.eclipse.cdt.core.formatter.brace_position_for_array_initializer" * - possible values: { END_OF_LINE, NEXT_LINE, NEXT_LINE_SHIFTED, NEXT_LINE_ON_WRAP } * - default: END_OF_LINE * </pre> * @see #END_OF_LINE * @see #NEXT_LINE * @see #NEXT_LINE_SHIFTED * @see #NEXT_LINE_ON_WRAP */ public static final String FORMATTER_BRACE_POSITION_FOR_INITIALIZER_LIST = IDEPlugin.PLUGIN_ID + ".formatter.brace_position_for_array_initializer"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to position the braces of a block * - option id: "org.eclipse.cdt.core.formatter.brace_position_for_block" * - possible values: { END_OF_LINE, NEXT_LINE, NEXT_LINE_SHIFTED, NEXT_LINE_ON_WRAP } * - default: END_OF_LINE * </pre> * @see #END_OF_LINE * @see #NEXT_LINE * @see #NEXT_LINE_SHIFTED * @see #NEXT_LINE_ON_WRAP */ public static final String FORMATTER_BRACE_POSITION_FOR_BLOCK = IDEPlugin.PLUGIN_ID + ".formatter.brace_position_for_block"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to position the braces of a method declaration * - option id: "org.eclipse.cdt.core.formatter.brace_position_for_method_declaration" * - possible values: { END_OF_LINE, NEXT_LINE, NEXT_LINE_SHIFTED, NEXT_LINE_ON_WRAP } * - default: END_OF_LINE * </pre> * @see #END_OF_LINE * @see #NEXT_LINE * @see #NEXT_LINE_SHIFTED * @see #NEXT_LINE_ON_WRAP */ public static final String FORMATTER_BRACE_POSITION_FOR_METHOD_DECLARATION = IDEPlugin.PLUGIN_ID + ".formatter.brace_position_for_method_declaration"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to position the braces of a type declaration * - option id: "org.eclipse.cdt.core.formatter.brace_position_for_type_declaration" * - possible values: { END_OF_LINE, NEXT_LINE, NEXT_LINE_SHIFTED, NEXT_LINE_ON_WRAP } * - default: END_OF_LINE * </pre> * @see #END_OF_LINE * @see #NEXT_LINE * @see #NEXT_LINE_SHIFTED * @see #NEXT_LINE_ON_WRAP */ public static final String FORMATTER_BRACE_POSITION_FOR_TYPE_DECLARATION = IDEPlugin.PLUGIN_ID + ".formatter.brace_position_for_type_declaration"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to set the continuation indentation * - option id: "org.eclipse.cdt.core.formatter.continuation_indentation" * - possible values: "<n>", where n is zero or a positive integer * - default: "2" * </pre> */ public static final String FORMATTER_CONTINUATION_INDENTATION = IDEPlugin.PLUGIN_ID + ".formatter.continuation_indentation"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to indent 'public:', 'protected:', 'private:' access specifiers relative to class declaration. * - option id: "org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header" * - possible values: { TRUE, FALSE } * - default: FALSE * </pre> * @see #TRUE * @see #FALSE */ public static final String FORMATTER_INDENT_ACCESS_SPECIFIER_COMPARE_TO_TYPE_HEADER = IDEPlugin.PLUGIN_ID + ".formatter.indent_access_specifier_compare_to_type_header"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Number of extra spaces in front of 'public:', 'protected:', 'private:' access specifiers. * Enables fractional indent of access specifiers. Does not affect indentation of body declarations. * - option id: "org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces" * - possible values: "<n>", where n is zero or a positive integer * - default: "0" * </pre> * @since 5.2 */ public static final String FORMATTER_INDENT_ACCESS_SPECIFIER_EXTRA_SPACES = IDEPlugin.PLUGIN_ID + ".formatter.indent_access_specifier_extra_spaces"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to indent body declarations relative to access specifiers (visibility labels) * - option id: "org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier" * - possible values: { TRUE, FALSE } * - default: TRUE * </pre> * @see #TRUE * @see #FALSE */ public static final String FORMATTER_INDENT_BODY_DECLARATIONS_COMPARE_TO_ACCESS_SPECIFIER = IDEPlugin.PLUGIN_ID + ".formatter.indent_body_declarations_compare_to_access_specifier"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to indent body declarations compare to its enclosing namespace header * - option id: "org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header" * - possible values: { TRUE, FALSE } * - default: TRUE * </pre> * @see #TRUE * @see #FALSE */ public static final String FORMATTER_INDENT_BODY_DECLARATIONS_COMPARE_TO_NAMESPACE_HEADER = IDEPlugin.PLUGIN_ID + ".formatter.indent_body_declarations_compare_to_namespace_header"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to indent statements inside a block * - option id: "org.eclipse.cdt.core.formatter.indent_statements_compare_to_block" * - possible values: { TRUE, FALSE } * - default: TRUE * </pre> * @see #TRUE * @see #FALSE */ public static final String FORMATTER_INDENT_STATEMENTS_COMPARE_TO_BLOCK = IDEPlugin.PLUGIN_ID + ".formatter.indent_statements_compare_to_block"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to indent statements inside the body of a method or a constructor * - option id: "org.eclipse.cdt.core.formatter.indent_statements_compare_to_body" * - possible values: { TRUE, FALSE } * - default: TRUE * </pre> * @see #TRUE * @see #FALSE */ public static final String FORMATTER_INDENT_STATEMENTS_COMPARE_TO_BODY = IDEPlugin.PLUGIN_ID + ".formatter.indent_statements_compare_to_body"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to indent switch statements compare to cases * - option id: "org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases" * - possible values: { TRUE, FALSE } * - default: TRUE * </pre> * @see #TRUE * @see #FALSE */ public static final String FORMATTER_INDENT_SWITCHSTATEMENTS_COMPARE_TO_CASES = IDEPlugin.PLUGIN_ID + ".formatter.indent_switchstatements_compare_to_cases"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to indent switch statements compare to switch * - option id: "org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch" * - possible values: { TRUE, FALSE } * - default: TRUE * </pre> * @see #TRUE * @see #FALSE */ public static final String FORMATTER_INDENT_SWITCHSTATEMENTS_COMPARE_TO_SWITCH = IDEPlugin.PLUGIN_ID + ".formatter.indent_switchstatements_compare_to_switch"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Option to specify the tabulation size * - option id: "org.eclipse.cdt.core.formatter.tabulation.char" * - possible values: { TAB, SPACE, MIXED } * - default: TAB * </pre> * More values may be added in the future. * * @see IDEPlugin#TAB * @see IDEPlugin#SPACE * @see #MIXED */ public static final String FORMATTER_TAB_CHAR = IDEPlugin.PLUGIN_ID + ".formatter.tabulation.char"; //$NON-NLS-1$ /** * <pre> * FORMATTER / The wrapping is done by indenting by one compare to the current indentation. * </pre> */ public static final int INDENT_BY_ONE= 2; /** * <pre> * FORMATTER / The wrapping is done by using the current indentation. * </pre> */ public static final int INDENT_DEFAULT= 0; /** * <pre> * FORMATTER / The wrapping is done by indenting on column under the splitting location. * </pre> */ public static final int INDENT_ON_COLUMN = 1; /** * <pre> * FORMATTER / Possible value for the option FORMATTER_TAB_CHAR * </pre> * @see IDEPlugin#TAB * @see IDEPlugin#SPACE * @see #FORMATTER_TAB_CHAR */ public static final String MIXED = "mixed"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Value to set a brace location at the start of the next line with * an extra indentation. * </pre> * @see #FORMATTER_BRACE_POSITION_FOR_INITIALIZER_LIST * @see #FORMATTER_BRACE_POSITION_FOR_BLOCK * @see #FORMATTER_BRACE_POSITION_FOR_METHOD_DECLARATION * @see #FORMATTER_BRACE_POSITION_FOR_SWITCH * @see #FORMATTER_BRACE_POSITION_FOR_TYPE_DECLARATION */ public static final String NEXT_LINE_SHIFTED = "next_line_shifted"; //$NON-NLS-1$ /** * <pre> * FORMATTER / Value to set an option to true. * </pre> */ public static final String TRUE = "true"; //$NON-NLS-1$ /** * <pre> * FORMATTER / The wrapping is done using as few lines as possible. * </pre> */ public static final int WRAP_COMPACT= 1; /** * <pre> * FORMATTER / The wrapping is done putting the first element on a new * line and then wrapping next elements using as few lines as possible. * </pre> */ public static final int WRAP_COMPACT_FIRST_BREAK= 2; /** * <pre> * FORMATTER / The wrapping is done by putting each element on its own line * except the first element. * </pre> */ public static final int WRAP_NEXT_PER_LINE= 5; /** * <pre> * FORMATTER / The wrapping is done by putting each element on its own line. * All elements are indented by one except the first element. * </pre> */ public static final int WRAP_NEXT_SHIFTED= 4; /** * <pre> * FORMATTER / Value to disable alignment. * </pre> */ public static final int WRAP_NO_SPLIT= 0; /** * <pre> * FORMATTER / The wrapping is done by putting each element on its own line. * </pre> */ public static final int WRAP_ONE_PER_LINE= 3; /* * Private constants. */ private static final IllegalArgumentException WRONG_ARGUMENT = new IllegalArgumentException(); /** * <p>Return the indentation style of the given alignment value. * The given alignment value should be created using the <code>createAlignmentValue(boolean, int, int)</code> * API. * </p> * * @param value the given alignment value * @return the indentation style of the given alignment value * @see #createAlignmentValue(boolean, int, int) * @exception IllegalArgumentException if the given alignment value is null, or if it * doesn't have a valid format. */ public static int getIndentStyle(String value) { if (value == null) { throw WRONG_ARGUMENT; } try { int existingValue = Integer.parseInt(value); if ((existingValue & STPAlignment.M_INDENT_BY_ONE) != 0) { return INDENT_BY_ONE; } else if ((existingValue & STPAlignment.M_INDENT_ON_COLUMN) != 0) { return INDENT_ON_COLUMN; } else { return INDENT_DEFAULT; } } catch (NumberFormatException e) { throw WRONG_ARGUMENT; } } /** * <p>Return the wrapping style of the given alignment value. * The given alignment value should be created using the <code>createAlignmentValue(boolean, int, int)</code> * API. * </p> * * @param value the given alignment value * @return the wrapping style of the given alignment value * @see #createAlignmentValue(boolean, int, int) * @exception IllegalArgumentException if the given alignment value is null, or if it * doesn't have a valid format. */ public static int getWrappingStyle(String value) { if (value == null) { throw WRONG_ARGUMENT; } try { int existingValue = Integer.parseInt(value) & STPAlignment.SPLIT_MASK; switch (existingValue) { case STPAlignment.M_COMPACT_SPLIT: return WRAP_COMPACT; case STPAlignment.M_COMPACT_FIRST_BREAK_SPLIT: return WRAP_COMPACT_FIRST_BREAK; case STPAlignment.M_NEXT_PER_LINE_SPLIT: return WRAP_NEXT_PER_LINE; case STPAlignment.M_NEXT_SHIFTED_SPLIT: return WRAP_NEXT_SHIFTED; case STPAlignment.M_ONE_PER_LINE_SPLIT: return WRAP_ONE_PER_LINE; default: return WRAP_NO_SPLIT; } } catch (NumberFormatException e) { throw WRONG_ARGUMENT; } } }