1 14 15 package org.eclipse.ant.internal.ui.editor.text; 16 17 import org.eclipse.ant.internal.ui.preferences.AntEditorPreferenceConstants; 18 import org.eclipse.jface.text.rules.IRule; 19 import org.eclipse.jface.text.rules.MultiLineRule; 20 import org.eclipse.jface.text.rules.SingleLineRule; 21 import org.eclipse.jface.text.rules.Token; 22 import org.eclipse.jface.text.rules.WhitespaceRule; 23 import org.eclipse.jface.util.PropertyChangeEvent; 24 import org.eclipse.swt.SWT; 25 26 29 public class AntEditorTagScanner extends AbstractAntEditorScanner { 30 31 private Token fStringToken; 32 33 public AntEditorTagScanner() { 34 fStringToken= new Token( 35 createTextAttribute(IAntEditorColorConstants.STRING_COLOR, 36 IAntEditorColorConstants.STRING_COLOR + AntEditorPreferenceConstants.EDITOR_BOLD_SUFFIX, 37 IAntEditorColorConstants.STRING_COLOR + AntEditorPreferenceConstants.EDITOR_ITALIC_SUFFIX)); 38 39 IRule[] rules= new IRule[3]; 40 41 rules[0]= new MultiLineRule("\"", "\"", fStringToken, '\\'); rules[1]= new SingleLineRule("'", "'", fStringToken, '\\'); 45 rules[2]= new WhitespaceRule(new AntEditorWhitespaceDetector()); 47 48 setRules(rules); 49 50 setDefaultReturnToken( 51 new Token(createTextAttribute(IAntEditorColorConstants.TAG_COLOR, 52 IAntEditorColorConstants.TAG_COLOR + AntEditorPreferenceConstants.EDITOR_BOLD_SUFFIX, 53 IAntEditorColorConstants.TAG_COLOR + AntEditorPreferenceConstants.EDITOR_ITALIC_SUFFIX))); 54 } 55 56 public void adaptToPreferenceChange(PropertyChangeEvent event) { 57 String property= event.getProperty(); 58 if (property.startsWith(IAntEditorColorConstants.TAG_COLOR) || property.startsWith(IAntEditorColorConstants.STRING_COLOR)) { 59 if (property.endsWith(AntEditorPreferenceConstants.EDITOR_BOLD_SUFFIX)) { 60 adaptToStyleChange(event, getTokenAffected(event), SWT.BOLD); 61 } else if (property.endsWith(AntEditorPreferenceConstants.EDITOR_ITALIC_SUFFIX)) { 62 adaptToStyleChange(event, getTokenAffected(event), SWT.ITALIC); 63 } else { 64 adaptToColorChange(event, getTokenAffected(event)); 65 } 66 } 67 } 68 69 private Token getTokenAffected(PropertyChangeEvent event) { 70 String property= event.getProperty(); 71 if (property.startsWith(IAntEditorColorConstants.STRING_COLOR)) { 72 return fStringToken; 73 } return (Token)fDefaultReturnToken; 75 } 77 } 78 | Popular Tags |