restore deprecated api
[idea/community.git] / platform / lang-api / src / com / intellij / formatting / Wrap.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 /**
19  * The wrap setting for a formatting model block. Indicates the conditions under which a line break
20  * is inserted before the block when formatting, if the block extends beyond the
21  * right margin.
22  *
23  * @see com.intellij.formatting.Block#getWrap()
24  */
25
26 public abstract class Wrap {
27   /**
28    * Converts a low-priority wrap setting to a regular wrap setting.
29    * @see #createChildWrap(Wrap, WrapType, boolean)
30    */
31   public abstract void ignoreParentWraps();
32
33   private static WrapFactory myFactory;
34
35   /**
36    * @deprecated    use {@link WrapType#ALWAYS} instead
37    */
38   @Deprecated
39   public static WrapType ALWAYS = WrapType.ALWAYS;
40
41   /**
42    * @deprecated    use {@link WrapType#NORMAL} instead
43    */
44   @Deprecated
45   public static WrapType NORMAL = WrapType.NORMAL;
46
47   /**
48    * @deprecated    use {@link WrapType#NONE} instead
49    */
50   @Deprecated
51   public static WrapType NONE = WrapType.NONE;
52
53   /**
54    * @deprecated    use {@link WrapType#CHOP_DOWN_IF_LONG} instead
55    */
56   @SuppressWarnings({"UnusedDeclaration"})
57   @Deprecated
58   public static WrapType CHOP_DOWN_IF_LONG = WrapType.CHOP_DOWN_IF_LONG;
59
60   static void setFactory(WrapFactory factory) {
61     myFactory = factory;
62   }
63
64   /**
65    * Creates a block wrap setting of the legacy representation of specified wrap type (see {@link WrapType#getLegacyRepresentation()}).
66    *
67    * @param type                the type of the wrap setting.
68    * @param wrapFirstElement    if <code>true</code>, the first element in a sequence of elements of the same type is also wrapped.
69    * @return                    the wrap setting instance.
70    */
71   public static Wrap createWrap(final int type, final boolean wrapFirstElement) {
72     return myFactory.createWrap(WrapType.byLegacyRepresentation(type), wrapFirstElement);
73   }
74
75   /**
76    * Creates a block wrap setting of the specified type.
77    *
78    * @param type             the type of the wrap setting.
79    * @param wrapFirstElement if true, the first element in a sequence of elements of the same type
80    *                         is also wrapped.
81    * @return the wrap setting instance.
82    */
83   public static Wrap createWrap(final WrapType type, final boolean wrapFirstElement) {
84     return myFactory.createWrap(type, wrapFirstElement);
85   }
86
87   /**
88    * Creates a low priority wrap setting of the specified type. If the formatter detects that
89    * the line should be wrapped at a location of the child wrap, the line is wrapped at the
90    * position of its parent wrap instead.
91    *
92    * @param parentWrap       the parent for this wrap setting.
93    * @param wrapType         the type of the wrap setting.
94    * @param wrapFirstElement if true, the first element in a sequence of elements of the same type
95    *                         is also wrapped.
96    * @return the wrap setting instance.
97    * @see #ignoreParentWraps() 
98    */
99   public static Wrap createChildWrap(final Wrap parentWrap, final WrapType wrapType, final boolean wrapFirstElement) {
100     return myFactory.createChildWrap(parentWrap, wrapType, wrapFirstElement);    
101   }
102
103 }