/******************************************************************************* | |
* Copyright (c) 2004-2008 Istvan Rath and Daniel Varro | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License v1.0 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
* | |
* Contributors: | |
* Istvan Rath - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.viatra2.editor.text.light.vtcl; | |
import java.util.Iterator; | |
import org.eclipse.core.resources.IMarker; | |
import org.eclipse.core.runtime.CoreException; | |
import org.eclipse.viatra2.editor.text.Activator; | |
import org.eclipse.viatra2.editor.text.light.IVTEConstants; | |
import org.eclipse.viatra2.editor.text.light.VTEAutoIndentStrategy; | |
import org.eclipse.viatra2.editor.text.light.VTEColorProvider; | |
import org.eclipse.viatra2.editor.text.light.VTEColorToken; | |
import org.eclipse.jface.text.IAutoEditStrategy; | |
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.DefaultDamagerRepairer; | |
import org.eclipse.jface.text.rules.Token; | |
import org.eclipse.jface.text.source.IAnnotationHover; | |
import org.eclipse.jface.text.source.ISourceViewer; | |
import org.eclipse.jface.text.source.SourceViewerConfiguration; | |
import org.eclipse.swt.SWT; | |
import org.eclipse.ui.texteditor.MarkerAnnotation; | |
public class VTCLConfiguration extends SourceViewerConfiguration | |
{ | |
private VTCLCodeScanner iCodeScanner = null; | |
private VTEColorProvider iColorProvider = null; | |
private VTEColorToken iColorToken = null; | |
@SuppressWarnings("static-access") | |
public VTCLConfiguration(VTEColorProvider cm) | |
{ | |
iColorProvider = cm; | |
iColorProvider.initializeDefaults(Activator.getDefault().getPreferenceStore()); | |
iColorToken = new VTEColorToken(); | |
iColorToken.COMMENT = new Token(new TextAttribute(iColorProvider.getColor(IVTEConstants.COMMENT),null,SWT.ITALIC)); | |
iColorToken.KEYWORD = new Token(new TextAttribute(iColorProvider.getColor(IVTEConstants.KEYWORD),null,SWT.BOLD)); | |
iColorToken.STRING = new Token(new TextAttribute(iColorProvider.getColor(IVTEConstants.STRING))); | |
iColorToken.OTHER = new Token(new TextAttribute(iColorProvider.getColor(IVTEConstants.DEFAULT))); | |
iCodeScanner = new VTCLCodeScanner(iColorProvider,iColorToken); | |
} | |
/** | |
* Define reconciler for VTMLEditor | |
*/ | |
public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) { | |
PresentationReconciler reconciler = new PresentationReconciler(); | |
DefaultDamagerRepairer dr = new DefaultDamagerRepairer(iCodeScanner); | |
reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE); | |
reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE); | |
return reconciler; | |
} | |
@Override | |
public IAutoEditStrategy[] getAutoEditStrategies(ISourceViewer sourceViewer, String contentType) | |
{ | |
return new IAutoEditStrategy[]{new VTEAutoIndentStrategy()}; | |
} | |
@Override | |
public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) | |
{ | |
return new IAnnotationHover() { | |
public String getHoverInfo(ISourceViewer sourceViewer,int lineNumber) { | |
String r = "Problems:\n"; | |
Iterator<?> it = sourceViewer.getAnnotationModel().getAnnotationIterator(); | |
while (it.hasNext()) | |
{ | |
Object o = it.next(); | |
if (o instanceof MarkerAnnotation) | |
{ | |
MarkerAnnotation ann = (MarkerAnnotation)o; | |
try | |
{ | |
int line = (Integer) ann.getMarker().getAttribute(IMarker.LINE_NUMBER); | |
if (line == lineNumber || line == lineNumber-1 || line == lineNumber+1) // no comment... | |
{ | |
r+=" - "+ann.getText()+"\n"; | |
} | |
} | |
catch (CoreException e) { } | |
} | |
} | |
return r; | |
} | |
}; | |
} | |
} |