cleanup: remove useless '@author nik' from javadoc comments
[idea/community.git] / java / java-impl / src / com / intellij / psi / formatter / java / CommentWithInjectionBlock.java
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.psi.formatter.java;
17
18 import com.intellij.formatting.*;
19 import com.intellij.lang.ASTNode;
20 import com.intellij.openapi.util.TextRange;
21 import com.intellij.psi.codeStyle.CodeStyleSettings;
22 import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
23 import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
24 import com.intellij.psi.formatter.common.InjectedLanguageBlockBuilder;
25 import org.jetbrains.annotations.NotNull;
26
27 import java.util.ArrayList;
28 import java.util.List;
29
30 public class CommentWithInjectionBlock extends AbstractJavaBlock {
31   private final InjectedLanguageBlockBuilder myInjectedBlockBuilder;
32
33   public CommentWithInjectionBlock(ASTNode node,
34                                    Wrap wrap,
35                                    Alignment alignment,
36                                    Indent indent,
37                                    CommonCodeStyleSettings settings,
38                                    JavaCodeStyleSettings javaSettings,
39                                    @NotNull FormattingMode formattingMode) {
40     super(node, wrap, alignment, indent, settings, javaSettings, formattingMode);
41     myInjectedBlockBuilder = new JavaCommentInjectedBlockBuilder();
42   }
43
44   @Override
45   protected List<Block> buildChildren() {
46     final List<Block> result = new ArrayList<>();
47     myInjectedBlockBuilder.addInjectedBlocks(result, myNode, myWrap, myAlignment, Indent.getNoneIndent());
48     return result;
49   }
50
51   @Override
52   public boolean isLeaf() {
53     return false;
54   }
55
56   @NotNull
57   @Override
58   public ChildAttributes getChildAttributes(int newChildIndex) {
59     return new ChildAttributes(Indent.getNormalIndent(), null);
60   }
61
62   @Override
63   public Spacing getSpacing(Block child1, @NotNull Block child2) {
64     return null;
65   }
66
67   private class JavaCommentInjectedBlockBuilder extends InjectedLanguageBlockBuilder {
68     @Override
69     public CodeStyleSettings getSettings() {
70       return mySettings.getRootSettings();
71     }
72
73     @Override                                      
74     public boolean canProcessFragment(String text, ASTNode injectionHost) {
75       return true;
76     }
77
78     @Override
79     public Block createBlockBeforeInjection(ASTNode node, Wrap wrap, Alignment alignment, Indent indent, final TextRange range) {
80       return new PartialCommentBlock(node, wrap, alignment, indent, range);
81     }
82
83     @Override
84     public Block createBlockAfterInjection(ASTNode node, Wrap wrap, Alignment alignment, Indent indent, TextRange range) {
85       return new PartialCommentBlock(node, wrap, alignment, Indent.getNoneIndent(), range);
86     }
87   }
88
89   private static class PartialCommentBlock extends LeafBlock {
90     private final TextRange myRange;
91
92     PartialCommentBlock(ASTNode node, Wrap wrap, Alignment alignment, Indent indent, TextRange range) {
93       super(node, wrap, alignment, indent);
94       myRange = range;
95     }
96
97     @NotNull
98     @Override
99     public TextRange getTextRange() {
100       return myRange;
101     }
102   }
103 }