package cideplus.ui.editor; import org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.ITextViewerExtension2; import org.eclipse.jface.text.ITextViewerExtension4; import org.eclipse.jface.text.source.AnnotationPainter; import org.eclipse.jface.text.source.CompositeRuler; import org.eclipse.jface.text.source.IAnnotationAccess; import org.eclipse.jface.text.source.IOverviewRuler; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.jface.text.source.IVerticalRuler; import org.eclipse.jface.text.source.IVerticalRulerInfoExtension; import org.eclipse.jface.text.source.IVerticalRulerListener; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.widgets.Composite; import cideplus.ui.presentation.CustomAnnotationPainter; import cideplus.ui.presentation.VerticalRulerListener; @SuppressWarnings("restriction") public class FeaturerCompilationUnitEditor extends CompilationUnitEditor { private CustomAnnotationPainter customAnnotationPainter = null; AnnotationPainter ap; public IVerticalRulerListener verticalRulerListener = null; // public SelectAnnotationRulerAction rulerAction = null; // // IAnnotationHover hover = null; // // private SourceViewerConfig sourceViewerConfig = null; /* Hover já está funcionando sem esse source viewer config. */ // @Override // protected JavaSourceViewerConfiguration createJavaSourceViewerConfiguration() { // System.out.println("FeaturerCompilationUnitEditor.createJavaSourceViewerConfiguration()"); // JavaTextTools textTools= JavaPlugin.getDefault().getJavaTextTools(); // return new SourceViewerConfig(textTools.getColorManager(), getPreferenceStore(), this, IJavaPartitions.JAVA_PARTITIONING); // } @Override public IAnnotationAccess getAnnotationAccess() { return super.getAnnotationAccess(); } @Override protected ISourceViewer createJavaSourceViewer(Composite parent, IVerticalRuler verticalRuler, IOverviewRuler overviewRuler, boolean isOverviewRulerVisible, int styles, IPreferenceStore store) { System.out.println("FeaturerCompilationUnitEditor.createJavaSourceViewer()"); ISourceViewer javaSourceViewer = super.createJavaSourceViewer(parent, verticalRuler, overviewRuler, isOverviewRulerVisible, styles, store); /* Copied to EditorListener */ /* This is here only to ensure that customAnnotationPainter is instantiated only once. */ if (customAnnotationPainter == null) { customAnnotationPainter = new CustomAnnotationPainter(javaSourceViewer, getAnnotationAccess()); } // CompositeRuler c; /* Extension4 introduced the presentation listener concept. */ if(javaSourceViewer instanceof ITextViewerExtension4) { ((ITextViewerExtension4)javaSourceViewer).addTextPresentationListener(customAnnotationPainter); } /* Registering IPainter */ if(javaSourceViewer instanceof ITextViewerExtension2) { ((ITextViewerExtension2) javaSourceViewer).addPainter(customAnnotationPainter); } /* End of copied to EditorListener */ if (verticalRuler instanceof IVerticalRulerInfoExtension) { if (verticalRulerListener == null) verticalRulerListener = new VerticalRulerListener(); ((IVerticalRulerInfoExtension) verticalRuler).addVerticalRulerListener(verticalRulerListener); // verticalRuler.getControl(); // IVerticalRulerColumn col; // Iterator it = ((CompositeRuler) verticalRuler).getDecoratorIterator(); // while (it.hasNext()) { // Object obj = it.next(); // System.out.println("object class: " + obj.getClass()); // } } ((CompositeRuler) verticalRuler).fireAnnotationSelected(null); return javaSourceViewer; } @Override public void dispose() { ISourceViewer sourceViewer = getSourceViewer(); if (sourceViewer != null) { if (sourceViewer instanceof ITextViewerExtension4) ((ITextViewerExtension4) sourceViewer).removeTextPresentationListener(customAnnotationPainter); StyledText textWidget = sourceViewer.getTextWidget(); if (textWidget != null) { textWidget.removePaintListener(customAnnotationPainter); customAnnotationPainter.deactivate(false); } } super.dispose(); } }