KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > armedbear > j > CSSMode


1 /*
2  * CSSMode.java
3  *
4  * Copyright (C) 2002 Peter Graves
5  * $Id: CSSMode.java,v 1.1.1.1 2002/09/24 16:09:28 piso Exp $
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20  */

21
22 package org.armedbear.j;
23
24 import java.awt.event.KeyEvent JavaDoc;
25
26 public final class CSSMode extends AbstractMode implements Constants, Mode
27 {
28     private static final CSSMode mode = new CSSMode();
29
30     private CSSMode()
31     {
32         super(CSS_MODE, CSS_MODE_NAME);
33     }
34
35     public static CSSMode getMode()
36     {
37         return mode;
38     }
39
40     public Formatter getFormatter(Buffer buffer)
41     {
42         return new CSSFormatter(buffer);
43     }
44
45     protected void setKeyMapDefaults(KeyMap km)
46     {
47         km.mapKey(KeyEvent.VK_ENTER, 0, "newlineAndIndent");
48     }
49
50     public boolean canIndent()
51     {
52         return true;
53     }
54
55     public boolean canIndentPaste()
56     {
57         return false;
58     }
59
60     public int getCorrectIndentation(Line line, Buffer buffer)
61     {
62         final int indentSize = buffer.getIndentSize();
63         final Line model = findModel(line);
64         if (model == null)
65             return 0;
66         final int modelIndent = buffer.getIndentation(model);
67         if (model.getText().trim().endsWith("{"))
68             return modelIndent + indentSize;
69         return modelIndent;
70     }
71
72     private Line findModel(Line line)
73     {
74         Line model = line.previous();
75         while (model != null && model.isBlank())
76             model = model.previous();
77         return model;
78     }
79
80     public boolean isIdentifierStart(char c)
81     {
82         return startChars.indexOf(c) >= 0;
83     }
84
85     public boolean isIdentifierPart(char c)
86     {
87         return partChars.indexOf(c) >= 0;
88     }
89
90     private static final String JavaDoc startChars =
91         "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
92
93     private static final String JavaDoc partChars =
94         "-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_";
95 }
96
Popular Tags