/jEdit/tags/jedit-4-3-pre5/org/gjt/sp/jedit/indent/OpenBracketIndentRule.java
Java | 78 lines | 46 code | 7 blank | 25 comment | 8 complexity | 84b4f88f8ce4c08abd68d97e7fa87836 MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
1/*
2 * OpenBracketIndentRule.java
3 * :tabSize=8:indentSize=8:noTabs=false:
4 * :folding=explicit:collapseFolds=1:
5 *
6 * Copyright (C) 2005 Slava Pestov
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 */
22
23package org.gjt.sp.jedit.indent;
24
25import java.util.List;
26import org.gjt.sp.jedit.buffer.JEditBuffer;
27import org.gjt.sp.jedit.TextUtilities;
28
29public class OpenBracketIndentRule extends BracketIndentRule
30{
31 //{{{ OpenBracketIndentRule constructor
32 public OpenBracketIndentRule(char openBracket, boolean aligned)
33 {
34 super(openBracket,
35 TextUtilities.getComplementaryBracket(openBracket,
36 new boolean[1]));
37 this.aligned = aligned;
38 } //}}}
39
40 //{{{ apply() method
41 public void apply(JEditBuffer buffer, int thisLineIndex,
42 int prevLineIndex, int prevPrevLineIndex,
43 List indentActions)
44 {
45 int prevOpenBracketCount = getOpenBracketCount(buffer,prevLineIndex);
46 if(prevOpenBracketCount != 0)
47 {
48 handleCollapse(indentActions);
49 boolean multiple = buffer.getBooleanProperty(
50 "multipleBracketIndent");
51 IndentAction increase = new IndentAction.Increase(
52 multiple ? prevOpenBracketCount : 1);
53 indentActions.add(increase);
54 }
55 else if(getOpenBracketCount(buffer,thisLineIndex) != 0)
56 {
57 handleCollapse(indentActions);
58 }
59 } //}}}
60
61 //{{{ getOpenBracketCount() method
62 private int getOpenBracketCount(JEditBuffer buffer, int line)
63 {
64 if(line == -1)
65 return 0;
66 else
67 return getBrackets(buffer.getLineText(line)).openCount;
68 } //}}}
69
70 //{{{ handleCollapse() method
71 private void handleCollapse(List indentActions)
72 {
73 if(indentActions.contains(new IndentAction.Collapse()))
74 indentActions.clear();
75 } //}}}
76
77 private boolean aligned;
78}