/platform/lang-impl/src/com/intellij/formatting/alignment/AlignmentInColumnsConfig.java
https://github.com/machak/intellij-community · Java · 101 lines · 35 code · 8 blank · 58 comment · 0 complexity · 479d0df17f5c1d24605c9f9e1338c2aa MD5 · raw file
- /*
- * Copyright 2000-2010 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.formatting.alignment;
- import com.intellij.psi.tree.TokenSet;
- /**
- * Encapsulates information necessary for correct <code>'align in columns'</code> processing.
- * <p/>
- * Thread-safe.
- * <p/>
- * <b>Note:</b> this class doesn't provide custom realization for {@link #hashCode()} and {@link #equals(Object)} at the moment.
- * Feel free to add them as necessary.
- *
- * @author Denis Zhdanov
- * @see AlignmentInColumnsHelper
- * @since May 24, 2010 3:17:40 PM
- */
- public class AlignmentInColumnsConfig {
- private final TokenSet myStopMultilineCheckElementTypes;
- private final TokenSet myTargetDeclarationTypes;
- private final TokenSet myWhiteSpaceTokenTypes;
- private final TokenSet myCommentTokenTypes;
- private final TokenSet myDistinguishableTypes;
- /**
- * Creates new <code>AlignmentInColumnsConfig</code> object that is used to tweak <code>'align in columns'</code> processing.
- * <p/>
- * 'Alignment in columns' means formatting code as shown below:
- * <p/>
- * <pre>
- * double start = 1;
- * int end = 2;
- * private int tmp = 3;
- * private int tmp2;
- * protected double tmp3;
- * </pre>
- *
- * @param stopMultilineCheckElementTypes <code>'align in column'</code> algorithm performs number of checks in order to decide
- * if two variable declarations should be aligned in columns. One of that checks is
- * examination for sub-elements consistency. E.g. <code>'int end = 2'</code> statement
- * from example above is not aligned to <code>'private int tmp = 3;'</code> because the
- * former doesn't have modifier. Element types given here defines boundary for such
- * a checks, e.g. we can define type of <code>'='</code> element to be stop check type
- * for example above
- * @param whiteSpaceTokenTypes defines types of the tokens that should be treated as a white space
- * @param commentTokenTypes defines types of the tokens that should be treated as comments
- * @param distinguishableTypes <code>'align in column'</code> algorithm doesn't align elements, containing different sets
- * of distinguishable elements.
- * E.g. <code>'private int tmp = 3'</code> is not aligned to <code>'private int tmp2'</code>
- * at example above, providing that distinguishable types contain <code>'='</code> token.
- * @param targetDeclarationTypes defines variable declaration sub-element types to be aligned. Example above
- * shows alignment for <code>'modifier list'</code>, <code>'type reference'</code>,
- * <code>'identifier'</code> and <code>'='</code> types. The general idea of this property
- * is to let avoid alignment of unnecessary types, e.g. variable definition expressions
- */
- public AlignmentInColumnsConfig(TokenSet stopMultilineCheckElementTypes,
- TokenSet whiteSpaceTokenTypes,
- TokenSet commentTokenTypes,
- TokenSet distinguishableTypes,
- TokenSet targetDeclarationTypes) {
- myStopMultilineCheckElementTypes = stopMultilineCheckElementTypes;
- myWhiteSpaceTokenTypes = whiteSpaceTokenTypes;
- myCommentTokenTypes = commentTokenTypes;
- myDistinguishableTypes = distinguishableTypes;
- myTargetDeclarationTypes = targetDeclarationTypes;
- }
- public TokenSet getStopMultilineCheckElementTypes() {
- return myStopMultilineCheckElementTypes;
- }
- public TokenSet getWhiteSpaceTokenTypes() {
- return myWhiteSpaceTokenTypes;
- }
- public TokenSet getCommentTokenTypes() {
- return myCommentTokenTypes;
- }
- public TokenSet getDistinguishableTypes() {
- return myDistinguishableTypes;
- }
- public TokenSet getTargetDeclarationTypes() {
- return myTargetDeclarationTypes;
- }
- }