p2izing the editor
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor.prototype2 / src / eu / etaxonomy / taxeditor / prototype2 / view / nameviewersupport / NamePartitionScanner_.java
1 package eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport;
2
3 import org.eclipse.jface.text.rules.ICharacterScanner;
4 import org.eclipse.jface.text.rules.IPredicateRule;
5 import org.eclipse.jface.text.rules.IToken;
6 import org.eclipse.jface.text.rules.IWordDetector;
7 import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
8 import org.eclipse.jface.text.rules.Token;
9 import org.eclipse.jface.text.rules.WordRule;
10
11 public class NamePartitionScanner_ extends RuleBasedPartitionScanner {
12 public final static String SINGLE_WORD = "__single_word";
13 public final static String[] PARTITION_TYPES = {SINGLE_WORD};
14
15 public NamePartitionScanner_()
16 {
17 super();
18
19 IPredicateRule[] rules = new IPredicateRule[1];
20
21 IToken word = new Token(SINGLE_WORD);
22 rules[0] = new WordPredicateRule (word);
23
24 setPredicateRules(rules);
25 }
26
27 class WordPredicateRule extends WordRule implements IPredicateRule {
28
29 private IToken fSuccessToken;
30
31 public WordPredicateRule(IToken successToken) {
32 super(new IWordDetector() {
33
34 public boolean isWordPart(char c) {
35 return !Character.isWhitespace(c);
36 }
37
38 public boolean isWordStart(char c) {
39 return !Character.isWhitespace(c);
40 }
41
42 });
43 this.fSuccessToken = successToken;
44 }
45
46 public IToken evaluate(ICharacterScanner scanner, boolean resume) {
47 return super.evaluate(scanner);
48 }
49
50 public IToken evaluate(ICharacterScanner scanner) {
51
52 StringBuffer fBuffer = new StringBuffer();
53
54 int c = scanner.read();
55 if (c != ICharacterScanner.EOF && fDetector.isWordStart((char) c)) {
56 if (fColumn == UNDEFINED || (fColumn == scanner.getColumn() - 1)) {
57
58 fBuffer.setLength(0);
59 do {
60 fBuffer.append((char) c);
61 c= scanner.read();
62 } while (c != ICharacterScanner.EOF && fDetector.isWordPart((char) c));
63 scanner.unread();
64
65 return fSuccessToken;
66 }
67 }
68
69 scanner.unread();
70 return Token.UNDEFINED;
71 }
72
73
74 public IToken getSuccessToken() {
75 return fSuccessToken;
76 }
77
78 }
79 }