X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/phpdoc/PHPDocCodeScanner.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/phpdoc/PHPDocCodeScanner.java index 9b0ec7f..5820ca6 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/phpdoc/PHPDocCodeScanner.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/phpdoc/PHPDocCodeScanner.java @@ -14,18 +14,17 @@ package net.sourceforge.phpdt.internal.ui.text.phpdoc; import java.util.ArrayList; import java.util.List; -import net.sourceforge.phpdt.internal.ui.text.JavaColorManager; -import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider; +import net.sourceforge.phpdt.internal.ui.text.AbstractJavaScanner; +import net.sourceforge.phpdt.ui.text.IColorManager; +import net.sourceforge.phpdt.ui.text.IJavaColorConstants; import net.sourceforge.phpeclipse.phpeditor.util.PHPWhitespaceDetector; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.TextAttribute; import org.eclipse.jface.text.rules.ICharacterScanner; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.IWordDetector; -import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.rules.SingleLineRule; import org.eclipse.jface.text.rules.Token; import org.eclipse.jface.text.rules.WhitespaceRule; @@ -37,166 +36,158 @@ import org.eclipse.jface.text.rules.WordRule; /** * A rule based PHPDoc scanner. */ -public final class PHPDocCodeScanner extends RuleBasedScanner { - - - /** - * A key word detector. - */ - static class PHPDocKeywordDetector implements IWordDetector { - - /** - * @see IWordDetector#isWordStart - */ - public boolean isWordStart(char c) { - return (c == '@'); - } - - /** - * @see IWordDetector#isWordPart - */ - public boolean isWordPart(char c) { - return Character.isLetter(c); - } - }; +public final class PHPDocCodeScanner extends AbstractJavaScanner { + + + /** + * A key word detector. + */ + static class JavaDocKeywordDetector implements IWordDetector { + + /** + * @see IWordDetector#isWordStart + */ + public boolean isWordStart(char c) { + return (c == '@'); + } + + /** + * @see IWordDetector#isWordPart + */ + public boolean isWordPart(char c) { + return Character.isLetter(c); + } + }; - /** - * Detector for HTML comment delimiters. - */ - static class HTMLCommentDetector implements IWordDetector { - - /** - * @see IWordDetector#isWordStart - */ - public boolean isWordStart(char c) { - return (c == '<' || c == '-'); - } - - /** - * @see IWordDetector#isWordPart - */ - public boolean isWordPart(char c) { - return (c == '-' || c == '!' || c == '>'); - } - }; + /** + * Detector for HTML comment delimiters. + */ + static class HTMLCommentDetector implements IWordDetector { + + /** + * @see IWordDetector#isWordStart + */ + public boolean isWordStart(char c) { + return (c == '<' || c == '-'); + } + + /** + * @see IWordDetector#isWordPart + */ + public boolean isWordPart(char c) { + return (c == '-' || c == '!' || c == '>'); + } + }; - class TagRule extends SingleLineRule { - - /* - * @see SingleLineRule - */ - public TagRule(IToken token) { - super("<", ">", token, (char) 0); //$NON-NLS-2$ //$NON-NLS-1$ - } - - /* - * @see SingleLineRule - */ - public TagRule(IToken token, char escapeCharacter) { - super("<", ">", token, escapeCharacter); //$NON-NLS-2$ //$NON-NLS-1$ - } - - private IToken checkForWhitespace(ICharacterScanner scanner) { + class TagRule extends SingleLineRule { + + /* + * @see SingleLineRule + */ + public TagRule(IToken token) { + super("<", ">", token, (char) 0); //$NON-NLS-2$ //$NON-NLS-1$ + } + + /* + * @see SingleLineRule + */ + public TagRule(IToken token, char escapeCharacter) { + super("<", ">", token, escapeCharacter); //$NON-NLS-2$ //$NON-NLS-1$ + } + + private IToken checkForWhitespace(ICharacterScanner scanner) { - try { + try { - char c= getDocument().getChar(getTokenOffset() + 1); - if (!Character.isWhitespace(c)) - return fToken; + char c= getDocument().getChar(getTokenOffset() + 1); + if (!Character.isWhitespace(c)) + return fToken; - } catch (BadLocationException x) { - } + } catch (BadLocationException x) { + } - return Token.UNDEFINED; - } + return Token.UNDEFINED; + } - /* - * @see PatternRule#evaluate(ICharacterScanner) - */ - public IToken evaluate(ICharacterScanner scanner) { - IToken result= super.evaluate(scanner); - if (result == fToken) - return checkForWhitespace(scanner); - return result; - } - }; + /* + * @see PatternRule#evaluate(ICharacterScanner) + */ + public IToken evaluate(ICharacterScanner scanner) { + IToken result= super.evaluate(scanner); + if (result == fToken) + return checkForWhitespace(scanner); + return result; + } + }; - private static String[] fgKeywords= {"@author", "@deprecated", "@exception", "@param", "@return", "@see", "@serial", "@serialData", "@serialField", "@since", "@throws", "@version"}; //$NON-NLS-12$ //$NON-NLS-11$ //$NON-NLS-10$ //$NON-NLS-7$ //$NON-NLS-9$ //$NON-NLS-8$ //$NON-NLS-6$ //$NON-NLS-5$ //$NON-NLS-4$ //$NON-NLS-3$ //$NON-NLS-2$ //$NON-NLS-1$ + private static String[] fgKeywords= {"@author", "@deprecated", "@exception", "@param", "@return", "@see", "@serial", "@serialData", "@serialField", "@since", "@throws", "@version"}; //$NON-NLS-12$ //$NON-NLS-11$ //$NON-NLS-10$ //$NON-NLS-7$ //$NON-NLS-9$ //$NON-NLS-8$ //$NON-NLS-6$ //$NON-NLS-5$ //$NON-NLS-4$ //$NON-NLS-3$ //$NON-NLS-2$ //$NON-NLS-1$ -// private static String[] fgTokenProperties= { -// IJavaColorConstants.JAVADOC_KEYWORD, -// IJavaColorConstants.JAVADOC_TAG, -// IJavaColorConstants.JAVADOC_LINK, -// IJavaColorConstants.JAVADOC_DEFAULT -// }; + private static String[] fgTokenProperties= { + IJavaColorConstants.PHPDOC_KEYWORD, + IJavaColorConstants.PHPDOC_TAG, + IJavaColorConstants.PHPDOC_LINK, + IJavaColorConstants.PHPDOC_DEFAULT + }; - public PHPDocCodeScanner(JavaColorManager provider, IPreferenceStore store) { - // super(manager, store); - // initialize(); - createRules(provider); - } + public PHPDocCodeScanner(IColorManager manager, IPreferenceStore store) { + super(manager, store); + initialize(); + } - public IDocument getDocument() { - return fDocument; - } + public IDocument getDocument() { + return fDocument; + } - /* - * @see AbstractJavaScanner#getTokenProperties() - */ -// protected String[] getTokenProperties() { -// return fgTokenProperties; -// } + /* + * @see AbstractJavaScanner#getTokenProperties() + */ + protected String[] getTokenProperties() { + return fgTokenProperties; + } - /* create the rules for PHPDoc - */ - protected List createRules(JavaColorManager provider) { + /* + * @see AbstractJavaScanner#createRules() + */ + protected List createRules() { - List list= new ArrayList(); + List list= new ArrayList(); + // Add rule for tags. + Token token= getToken(IJavaColorConstants.PHPDOC_TAG); + list.add(new TagRule(token)); -// IToken type = new Token(new TextAttribute(provider.getColor(PHPColorProvider.FUNCTION_NAME))); -// IToken string = new Token(new TextAttribute(provider.getColor(PHPColorProvider.STRING))); -// IToken comment = new Token(new TextAttribute(provider.getColor(PHPColorProvider.SINGLE_LINE_COMMENT))); -// IToken multi_comment = new Token(new TextAttribute(provider.getColor(PHPColorProvider.MULTI_LINE_COMMENT))); -// IToken other = new Token(new TextAttribute(provider.getColor(PHPColorProvider.DEFAULT))); - - // Add rule for tags. - // Token token= getToken(IJavaColorConstants.JAVADOC_TAG); - Token token = new Token(new TextAttribute(provider.getColor(PHPColorProvider.PHPDOC_TAG))); - list.add(new TagRule(token)); + // Add rule for HTML comments + WordRule wordRule= new WordRule(new HTMLCommentDetector(), token); + wordRule.addWord("", token); //$NON-NLS-1$ + list.add(wordRule); - // Add rule for HTML comments - WordRule wordRule= new WordRule(new HTMLCommentDetector(), token); - wordRule.addWord("", token); //$NON-NLS-1$ - list.add(wordRule); + // Add rule for links. + token= getToken(IJavaColorConstants.PHPDOC_LINK); + list.add(new SingleLineRule("{@link", "}", token)); //$NON-NLS-2$ //$NON-NLS-1$ - // Add rule for links. - token= new Token(new TextAttribute(provider.getColor(PHPColorProvider.PHPDOC_LINK))); - list.add(new SingleLineRule("{@link", "}", token)); //$NON-NLS-2$ //$NON-NLS-1$ + // Add generic whitespace rule. + list.add(new WhitespaceRule(new PHPWhitespaceDetector())); - // Add generic whitespace rule. - list.add(new WhitespaceRule(new PHPWhitespaceDetector())); + // Add word rule for keywords. + token= getToken(IJavaColorConstants.PHPDOC_DEFAULT); + wordRule= new WordRule(new JavaDocKeywordDetector(), token); - // Add word rule for keywords. - token= new Token(new TextAttribute(provider.getColor(PHPColorProvider.PHPDOC_DEFAULT))); - wordRule= new WordRule(new PHPDocKeywordDetector(), token); + token= getToken(IJavaColorConstants.PHPDOC_KEYWORD); + for (int i= 0; i < fgKeywords.length; i++) + wordRule.addWord(fgKeywords[i], token); + list.add(wordRule); - token= new Token(new TextAttribute(provider.getColor(PHPColorProvider.PHPDOC_KEYWORD))); - for (int i= 0; i < fgKeywords.length; i++) - wordRule.addWord(fgKeywords[i], token); - list.add(wordRule); - - setDefaultReturnToken( new Token(new TextAttribute(provider.getColor(PHPColorProvider.PHPDOC_DEFAULT))) ); - return list; - } + setDefaultReturnToken(getToken(IJavaColorConstants.PHPDOC_DEFAULT)); + return list; + } }