Java 类com.intellij.psi.formatter.java.wrap.ReservedWrapsProvider 实例源码

项目:intellij-ce-playground    文件:JavaChildBlockWrapFactory.java   
/**
 * Creates {@link Wrap wrap} to be used with the children blocks of the the given block.
 *
 * @param block                   target block which sub-blocks should use wrap created by the current method
 * @param settings                code formatting settings to consider during wrap construction
 * @param reservedWrapsProvider   reserved {@code 'element type -> wrap instance'} mappings provider. <b>Note:</b> this
 *                                argument is considered to be a part of legacy heritage and is intended to be removed as
 *                                soon as formatting code refactoring is done
 * @return                        wrap to use for the sub-blocks of the given block
 */
@Nullable
public Wrap create(ASTBlock block, CommonCodeStyleSettings settings, ReservedWrapsProvider reservedWrapsProvider) {
  ASTNode node = block.getNode();
  Wrap wrap = block.getWrap();
  final IElementType nodeType = node.getElementType();
  if (nodeType == JavaElementType.EXTENDS_LIST || nodeType == JavaElementType.IMPLEMENTS_LIST) {
    return Wrap.createWrap(settings.EXTENDS_LIST_WRAP, false);
  }
  else if (node instanceof PsiPolyadicExpression) {
    Wrap actualWrap = wrap != null ? wrap : reservedWrapsProvider.getReservedWrap(JavaElementType.BINARY_EXPRESSION);
    if (actualWrap == null) {
      return Wrap.createWrap(settings.BINARY_OPERATION_WRAP, false);
    }
    else {
      if (JavaFormatterUtil.areSamePriorityBinaryExpressions(node, node.getTreeParent())) {
        return actualWrap;
      }
      else {
        return Wrap.createChildWrap(actualWrap, WrapType.byLegacyRepresentation(settings.BINARY_OPERATION_WRAP), false);
      }
    }
  }
  else if (nodeType == JavaElementType.CONDITIONAL_EXPRESSION) {
    return Wrap.createWrap(settings.TERNARY_OPERATION_WRAP, false);
  }
  else if (nodeType == JavaElementType.ASSERT_STATEMENT) {
    return Wrap.createWrap(settings.ASSERT_STATEMENT_WRAP, false);
  }
  else if (nodeType == JavaElementType.FOR_STATEMENT) {
    return Wrap.createWrap(settings.FOR_STATEMENT_WRAP, false);
  }
  else if (nodeType == JavaElementType.THROWS_LIST) {
    return Wrap.createWrap(settings.THROWS_LIST_WRAP, true);
  }
  else if (nodeType == JavaElementType.CODE_BLOCK) {
    if (settings.KEEP_SIMPLE_METHODS_IN_ONE_LINE && node.getPsi().getParent() instanceof PsiMethod && !node.textContains('\n')) {
      return null;
    }
    return Wrap.createWrap(WrapType.NORMAL, false);
  }
  else if (JavaFormatterUtil.isAssignment(node)) {
    return Wrap.createWrap(settings.ASSIGNMENT_WRAP, true);
  }
  else {
    return null;
  }
}
项目:tools-idea    文件:JavaChildBlockWrapFactory.java   
/**
 * Creates {@link Wrap wrap} to be used with the children blocks of the the given block.
 *
 * @param block                   target block which sub-blocks should use wrap created by the current method
 * @param settings                code formatting settings to consider during wrap construction
 * @param reservedWrapsProvider   reserved {@code 'element type -> wrap instance'} mappings provider. <b>Note:</b> this
 *                                argument is considered to be a part of legacy heritage and is intended to be removed as
 *                                soon as formatting code refactoring is done
 * @return                        wrap to use for the sub-blocks of the given block
 */
@Nullable
public Wrap create(ASTBlock block, CommonCodeStyleSettings settings, ReservedWrapsProvider reservedWrapsProvider) {
  ASTNode node = block.getNode();
  Wrap wrap = block.getWrap();
  final IElementType nodeType = node.getElementType();
  if (nodeType == JavaElementType.EXTENDS_LIST || nodeType == JavaElementType.IMPLEMENTS_LIST) {
    return Wrap.createWrap(settings.EXTENDS_LIST_WRAP, false);
  }
  else if (node instanceof PsiPolyadicExpression) {
    Wrap actualWrap = wrap != null ? wrap : reservedWrapsProvider.getReservedWrap(JavaElementType.BINARY_EXPRESSION);
    if (actualWrap == null) {
      return Wrap.createWrap(settings.BINARY_OPERATION_WRAP, false);
    }
    else {
      if (JavaFormatterUtil.areSamePriorityBinaryExpressions(node, node.getTreeParent())) {
        return actualWrap;
      }
      else {
        return Wrap.createChildWrap(actualWrap, WrapType.byLegacyRepresentation(settings.BINARY_OPERATION_WRAP), false);
      }
    }
  }
  else if (nodeType == JavaElementType.CONDITIONAL_EXPRESSION) {
    return Wrap.createWrap(settings.TERNARY_OPERATION_WRAP, false);
  }
  else if (nodeType == JavaElementType.ASSERT_STATEMENT) {
    return Wrap.createWrap(settings.ASSERT_STATEMENT_WRAP, false);
  }
  else if (nodeType == JavaElementType.FOR_STATEMENT) {
    return Wrap.createWrap(settings.FOR_STATEMENT_WRAP, false);
  }
  else if (nodeType == JavaElementType.THROWS_LIST) {
    return Wrap.createWrap(settings.THROWS_LIST_WRAP, true);
  }
  else if (nodeType == JavaElementType.CODE_BLOCK) {
    return Wrap.createWrap(Wrap.NORMAL, false);
  }
  else if (JavaFormatterUtil.isAssignment(node)) {
    return Wrap.createWrap(settings.ASSIGNMENT_WRAP, true);
  }
  else {
    return null;
  }
}
项目:consulo-java    文件:JavaChildBlockWrapFactory.java   
/**
 * Creates {@link Wrap wrap} to be used with the children blocks of the the given block.
 *
 * @param block                 target block which sub-blocks should use wrap created by the current method
 * @param settings              code formatting settings to consider during wrap construction
 * @param reservedWrapsProvider reserved {@code 'element type -> wrap instance'} mappings provider. <b>Note:</b> this
 *                              argument is considered to be a part of legacy heritage and is intended to be removed as
 *                              soon as formatting code refactoring is done
 * @return wrap to use for the sub-blocks of the given block
 */
@Nullable
public Wrap create(ASTBlock block, CommonCodeStyleSettings settings, ReservedWrapsProvider reservedWrapsProvider)
{
    ASTNode node = block.getNode();
    Wrap wrap = block.getWrap();
    final IElementType nodeType = node.getElementType();
    if(nodeType == JavaElementType.EXTENDS_LIST || nodeType == JavaElementType.IMPLEMENTS_LIST)
    {
        return Wrap.createWrap(settings.EXTENDS_LIST_WRAP, false);
    }
    else if(node instanceof PsiPolyadicExpression)
    {
        Wrap actualWrap = wrap != null ? wrap : reservedWrapsProvider.getReservedWrap(JavaElementType.BINARY_EXPRESSION);
        if(actualWrap == null)
        {
            return Wrap.createWrap(settings.BINARY_OPERATION_WRAP, false);
        }
        else
        {
            if(JavaFormatterUtil.areSamePriorityBinaryExpressions(node, node.getTreeParent()))
            {
                return actualWrap;
            }
            else
            {
                return Wrap.createChildWrap(actualWrap, WrapType.byLegacyRepresentation(settings.BINARY_OPERATION_WRAP), false);
            }
        }
    }
    else if(nodeType == JavaElementType.CONDITIONAL_EXPRESSION)
    {
        return Wrap.createWrap(settings.TERNARY_OPERATION_WRAP, false);
    }
    else if(nodeType == JavaElementType.ASSERT_STATEMENT)
    {
        return Wrap.createWrap(settings.ASSERT_STATEMENT_WRAP, false);
    }
    else if(nodeType == JavaElementType.FOR_STATEMENT)
    {
        return Wrap.createWrap(settings.FOR_STATEMENT_WRAP, false);
    }
    else if(nodeType == JavaElementType.THROWS_LIST)
    {
        return Wrap.createWrap(settings.THROWS_LIST_WRAP, true);
    }
    else if(nodeType == JavaElementType.CODE_BLOCK)
    {
        if(settings.KEEP_SIMPLE_METHODS_IN_ONE_LINE && node.getPsi().getParent() instanceof PsiMethod && !node.textContains('\n'))
        {
            return null;
        }
        return Wrap.createWrap(WrapType.NORMAL, false);
    }
    else if(JavaFormatterUtil.isAssignment(node))
    {
        return Wrap.createWrap(settings.ASSIGNMENT_WRAP, true);
    }
    else
    {
        return null;
    }
}