Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(403)

Unified Diff: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/DartTextHover.java

Issue 8817009: Preliminary support for dartdoc hovers. Future CLs will give us richer hover information and styl... (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/DartTextHover.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/DartTextHover.java (revision 0)
+++ editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/text/editor/DartTextHover.java (revision 0)
@@ -0,0 +1,61 @@
+package com.google.dart.tools.ui.internal.text.editor;
+
+import com.google.dart.compiler.ast.DartUnit;
+import com.google.dart.tools.core.model.CompilationUnit;
+import com.google.dart.tools.core.model.DartModelException;
+import com.google.dart.tools.core.utilities.dartdoc.DartDocUtilities;
+import com.google.dart.tools.ui.text.DartSourceViewerConfiguration;
+
+import org.eclipse.jface.text.DefaultTextHover;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.source.Annotation;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.ui.texteditor.ITextEditor;
+
+/**
+ * An implementation of ITextHover for Dart documentation.
+ */
+public class DartTextHover extends DefaultTextHover {
+ private CompilationUnitEditor editor;
+ private DartSourceViewerConfiguration sourceViewerConfiguration;
+
+ public DartTextHover(ITextEditor editor, ISourceViewer sourceViewer,
+ DartSourceViewerConfiguration sourceViewerConfiguration) {
+ super(sourceViewer);
+
+ if (editor instanceof CompilationUnitEditor) {
+ this.editor = (CompilationUnitEditor) editor;
+ }
+
+ this.sourceViewerConfiguration = sourceViewerConfiguration;
+ }
+
+ @Override
+ public String getHoverInfo(ITextViewer textViewer, IRegion region) {
+ String annotationHover = super.getHoverInfo(textViewer, region);
+
+ if (annotationHover != null) {
+ return annotationHover;
+ }
+
+ if (editor == null) {
+ return null;
+ }
+
+ DartUnit unit = editor.getAST();
+
+ try {
+ return DartDocUtilities.getDartDoc((CompilationUnit) editor.getInputDartElement(), unit,
+ region.getOffset(), region.getOffset() + region.getLength());
+ } catch (DartModelException e) {
+ return null;
+ }
+ }
+
+ @Override
+ protected boolean isIncluded(Annotation annotation) {
+ return sourceViewerConfiguration.isShownInText(annotation);
+ }
+
+}

Powered by Google App Engine
This is Rietveld 408576698