X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java deleted file mode 100644 index 6a5040c..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java +++ /dev/null @@ -1,266 +0,0 @@ -/********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. and others. -All rights reserved. This program and the accompanying materials -are made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html - -Contributors: - IBM Corporation - Initial implementation - Klaus Hartlage - www.eclipseproject.de -**********************************************************************/ -package net.sourceforge.phpeclipse.phpeditor.php; - -import java.util.ArrayList; -import java.util.List; -import java.util.Vector; - -import net.sourceforge.phpeclipse.phpeditor.util.PHPWhitespaceDetector; -import net.sourceforge.phpeclipse.phpeditor.util.PHPWordDetector; - -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.text.TextAttribute; -import org.eclipse.jface.text.rules.EndOfLineRule; -import org.eclipse.jface.text.rules.ICharacterScanner; -import org.eclipse.jface.text.rules.IRule; -import org.eclipse.jface.text.rules.IToken; -import org.eclipse.jface.text.rules.IWordDetector; -import org.eclipse.jface.text.rules.MultiLineRule; -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; -import org.eclipse.jface.text.rules.WordRule; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; - -import net.sourceforge.phpeclipse.IPreferenceConstants; -import net.sourceforge.phpeclipse.PHPeclipsePlugin; -import net.sourceforge.phpeclipse.phpeditor.PHPSyntaxRdr; -import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider; - -/** - * PHP Code Scanner - */ -public class PHPCodeScanner extends RuleBasedScanner implements IPreferenceConstants { - - private static Token variable; - private static Token keyword; - private static Token type; - private static Token constant; - private static Token functionName; - private static Token string; - private static Token comment; - private static Token multi_comment; - private static Token other; - - private class PHPWordRule extends WordRule { - private StringBuffer fBuffer = new StringBuffer(); - - public PHPWordRule(IWordDetector detector) { - super(detector, Token.UNDEFINED); - } - - public PHPWordRule(IWordDetector detector, IToken defaultToken) { - super(detector, defaultToken); - } - - public IToken evaluate(ICharacterScanner scanner) { - int c = scanner.read(); - boolean isVariable = false; - if (fDetector.isWordStart((char) c)) { - if (c == '$') { - isVariable = true; - } - if (fColumn == UNDEFINED || (fColumn == scanner.getColumn() - 1)) { - - fBuffer.setLength(0); - do { - fBuffer.append((char) c); - c = scanner.read(); - } while (c != ICharacterScanner.EOF && fDetector.isWordPart((char) c)); - scanner.unread(); - - if (isVariable) { - return variable; - } - IToken token = (IToken) fWords.get(fBuffer.toString()); - if (token != null) - return token; - - if (fDefaultToken.isUndefined()) - unreadBuffer(scanner); - - return fDefaultToken; - } - } - - scanner.unread(); - return Token.UNDEFINED; - } - } - - private PHPColorProvider fColorProvider; - - /** - * Creates a PHP code scanner - */ - public PHPCodeScanner(PHPColorProvider provider) { - final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); - Color BackgroundColor = provider.getColor(PreferenceConverter.getColor(store, PHP_EDITOR_BACKGROUND)); - variable = - new Token( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_VARIABLE)), - BackgroundColor, - (store.getBoolean(PHP_VARIABLE_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_VARIABLE_ITALIC) ? SWT.ITALIC : SWT.NONE))); - keyword = - new Token(new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_KEYWORD)), - BackgroundColor, - //SWT.NONE)); - (store.getBoolean(PHP_KEYWORD_BOLD) ? SWT.BOLD : SWT.NONE) + (store.getBoolean(PHP_KEYWORD_ITALIC) ? SWT.ITALIC : SWT.NONE))); - type = - new Token(new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_TYPE)), - BackgroundColor, - //SWT.NONE)); - (store.getBoolean(PHP_TYPE_BOLD) ? SWT.BOLD : SWT.NONE) + (store.getBoolean(PHP_TYPE_ITALIC) ? SWT.ITALIC : SWT.NONE))); - functionName = - new Token(new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_FUNCTIONNAME)), - BackgroundColor, - //SWT.NONE)); - (store.getBoolean(PHP_FUNCTIONNAME_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_FUNCTIONNAME_ITALIC) ? SWT.ITALIC : SWT.NONE))); - constant = - new Token(new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_CONSTANT)), - BackgroundColor, - //SWT.NONE)); - (store.getBoolean(PHP_CONSTANT_BOLD) ? SWT.BOLD : SWT.NONE) + (store.getBoolean(PHP_CONSTANT_ITALIC) ? SWT.ITALIC : SWT.NONE))); - string = - new Token(new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_STRING)), - BackgroundColor, - //SWT.NONE)); - (store.getBoolean(PHP_STRING_BOLD) ? SWT.BOLD : SWT.NONE ) + (store.getBoolean(PHP_STRING_ITALIC) ? SWT.ITALIC : SWT.NONE))); - comment = - new Token(new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_SINGLELINE_COMMENT)), - BackgroundColor, - //SWT.NONE)); - (store.getBoolean(PHP_SINGLELINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NONE ) - + (store.getBoolean(PHP_SINGLELINE_COMMENT_ITALIC) ? SWT.ITALIC : SWT.NONE))); - multi_comment = - new Token(new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_MULTILINE_COMMENT)), - BackgroundColor, - //SWT.NONE)); - (store.getBoolean(PHP_MULTILINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_MULTILINE_COMMENT_ITALIC) ? SWT.ITALIC : SWT.NONE))); - other = - new Token(new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_DEFAULT)), - BackgroundColor, - //SWT.NONE)); - (store.getBoolean(PHP_DEFAULT_BOLD) ? SWT.BOLD : SWT.NONE) + (store.getBoolean(PHP_DEFAULT_ITALIC) ? SWT.ITALIC : SWT.NONE))); - updateWordRules(); - } - - public void updateToken(PHPColorProvider provider) { - final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); - - Color BackgroundColor = provider.getColor(PreferenceConverter.getColor(store, PHP_EDITOR_BACKGROUND)); - - variable.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_VARIABLE)), - BackgroundColor, - (store.getBoolean(PHP_VARIABLE_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_VARIABLE_ITALIC) ? SWT.ITALIC : SWT.NONE))); - keyword.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_KEYWORD)), - BackgroundColor, - (store.getBoolean(PHP_KEYWORD_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_KEYWORD_ITALIC) ? SWT.ITALIC : SWT.NONE))); - type.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_TYPE)), - BackgroundColor, - (store.getBoolean(PHP_TYPE_BOLD) ? SWT.BOLD : SWT.NONE) + (store.getBoolean(PHP_TYPE_ITALIC) ? SWT.ITALIC : SWT.NONE))); - functionName.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_FUNCTIONNAME)), - BackgroundColor, - (store.getBoolean(PHP_FUNCTIONNAME_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_FUNCTIONNAME_ITALIC) ? SWT.ITALIC : SWT.NONE))); - constant.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_CONSTANT)), - BackgroundColor, - (store.getBoolean(PHP_CONSTANT_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_CONSTANT_ITALIC) ? SWT.ITALIC : SWT.NONE))); - string.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_STRING)), - BackgroundColor, - (store.getBoolean(PHP_STRING_BOLD) ? SWT.BOLD : SWT.NONE) + (store.getBoolean(PHP_STRING_ITALIC) ? SWT.ITALIC : SWT.NONE))); - comment.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_SINGLELINE_COMMENT)), - BackgroundColor, - (store.getBoolean(PHP_SINGLELINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_SINGLELINE_COMMENT_ITALIC) ? SWT.ITALIC : SWT.NONE))); - multi_comment.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_MULTILINE_COMMENT)), - BackgroundColor, - (store.getBoolean(PHP_MULTILINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_MULTILINE_COMMENT_ITALIC) ? SWT.ITALIC : SWT.NONE))); - other.setData( - new TextAttribute( - provider.getColor(PreferenceConverter.getColor(store, PHP_DEFAULT)), - BackgroundColor, - (store.getBoolean(PHP_DEFAULT_BOLD) ? SWT.BOLD : SWT.NONE) - + (store.getBoolean(PHP_DEFAULT_ITALIC) ? SWT.ITALIC : SWT.NONE))); - } - - public void updateWordRules() { - List rules = new ArrayList(); - // Add rule for single line comments. - rules.add(new EndOfLineRule("//", comment)); //$NON-NLS-1$ - rules.add(new EndOfLineRule("#", comment)); - // Add rule for strings and character constants. - rules.add(new MultiLineRule("\"", "\"", string, '\\')); //$NON-NLS-2$ //$NON-NLS-1$ - rules.add(new SingleLineRule("'", "'", string, '\\')); //$NON-NLS-2$ //$NON-NLS-1$ - // rules.add(new SingleLineRule("//", "//", php_comment)); - rules.add(new MultiLineRule("/*", "*/", multi_comment)); - // Add generic whitespace rule. - rules.add(new WhitespaceRule(new PHPWhitespaceDetector())); - // Add word rule for keywords, types, and constants. - PHPWordRule wordRule = new PHPWordRule(new PHPWordDetector(), other); - - PHPSyntaxRdr.readInSyntax(); - Vector buffer = PHPSyntaxRdr.getsyntaxdata(); - String strbuffer = null; - PHPElement elbuffer = null; - while ((buffer != null) && (!buffer.isEmpty() && ((elbuffer = (PHPElement) buffer.remove(0)) != null))) { - if (elbuffer instanceof PHPKeyword) - wordRule.addWord(((PHPKeyword) elbuffer).getName(), keyword); - if (elbuffer instanceof PHPFunction) - wordRule.addWord(((PHPFunction) elbuffer).getName(), functionName); - if (elbuffer instanceof PHPType) - wordRule.addWord(elbuffer.getName(), type); - if (elbuffer instanceof PHPConstant) - wordRule.addWord(elbuffer.getName(), constant); - } - rules.add(wordRule); - IRule[] result = new IRule[rules.size()]; - rules.toArray(result); - setRules(result); - } -}