blob: 2ef2c998b3b4d19f63cc98453845a80b22af4a7a [file] [log] [blame]
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.psi.codeStyle;
import com.intellij.openapi.application.ApplicationBundle;
import org.jetbrains.annotations.Nullable;
public interface CodeStyleSettingsCustomizable {
enum OptionAnchor {NONE, BEFORE, AFTER}
enum SpacingOption {
INSERT_FIRST_SPACE_IN_LINE,
SPACE_AROUND_ASSIGNMENT_OPERATORS,
SPACE_AROUND_LOGICAL_OPERATORS,
SPACE_AROUND_EQUALITY_OPERATORS,
SPACE_AROUND_RELATIONAL_OPERATORS,
SPACE_AROUND_BITWISE_OPERATORS,
SPACE_AROUND_ADDITIVE_OPERATORS,
SPACE_AROUND_MULTIPLICATIVE_OPERATORS,
SPACE_AROUND_SHIFT_OPERATORS,
SPACE_AROUND_UNARY_OPERATOR,
SPACE_AROUND_LAMBDA_ARROW,
SPACE_AROUND_METHOD_REF_DBL_COLON,
SPACE_AFTER_COMMA,
SPACE_AFTER_COMMA_IN_TYPE_ARGUMENTS,
SPACE_BEFORE_COMMA,
SPACE_AFTER_SEMICOLON,
SPACE_BEFORE_SEMICOLON,
SPACE_WITHIN_PARENTHESES,
SPACE_WITHIN_METHOD_CALL_PARENTHESES,
SPACE_WITHIN_METHOD_PARENTHESES,
SPACE_WITHIN_IF_PARENTHESES,
SPACE_WITHIN_WHILE_PARENTHESES,
SPACE_WITHIN_FOR_PARENTHESES,
SPACE_WITHIN_TRY_PARENTHESES,
SPACE_WITHIN_CATCH_PARENTHESES,
SPACE_WITHIN_SWITCH_PARENTHESES,
SPACE_WITHIN_SYNCHRONIZED_PARENTHESES,
SPACE_WITHIN_CAST_PARENTHESES,
SPACE_WITHIN_BRACKETS,
SPACE_WITHIN_BRACES,
SPACE_WITHIN_ARRAY_INITIALIZER_BRACES,
SPACE_AFTER_TYPE_CAST,
SPACE_BEFORE_METHOD_CALL_PARENTHESES,
SPACE_BEFORE_METHOD_PARENTHESES,
SPACE_BEFORE_IF_PARENTHESES,
SPACE_BEFORE_WHILE_PARENTHESES,
SPACE_BEFORE_FOR_PARENTHESES,
SPACE_BEFORE_TRY_PARENTHESES,
SPACE_BEFORE_CATCH_PARENTHESES,
SPACE_BEFORE_SWITCH_PARENTHESES,
SPACE_BEFORE_SYNCHRONIZED_PARENTHESES,
SPACE_BEFORE_CLASS_LBRACE,
SPACE_BEFORE_METHOD_LBRACE,
SPACE_BEFORE_IF_LBRACE,
SPACE_BEFORE_ELSE_LBRACE,
SPACE_BEFORE_WHILE_LBRACE,
SPACE_BEFORE_FOR_LBRACE,
SPACE_BEFORE_DO_LBRACE,
SPACE_BEFORE_SWITCH_LBRACE,
SPACE_BEFORE_TRY_LBRACE,
SPACE_BEFORE_CATCH_LBRACE,
SPACE_BEFORE_FINALLY_LBRACE,
SPACE_BEFORE_SYNCHRONIZED_LBRACE,
SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE,
SPACE_BEFORE_ANNOTATION_ARRAY_INITIALIZER_LBRACE,
SPACE_BEFORE_ELSE_KEYWORD,
SPACE_BEFORE_WHILE_KEYWORD,
SPACE_BEFORE_CATCH_KEYWORD,
SPACE_BEFORE_FINALLY_KEYWORD,
SPACE_BEFORE_QUEST,
SPACE_AFTER_QUEST,
SPACE_BEFORE_COLON,
SPACE_AFTER_COLON,
SPACE_BEFORE_TYPE_PARAMETER_LIST,
SPACE_BEFORE_ANOTATION_PARAMETER_LIST,
SPACE_WITHIN_ANNOTATION_PARENTHESES,
SPACE_WITHIN_EMPTY_METHOD_CALL_PARENTHESES,
SPACE_WITHIN_EMPTY_METHOD_PARENTHESES
}
enum BlankLinesOption {
KEEP_BLANK_LINES_IN_DECLARATIONS,
KEEP_BLANK_LINES_IN_CODE,
KEEP_BLANK_LINES_BEFORE_RBRACE,
BLANK_LINES_BEFORE_PACKAGE,
BLANK_LINES_AFTER_PACKAGE,
BLANK_LINES_BEFORE_IMPORTS,
BLANK_LINES_AFTER_IMPORTS,
BLANK_LINES_AROUND_CLASS,
BLANK_LINES_AROUND_FIELD,
BLANK_LINES_AROUND_METHOD,
BLANK_LINES_BEFORE_METHOD_BODY,
BLANK_LINES_AROUND_FIELD_IN_INTERFACE,
BLANK_LINES_AROUND_METHOD_IN_INTERFACE,
BLANK_LINES_AFTER_CLASS_HEADER,
BLANK_LINES_AFTER_ANONYMOUS_CLASS_HEADER
}
enum WrappingOrBraceOption {
RIGHT_MARGIN,
KEEP_CONTROL_STATEMENT_IN_ONE_LINE,
LINE_COMMENT_AT_FIRST_COLUMN,
BLOCK_COMMENT_AT_FIRST_COLUMN,
KEEP_LINE_BREAKS,
KEEP_FIRST_COLUMN_COMMENT,
CALL_PARAMETERS_WRAP,
PREFER_PARAMETERS_WRAP,
CALL_PARAMETERS_LPAREN_ON_NEXT_LINE,
CALL_PARAMETERS_RPAREN_ON_NEXT_LINE,
METHOD_PARAMETERS_WRAP,
METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE,
METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE,
RESOURCE_LIST_WRAP,
RESOURCE_LIST_LPAREN_ON_NEXT_LINE,
RESOURCE_LIST_RPAREN_ON_NEXT_LINE,
EXTENDS_LIST_WRAP,
THROWS_LIST_WRAP,
EXTENDS_KEYWORD_WRAP,
THROWS_KEYWORD_WRAP,
METHOD_CALL_CHAIN_WRAP,
PARENTHESES_EXPRESSION_LPAREN_WRAP,
PARENTHESES_EXPRESSION_RPAREN_WRAP,
BINARY_OPERATION_WRAP,
BINARY_OPERATION_SIGN_ON_NEXT_LINE,
TERNARY_OPERATION_WRAP,
TERNARY_OPERATION_SIGNS_ON_NEXT_LINE,
MODIFIER_LIST_WRAP,
KEEP_SIMPLE_BLOCKS_IN_ONE_LINE,
KEEP_SIMPLE_METHODS_IN_ONE_LINE,
KEEP_SIMPLE_CLASSES_IN_ONE_LINE,
KEEP_MULTIPLE_EXPRESSIONS_IN_ONE_LINE,
FOR_STATEMENT_WRAP,
FOR_STATEMENT_LPAREN_ON_NEXT_LINE,
FOR_STATEMENT_RPAREN_ON_NEXT_LINE,
ARRAY_INITIALIZER_WRAP,
ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE,
ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE,
ASSIGNMENT_WRAP,
PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE,
LABELED_STATEMENT_WRAP,
WRAP_COMMENTS,
ASSERT_STATEMENT_WRAP,
ASSERT_STATEMENT_COLON_ON_NEXT_LINE,
IF_BRACE_FORCE,
DOWHILE_BRACE_FORCE,
WHILE_BRACE_FORCE,
FOR_BRACE_FORCE,
WRAP_LONG_LINES,
METHOD_ANNOTATION_WRAP,
CLASS_ANNOTATION_WRAP,
FIELD_ANNOTATION_WRAP,
PARAMETER_ANNOTATION_WRAP,
VARIABLE_ANNOTATION_WRAP,
ALIGN_MULTILINE_CHAINED_METHODS,
ALIGN_MULTILINE_PARAMETERS,
ALIGN_MULTILINE_PARAMETERS_IN_CALLS,
ALIGN_MULTILINE_RESOURCES,
ALIGN_MULTILINE_FOR,
INDENT_WHEN_CASES,
ALIGN_MULTILINE_BINARY_OPERATION,
ALIGN_MULTILINE_ASSIGNMENT,
ALIGN_MULTILINE_TERNARY_OPERATION,
ALIGN_MULTILINE_THROWS_LIST,
ALIGN_THROWS_KEYWORD,
ALIGN_MULTILINE_EXTENDS_LIST,
ALIGN_MULTILINE_METHOD_BRACKETS,
ALIGN_MULTILINE_PARENTHESIZED_EXPRESSION,
ALIGN_MULTILINE_ARRAY_INITIALIZER_EXPRESSION,
ALIGN_GROUP_FIELD_DECLARATIONS,
BRACE_STYLE,
CLASS_BRACE_STYLE,
METHOD_BRACE_STYLE,
USE_FLYING_GEESE_BRACES,
FLYING_GEESE_BRACES_GAP,
DO_NOT_INDENT_TOP_LEVEL_CLASS_MEMBERS,
ELSE_ON_NEW_LINE,
WHILE_ON_NEW_LINE,
CATCH_ON_NEW_LINE,
FINALLY_ON_NEW_LINE,
INDENT_CASE_FROM_SWITCH,
SPECIAL_ELSE_IF_TREATMENT,
ENUM_CONSTANTS_WRAP
}
String SPACES_AROUND_OPERATORS = ApplicationBundle.message("group.spaces.around.operators");
String SPACES_BEFORE_PARENTHESES = ApplicationBundle.message("group.spaces.before.parentheses");
String SPACES_BEFORE_LEFT_BRACE = ApplicationBundle.message("group.spaces.before.left.brace");
String SPACES_BEFORE_KEYWORD = ApplicationBundle.message("group.spaces.after.right.brace");
String SPACES_WITHIN = ApplicationBundle.message("group.spaces.within");
String SPACES_IN_TERNARY_OPERATOR = ApplicationBundle.message("group.spaces.in.ternary.operator");
String SPACES_WITHIN_TYPE_ARGUMENTS = ApplicationBundle.message("group.spaces.in.type.arguments");
String SPACES_IN_TYPE_ARGUMENTS = ApplicationBundle.message("group.spaces.in.type.arguments.block");
String SPACES_IN_TYPE_PARAMETERS = ApplicationBundle.message("group.spaces.in.type.parameters.block");
String SPACES_OTHER = ApplicationBundle.message("group.spaces.other");
String BLANK_LINES_KEEP = ApplicationBundle.message("title.keep.blank.lines");
String BLANK_LINES = ApplicationBundle.message("title.minimum.blank.lines");
String WRAPPING_KEEP = ApplicationBundle.message("wrapping.keep.when.reformatting");
String WRAPPING_BRACES = ApplicationBundle.message("wrapping.brace.placement");
String WRAPPING_COMMENTS = ApplicationBundle.message("wrapping.comments");
String WRAPPING_METHOD_PARAMETERS = ApplicationBundle.message("wrapping.method.parameters");
String WRAPPING_METHOD_PARENTHESES = ApplicationBundle.message("wrapping.method.parentheses");
String WRAPPING_METHOD_ARGUMENTS_WRAPPING = ApplicationBundle.message("wrapping.method.arguments");
String WRAPPING_CALL_CHAIN = ApplicationBundle.message("wrapping.chained.method.calls");
String WRAPPING_IF_STATEMENT = ApplicationBundle.message("wrapping.if.statement");
String WRAPPING_FOR_STATEMENT = ApplicationBundle.message("wrapping.for.statement");
String WRAPPING_WHILE_STATEMENT = ApplicationBundle.message("wrapping.while.statement");
String WRAPPING_DOWHILE_STATEMENT = ApplicationBundle.message("wrapping.dowhile.statement");
String WRAPPING_SWITCH_STATEMENT = ApplicationBundle.message("wrapping.switch.statement");
String WRAPPING_TRY_STATEMENT = ApplicationBundle.message("wrapping.try.statement");
String WRAPPING_TRY_RESOURCE_LIST = ApplicationBundle.message("wrapping.try.resources");
String WRAPPING_BINARY_OPERATION = ApplicationBundle.message("wrapping.binary.operations");
String WRAPPING_EXTENDS_LIST = ApplicationBundle.message("wrapping.extends.implements.list");
String WRAPPING_EXTENDS_KEYWORD = ApplicationBundle.message("wrapping.extends.implements.keyword");
String WRAPPING_THROWS_LIST = ApplicationBundle.message("wrapping.throws.list");
String WRAPPING_THROWS_KEYWORD = ApplicationBundle.message("wrapping.throws.keyword");
String WRAPPING_TERNARY_OPERATION = ApplicationBundle.message("wrapping.ternary.operation");
String WRAPPING_ASSIGNMENT = ApplicationBundle.message("wrapping.assignment.statement");
String WRAPPING_FIELDS_VARIABLES_GROUPS = ApplicationBundle.message("checkbox.align.multiline.fields.groups");
String WRAPPING_ARRAY_INITIALIZER = ApplicationBundle.message("wrapping.array.initializer");
String WRAPPING_MODIFIER_LIST = ApplicationBundle.message("wrapping.modifier.list");
String WRAPPING_ASSERT_STATEMENT = ApplicationBundle.message("wrapping.assert.statement");
String[] WRAP_OPTIONS = {
ApplicationBundle.message("wrapping.do.not.wrap"),
ApplicationBundle.message("wrapping.wrap.if.long"),
ApplicationBundle.message("wrapping.chop.down.if.long"),
ApplicationBundle.message("wrapping.wrap.always")
};
String[] WRAP_OPTIONS_FOR_SINGLETON = {
ApplicationBundle.message("wrapping.do.not.wrap"),
ApplicationBundle.message("wrapping.wrap.if.long"),
ApplicationBundle.message("wrapping.wrap.always")
};
int[] WRAP_VALUES = {CommonCodeStyleSettings.DO_NOT_WRAP,
CommonCodeStyleSettings.WRAP_AS_NEEDED,
CommonCodeStyleSettings.WRAP_AS_NEEDED |
CommonCodeStyleSettings.WRAP_ON_EVERY_ITEM,
CommonCodeStyleSettings.WRAP_ALWAYS};
int[] WRAP_VALUES_FOR_SINGLETON = {CommonCodeStyleSettings.DO_NOT_WRAP,
CommonCodeStyleSettings.WRAP_AS_NEEDED,
CommonCodeStyleSettings.WRAP_ALWAYS};
String[] BRACE_OPTIONS = {
ApplicationBundle.message("wrapping.force.braces.do.not.force"),
ApplicationBundle.message("wrapping.force.braces.when.multiline"),
ApplicationBundle.message("wrapping.force.braces.always")
};
int[] BRACE_VALUES = {
CommonCodeStyleSettings.DO_NOT_FORCE,
CommonCodeStyleSettings.FORCE_BRACES_IF_MULTILINE,
CommonCodeStyleSettings.FORCE_BRACES_ALWAYS
};
String[] BRACE_PLACEMENT_OPTIONS = {
ApplicationBundle.message("wrapping.brace.placement.end.of.line"),
ApplicationBundle.message("wrapping.brace.placement.next.line.if.wrapped"),
ApplicationBundle.message("wrapping.brace.placement.next.line"),
ApplicationBundle.message("wrapping.brace.placement.next.line.shifted"),
ApplicationBundle.message("wrapping.brace.placement.next.line.each.shifted")
};
int[] BRACE_PLACEMENT_VALUES = {
CommonCodeStyleSettings.END_OF_LINE,
CommonCodeStyleSettings.NEXT_LINE_IF_WRAPPED,
CommonCodeStyleSettings.NEXT_LINE,
CommonCodeStyleSettings.NEXT_LINE_SHIFTED,
CommonCodeStyleSettings.NEXT_LINE_SHIFTED2
};
void showAllStandardOptions();
void showStandardOptions(String... optionNames);
void showCustomOption(Class<? extends CustomCodeStyleSettings> settingsClass,
String fieldName,
String title,
@Nullable String groupName,
Object... options);
void showCustomOption(Class<? extends CustomCodeStyleSettings> settingsClass,
String fieldName,
String title,
@Nullable String groupName,
@Nullable OptionAnchor anchor,
@Nullable String anchorFieldName,
Object... options);
void renameStandardOption(String fieldName, String newTitle);
/**
* Moves a standard option to another group.
* @param fieldName The field name of the option to move (as defined in <code>CommonCodeStyleSettings</code> class).
* @param newGroup The new group name (the group may be one of existing ones). A custom group name can be used if supported by consumer.
*/
void moveStandardOption(String fieldName, String newGroup);
}