package tk.eclipse.plugin.jspeditor.editors; import org.eclipse.jface.text.contentassist.ContentAssistant; import org.eclipse.jface.text.contentassist.IContentAssistant; import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.source.ISourceViewer; import tk.eclipse.plugin.htmleditor.ColorProvider; import tk.eclipse.plugin.htmleditor.HTMLHyperlinkDetector; import tk.eclipse.plugin.htmleditor.HTMLPlugin; import tk.eclipse.plugin.htmleditor.IHyperlinkProvider; import tk.eclipse.plugin.htmleditor.assist.HTMLAssistProcessor; import tk.eclipse.plugin.htmleditor.editors.HTMLAutoEditStrategy; import tk.eclipse.plugin.htmleditor.editors.HTMLConfiguration; import tk.eclipse.plugin.htmleditor.editors.HTMLPartitionScanner; /** * SourceViewerConfiguration for the JSP editor. */ public class JSPConfiguration extends HTMLConfiguration { private JSPScriptletScanner scriptletScanner = null; private JSPDirectiveScanner directiveScanner = null; private IContentAssistant assistant = null; private JSPDirectiveAssistProcessor directiveProcessor; private JSPScriptletAssistProcessor scriptletProcessor; /** * The constructor. * * @param colorProvider the <code>ColorProvider</code>. */ public JSPConfiguration(ColorProvider colorProvider) { super(colorProvider); } /** * @since 2.0.3 */ @Override protected HTMLHyperlinkDetector createHyperlinkDetector() { HTMLHyperlinkDetector hyperlink = super.createHyperlinkDetector(); hyperlink.addHyperlinkProvider(new JSPHyperlinkProvider()); IHyperlinkProvider[] providers = HTMLPlugin.getDefault().getHyperlinkProviders(); for(int i=0;i<providers.length;i++){ hyperlink.addHyperlinkProvider(providers[i]); } return hyperlink; } /** * Creates and returns the <code>JSPAssistProcessor</code>. * * @return the <code>JSPAssistProcessor</code> * @see JSPAssistProcessor */ @Override protected HTMLAssistProcessor createAssistProcessor() { return new JSPAssistProcessor(); } /** * Returns the <code>JSPScriptletScanner</code>. * * @return the <code>JSPScriptletScanner</code> * @see JSPScriptletScanner */ @Override protected RuleBasedScanner getScriptScanner() { if (scriptletScanner == null) { scriptletScanner = new JSPScriptletScanner(getColorProvider()); scriptletScanner.setDefaultReturnToken( getColorProvider().getToken(HTMLPlugin.PREF_COLOR_FG)); } return scriptletScanner; } /** * Returns the <code>JSPDirectiveScanner</code>. * * @return the <code>JSPDirectiveScanner</code> * @see JSPDirectiveScanner */ @Override protected RuleBasedScanner getDirectiveScanner() { if (directiveScanner == null) { directiveScanner = new JSPDirectiveScanner(getColorProvider()); directiveScanner.setDefaultReturnToken( getColorProvider().getToken(HTMLPlugin.PREF_COLOR_TAG)); } return directiveScanner; } /** * Returns the <code>JSPAutoEditStrategy</code>. * * @return the <code>JSPAutoEditStrategy</code> * @since 2.0.3 * @see JSPAutoEditStrategy */ @Override protected HTMLAutoEditStrategy createAutoEditStrategy(){ return new JSPAutoEditStrategy(); } @Override public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) { if(assistant==null){ assistant = super.getContentAssistant(sourceViewer); directiveProcessor = new JSPDirectiveAssistProcessor(); ((ContentAssistant)assistant).setContentAssistProcessor( directiveProcessor,HTMLPartitionScanner.HTML_DIRECTIVE); scriptletProcessor = new JSPScriptletAssistProcessor(); ((ContentAssistant)assistant).setContentAssistProcessor( scriptletProcessor,HTMLPartitionScanner.HTML_SCRIPT); } return assistant; } /** * Returns the <code>JSPDirectiveAssistProcessor</code>. * * @return the <code>JSPDirectiveAssistProcessor</code>. * @see JSPDirectiveAssistProcessor */ public JSPDirectiveAssistProcessor getDirectiveAssistProcessor(){ return directiveProcessor; } /** * Returns the <code>JSPScriptletAssistProcessor</code>. * * @return the <code>JSPScriptletAssistProcessor</code>. * @see JSPScriptletAssistProcessor */ public JSPScriptletAssistProcessor getScriptletAssistProcessor(){ return scriptletProcessor; } }