// Copyright (c) 2009 The Chromium Authors. All rights reserved.
//Use of this source code is governed by a BSD-style license that can be
//found in the LICENSE file.
package com.github.sdbg.debug.ui.internal.editors;
//&&&package org.chromium.debug.ui.editors;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.TextAttribute;
import org.eclipse.jface.text.presentation.IPresentationReconciler;
import org.eclipse.jface.text.presentation.PresentationReconciler;
import org.eclipse.jface.text.rules.BufferedRuleBasedScanner;
import org.eclipse.jface.text.rules.DefaultDamagerRepairer;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.ui.editors.text.TextSourceViewerConfiguration;
/**
* A JavaScript source viewer configuration.
*/
public class JsSourceViewerConfiguration extends TextSourceViewerConfiguration {
private static class MultilineCommentScanner extends BufferedRuleBasedScanner {
public MultilineCommentScanner(TextAttribute attr) {
setDefaultReturnToken(new Token(attr));
}
}
private static final String[] CONTENT_TYPES = new String[] {
IDocument.DEFAULT_CONTENT_TYPE, JsPartitionScanner.JSDOC,
JsPartitionScanner.MULTILINE_COMMENT};
private final JsCodeScanner scanner = new JsCodeScanner();
@Override
public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) {
return CONTENT_TYPES;
}
@Override
public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {
PresentationReconciler pr = new PresentationReconciler();
pr.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
setDamagerRepairer(pr, new DefaultDamagerRepairer(scanner), IDocument.DEFAULT_CONTENT_TYPE);
setDamagerRepairer(
pr,
new DefaultDamagerRepairer(new MultilineCommentScanner(scanner.getCommentAttribute())),
JsPartitionScanner.MULTILINE_COMMENT);
setDamagerRepairer(
pr,
new DefaultDamagerRepairer(new MultilineCommentScanner(scanner.getJsDocAttribute())),
JsPartitionScanner.JSDOC);
return pr;
}
//&&&
// @Override
// public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
// return new JsDebugTextHover();
// }
private void setDamagerRepairer(PresentationReconciler pr,
DefaultDamagerRepairer damagerRepairer, String tokenType) {
pr.setDamager(damagerRepairer, tokenType);
pr.setRepairer(damagerRepairer, tokenType);
}
}