PageRenderTime 103ms CodeModel.GetById 98ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/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
 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}