package tk.eclipse.plugin.csseditor.editors; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.contentassist.ContentAssistant; import org.eclipse.jface.text.contentassist.IContentAssistant; import org.eclipse.jface.text.presentation.IPresentationReconciler; import org.eclipse.jface.text.presentation.PresentationReconciler; import org.eclipse.jface.text.rules.DefaultDamagerRepairer; import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.jface.text.source.SourceViewerConfiguration; import tk.eclipse.plugin.htmleditor.ColorProvider; import tk.eclipse.plugin.htmleditor.HTMLPlugin; /** * * @author Naoki Takezoe */ public class CSSConfiguration extends SourceViewerConfiguration { private ColorProvider colorProvider; private RuleBasedScanner commentScanner; private CSSBlockScanner defaultScanner; public CSSConfiguration(ColorProvider colorProvider) { this.colorProvider = colorProvider; } private RuleBasedScanner getCommentScanner() { if (commentScanner == null) { commentScanner = new RuleBasedScanner(); commentScanner.setDefaultReturnToken(colorProvider.getToken(HTMLPlugin.PREF_COLOR_CSSCOMMENT)); } return commentScanner; } private RuleBasedScanner getDefaultScanner() { if (defaultScanner == null) { defaultScanner = new CSSBlockScanner(colorProvider); defaultScanner.setDefaultReturnToken(colorProvider.getToken(HTMLPlugin.PREF_COLOR_FG)); } return defaultScanner; } @Override public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) { return new String[] { IDocument.DEFAULT_CONTENT_TYPE, CSSPartitionScanner.CSS_COMMENT }; } @Override public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) { ContentAssistant assistant = new ContentAssistant(); assistant.enableAutoInsert(true); CSSAssistProcessor processor = new CSSAssistProcessor(); assistant.setContentAssistProcessor(processor, IDocument.DEFAULT_CONTENT_TYPE); assistant.install(sourceViewer); // IPreferenceStore store = HTMLPlugin.getDefault().getPreferenceStore(); // assistant.enableAutoActivation(store.getBoolean(HTMLPlugin.PREF_ASSIST_AUTO)); // assistant.setAutoActivationDelay(store.getInt(HTMLPlugin.PREF_ASSIST_TIMES)); return assistant; } @Override public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { PresentationReconciler reconciler = new PresentationReconciler(); DefaultDamagerRepairer dr = null; dr = new DefaultDamagerRepairer(getDefaultScanner()); reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); dr = new DefaultDamagerRepairer(getCommentScanner()); reconciler.setDamager(dr, CSSPartitionScanner.CSS_COMMENT); reconciler.setRepairer(dr, CSSPartitionScanner.CSS_COMMENT); return reconciler; } }