/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
/*
* @author: Scott Schlesier
* Created: March 5, 2005
*/
package org.python.pydev.editor;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.text.TextAttribute;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.Token;
import org.python.pydev.editor.preferences.PydevEditorPrefs;
import org.python.pydev.ui.ColorAndStyleCache;
/**
*
* PyColoredScanner is a simple modification to RuleBasedScanner
* that supports updating the defaultToken color based on a named
* color in the colorCache
*/
public class PyColoredScanner extends RuleBasedScanner {
private ColorAndStyleCache colorCache;
private String name;
public PyColoredScanner(ColorAndStyleCache colorCache, String name) {
super();
Assert.isNotNull(colorCache);
this.colorCache = colorCache;
this.name = name;
updateColorAndStyle();
}
public void updateColorAndStyle() {
TextAttribute attr;
if (PydevEditorPrefs.COMMENT_COLOR.equals(name)) {
attr = colorCache.getCommentTextAttribute();
} else if (PydevEditorPrefs.BACKQUOTES_COLOR.equals(name)) {
attr = colorCache.getBackquotesTextAttribute();
} else if (PydevEditorPrefs.STRING_COLOR.equals(name)) {
attr = colorCache.getStringTextAttribute();
} else {
throw new RuntimeException("Unexpected: " + name);
}
setDefaultReturnToken(new Token(attr));
}
}