KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > freemarker > eclipse > editors > XmlRule


1 package freemarker.eclipse.editors;
2
3 import org.eclipse.jface.text.rules.ICharacterScanner;
4 import org.eclipse.jface.text.rules.IToken;
5 import org.eclipse.jface.text.rules.MultiLineRule;
6 import org.eclipse.jface.text.rules.Token;
7
8 import freemarker.eclipse.FreemarkerPlugin;
9 import freemarker.eclipse.preferences.IPreferenceConstants;
10
11 public class XmlRule extends MultiLineRule implements IPreferenceConstants {
12
13     private boolean xmlHighlighting = true;
14
15     /**
16      * Creates a xml rule
17      *
18      * @param token the token which will be returned on success
19      */

20     public XmlRule(IToken token) {
21         super("<", ">", token, (char) 0, false);
22         // eventually we will need a mechanism to pass preference changes to the scanners/rules
23
// ATM the user has to close and open a file to apply the changes to this rule
24
xmlHighlighting = true;
25         try {
26             xmlHighlighting = FreemarkerPlugin.getInstance().getPreferenceStore().getBoolean(
27                 XML_HIGHLIGHTING);
28         } catch (NullPointerException JavaDoc e) {}
29     }
30
31     /* (non-Javadoc)
32      * @see org.eclipse.jface.text.rules.PatternRule#doEvaluate(org.eclipse.jface.text.rules.ICharacterScanner)
33      */

34     protected IToken doEvaluate(ICharacterScanner scanner) {
35         if (!xmlHighlighting)
36             return Token.UNDEFINED;
37         return super.doEvaluate(scanner);
38     }
39
40     /* (non-Javadoc)
41      * @see org.eclipse.jface.text.rules.PatternRule#doEvaluate(org.eclipse.jface.text.rules.ICharacterScanner, boolean)
42      */

43     protected IToken doEvaluate(ICharacterScanner scanner, boolean resume) {
44         if (!xmlHighlighting)
45             return Token.UNDEFINED;
46         return super.doEvaluate(scanner, resume);
47     }
48
49     /**
50      * Returns whether the end sequence was detected. This method
51      * reads all characters until the end of the sequence or EOF is
52      * detected. It attempts to avoid ending the XML tag inside a
53      * FreeMarker construct.
54      *
55      * @param scanner the character scanner
56      *
57      * @return true if the end sequence has been detected
58      */

59     protected boolean endSequenceDetected(ICharacterScanner scanner) {
60         FreemarkerTools.readXmlTagEnd(scanner);
61         return true;
62     }
63
64 }
65
Popular Tags