Expandable indent storing additional block, which indent is used as min indent marker...
[idea/community.git] / platform / lang-api / src / com / intellij / formatting / IndentFactory.java
1 /*
2  * Copyright 2000-2009 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.formatting;
17
18 import org.jetbrains.annotations.NotNull;
19
20 /**
21  * Internal interface for creating indent instances.
22  * <p/>
23  * Methods of this interface define contract for implementing {@link Indent} factory methods, so, feel free to check
24  * their contracts. 
25  */
26 interface IndentFactory {
27   Indent getNormalIndent(boolean relativeToDirectParent);
28   Indent getNoneIndent();
29   Indent getAbsoluteNoneIndent();
30   Indent getAbsoluteLabelIndent();
31   Indent getLabelIndent();
32   Indent getContinuationIndent(boolean relativeToDirectParent);
33   Indent getContinuationWithoutFirstIndent(boolean relativeToDirectParent);
34   Indent getSpaceIndent(final int spaces, boolean relativeToDirectParent);
35   Indent getIndent(@NotNull Indent.Type type, boolean relativeToDirectParent, boolean enforceIndentToChildren);
36   Indent getIndent(@NotNull Indent.Type type, int spaces, boolean relativeToDirectParent, boolean enforceIndentToChildren);
37   Indent getSmartIndent(@NotNull Indent.Type type);
38 }