1 package eu
.etaxonomy
.taxeditor
.prototype2
.view
.nameviewersupport
;
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
;
11 public class NamePartitionScanner_
extends RuleBasedPartitionScanner
{
12 public final static String SINGLE_WORD
= "__single_word";
13 public final static String
[] PARTITION_TYPES
= {SINGLE_WORD
};
15 public NamePartitionScanner_()
19 IPredicateRule
[] rules
= new IPredicateRule
[1];
21 IToken word
= new Token(SINGLE_WORD
);
22 rules
[0] = new WordPredicateRule (word
);
24 setPredicateRules(rules
);
27 class WordPredicateRule
extends WordRule
implements IPredicateRule
{
29 private IToken fSuccessToken
;
31 public WordPredicateRule(IToken successToken
) {
32 super(new IWordDetector() {
34 public boolean isWordPart(char c
) {
35 return !Character
.isWhitespace(c
);
38 public boolean isWordStart(char c
) {
39 return !Character
.isWhitespace(c
);
43 this.fSuccessToken
= successToken
;
46 public IToken
evaluate(ICharacterScanner scanner
, boolean resume
) {
47 return super.evaluate(scanner
);
50 public IToken
evaluate(ICharacterScanner scanner
) {
52 StringBuffer fBuffer
= new StringBuffer();
54 int c
= scanner
.read();
55 if (c
!= ICharacterScanner
.EOF
&& fDetector
.isWordStart((char) c
)) {
56 if (fColumn
== UNDEFINED
|| (fColumn
== scanner
.getColumn() - 1)) {
60 fBuffer
.append((char) c
);
62 } while (c
!= ICharacterScanner
.EOF
&& fDetector
.isWordPart((char) c
));
70 return Token
.UNDEFINED
;
74 public IToken
getSuccessToken() {