Mercurial > projects > dwt2
view org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultTextHover.d @ 125:c43718956f21 default tip
Updated the snippets status.
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Thu, 11 Aug 2011 19:55:14 +0200 |
parents | bc29606a740c |
children |
line wrap: on
line source
/******************************************************************************* * Copyright (c) 2005, 2008 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation * Port to the D programming language: * Frank Benoit <benoit@tionex.de> *******************************************************************************/ module org.eclipse.jface.text.DefaultTextHover; import org.eclipse.jface.text.IDocumentPartitioningListener; // packageimport import org.eclipse.jface.text.AbstractInformationControl; // packageimport import org.eclipse.jface.text.TextUtilities; // packageimport import org.eclipse.jface.text.IInformationControlCreatorExtension; // packageimport import org.eclipse.jface.text.AbstractInformationControlManager; // packageimport import org.eclipse.jface.text.ITextViewerExtension2; // packageimport import org.eclipse.jface.text.IDocumentPartitioner; // packageimport import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy; // packageimport import org.eclipse.jface.text.ITextSelection; // packageimport import org.eclipse.jface.text.Document; // packageimport import org.eclipse.jface.text.FindReplaceDocumentAdapterContentProposalProvider; // packageimport import org.eclipse.jface.text.ITextListener; // packageimport import org.eclipse.jface.text.BadPartitioningException; // packageimport import org.eclipse.jface.text.ITextViewerExtension5; // packageimport import org.eclipse.jface.text.IDocumentPartitionerExtension3; // packageimport import org.eclipse.jface.text.IUndoManager; // packageimport import org.eclipse.jface.text.ITextHoverExtension2; // packageimport import org.eclipse.jface.text.IRepairableDocument; // packageimport import org.eclipse.jface.text.IRewriteTarget; // packageimport import org.eclipse.jface.text.DefaultPositionUpdater; // packageimport import org.eclipse.jface.text.RewriteSessionEditProcessor; // packageimport import org.eclipse.jface.text.TextViewerHoverManager; // packageimport import org.eclipse.jface.text.DocumentRewriteSession; // packageimport import org.eclipse.jface.text.TextViewer; // packageimport import org.eclipse.jface.text.ITextViewerExtension8; // packageimport import org.eclipse.jface.text.RegExMessages; // packageimport import org.eclipse.jface.text.IDelayedInputChangeProvider; // packageimport import org.eclipse.jface.text.ITextOperationTargetExtension; // packageimport import org.eclipse.jface.text.IWidgetTokenOwner; // packageimport import org.eclipse.jface.text.IViewportListener; // packageimport import org.eclipse.jface.text.GapTextStore; // packageimport import org.eclipse.jface.text.MarkSelection; // packageimport import org.eclipse.jface.text.IDocumentPartitioningListenerExtension; // packageimport import org.eclipse.jface.text.IDocumentAdapterExtension; // packageimport import org.eclipse.jface.text.IInformationControlExtension; // packageimport import org.eclipse.jface.text.IDocumentPartitioningListenerExtension2; // packageimport import org.eclipse.jface.text.DefaultDocumentAdapter; // packageimport import org.eclipse.jface.text.ITextViewerExtension3; // packageimport import org.eclipse.jface.text.IInformationControlCreator; // packageimport import org.eclipse.jface.text.TypedRegion; // packageimport import org.eclipse.jface.text.ISynchronizable; // packageimport import org.eclipse.jface.text.IMarkRegionTarget; // packageimport import org.eclipse.jface.text.TextViewerUndoManager; // packageimport import org.eclipse.jface.text.IRegion; // packageimport import org.eclipse.jface.text.IInformationControlExtension2; // packageimport import org.eclipse.jface.text.IDocumentExtension4; // packageimport import org.eclipse.jface.text.IDocumentExtension2; // packageimport import org.eclipse.jface.text.IDocumentPartitionerExtension2; // packageimport import org.eclipse.jface.text.Assert; // packageimport import org.eclipse.jface.text.DefaultInformationControl; // packageimport import org.eclipse.jface.text.IWidgetTokenOwnerExtension; // packageimport import org.eclipse.jface.text.DocumentClone; // packageimport import org.eclipse.jface.text.DefaultUndoManager; // packageimport import org.eclipse.jface.text.IFindReplaceTarget; // packageimport import org.eclipse.jface.text.IAutoEditStrategy; // packageimport import org.eclipse.jface.text.ILineTrackerExtension; // packageimport import org.eclipse.jface.text.IUndoManagerExtension; // packageimport import org.eclipse.jface.text.TextSelection; // packageimport import org.eclipse.jface.text.DefaultAutoIndentStrategy; // packageimport import org.eclipse.jface.text.IAutoIndentStrategy; // packageimport import org.eclipse.jface.text.IPainter; // packageimport import org.eclipse.jface.text.IInformationControl; // packageimport import org.eclipse.jface.text.IInformationControlExtension3; // packageimport import org.eclipse.jface.text.ITextViewerExtension6; // packageimport import org.eclipse.jface.text.IInformationControlExtension4; // packageimport import org.eclipse.jface.text.DefaultLineTracker; // packageimport import org.eclipse.jface.text.IDocumentInformationMappingExtension; // packageimport import org.eclipse.jface.text.IRepairableDocumentExtension; // packageimport import org.eclipse.jface.text.ITextHover; // packageimport import org.eclipse.jface.text.FindReplaceDocumentAdapter; // packageimport import org.eclipse.jface.text.ILineTracker; // packageimport import org.eclipse.jface.text.Line; // packageimport import org.eclipse.jface.text.ITextViewerExtension; // packageimport import org.eclipse.jface.text.IDocumentAdapter; // packageimport import org.eclipse.jface.text.TextEvent; // packageimport import org.eclipse.jface.text.BadLocationException; // packageimport import org.eclipse.jface.text.AbstractDocument; // packageimport import org.eclipse.jface.text.AbstractLineTracker; // packageimport import org.eclipse.jface.text.TreeLineTracker; // packageimport import org.eclipse.jface.text.ITextPresentationListener; // packageimport import org.eclipse.jface.text.Region; // packageimport import org.eclipse.jface.text.ITextViewer; // packageimport import org.eclipse.jface.text.IDocumentInformationMapping; // packageimport import org.eclipse.jface.text.MarginPainter; // packageimport import org.eclipse.jface.text.IPaintPositionManager; // packageimport import org.eclipse.jface.text.TextPresentation; // packageimport import org.eclipse.jface.text.IFindReplaceTargetExtension; // packageimport import org.eclipse.jface.text.ISlaveDocumentManagerExtension; // packageimport import org.eclipse.jface.text.ISelectionValidator; // packageimport import org.eclipse.jface.text.IDocumentExtension; // packageimport import org.eclipse.jface.text.PropagatingFontFieldEditor; // packageimport import org.eclipse.jface.text.ConfigurableLineTracker; // packageimport import org.eclipse.jface.text.SlaveDocumentEvent; // packageimport import org.eclipse.jface.text.IDocumentListener; // packageimport import org.eclipse.jface.text.PaintManager; // packageimport import org.eclipse.jface.text.IFindReplaceTargetExtension3; // packageimport import org.eclipse.jface.text.ITextDoubleClickStrategy; // packageimport import org.eclipse.jface.text.IDocumentExtension3; // packageimport import org.eclipse.jface.text.Position; // packageimport import org.eclipse.jface.text.TextMessages; // packageimport import org.eclipse.jface.text.CopyOnWriteTextStore; // packageimport import org.eclipse.jface.text.WhitespaceCharacterPainter; // packageimport import org.eclipse.jface.text.IPositionUpdater; // packageimport import org.eclipse.jface.text.DefaultTextDoubleClickStrategy; // packageimport import org.eclipse.jface.text.ListLineTracker; // packageimport import org.eclipse.jface.text.ITextInputListener; // packageimport import org.eclipse.jface.text.BadPositionCategoryException; // packageimport import org.eclipse.jface.text.IWidgetTokenKeeperExtension; // packageimport import org.eclipse.jface.text.IInputChangedListener; // packageimport import org.eclipse.jface.text.ITextOperationTarget; // packageimport import org.eclipse.jface.text.IDocumentInformationMappingExtension2; // packageimport import org.eclipse.jface.text.ITextViewerExtension7; // packageimport import org.eclipse.jface.text.IInformationControlExtension5; // packageimport import org.eclipse.jface.text.IDocumentRewriteSessionListener; // packageimport import org.eclipse.jface.text.JFaceTextUtil; // packageimport import org.eclipse.jface.text.AbstractReusableInformationControlCreator; // packageimport import org.eclipse.jface.text.TabsToSpacesConverter; // packageimport import org.eclipse.jface.text.CursorLinePainter; // packageimport import org.eclipse.jface.text.ITextHoverExtension; // packageimport import org.eclipse.jface.text.IEventConsumer; // packageimport import org.eclipse.jface.text.IDocument; // packageimport import org.eclipse.jface.text.IWidgetTokenKeeper; // packageimport import org.eclipse.jface.text.DocumentCommand; // packageimport import org.eclipse.jface.text.TypedPosition; // packageimport import org.eclipse.jface.text.IEditingSupportRegistry; // packageimport import org.eclipse.jface.text.IDocumentPartitionerExtension; // packageimport import org.eclipse.jface.text.AbstractHoverInformationControlManager; // packageimport import org.eclipse.jface.text.IEditingSupport; // packageimport import org.eclipse.jface.text.IMarkSelection; // packageimport import org.eclipse.jface.text.ISlaveDocumentManager; // packageimport import org.eclipse.jface.text.DocumentEvent; // packageimport import org.eclipse.jface.text.DocumentPartitioningChangedEvent; // packageimport import org.eclipse.jface.text.ITextStore; // packageimport import org.eclipse.jface.text.JFaceTextMessages; // packageimport import org.eclipse.jface.text.DocumentRewriteSessionEvent; // packageimport import org.eclipse.jface.text.SequentialRewriteTextStore; // packageimport import org.eclipse.jface.text.DocumentRewriteSessionType; // packageimport import org.eclipse.jface.text.TextAttribute; // packageimport import org.eclipse.jface.text.ITextViewerExtension4; // packageimport import org.eclipse.jface.text.ITypedRegion; // packageimport import java.lang.all; import java.util.Iterator; import java.util.Set; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.text.source.Annotation; import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.jface.text.source.ISourceViewerExtension2; /** * Standard implementation of {@link org.eclipse.jface.text.ITextHover}. * * @since 3.2 */ public class DefaultTextHover : ITextHover { /** This hover's source viewer */ private ISourceViewer fSourceViewer; /** * Creates a new annotation hover. * * @param sourceViewer this hover's annotation model */ public this(ISourceViewer sourceViewer) { org.eclipse.core.runtime.Assert.Assert.isNotNull(cast(Object)sourceViewer); fSourceViewer= sourceViewer; } /* * @see org.eclipse.jface.text.ITextHover#getHoverInfo(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion) */ public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) { IAnnotationModel model= getAnnotationModel(fSourceViewer); if (model is null) return null; Iterator e= model.getAnnotationIterator(); while (e.hasNext()) { Annotation a= cast(Annotation) e.next(); if (isIncluded(a)) { Position p= model.getPosition(a); if (p !is null && p.overlapsWith(hoverRegion.getOffset(), hoverRegion.getLength())) { String msg= a.getText(); if (msg !is null && msg.trim().length() > 0) return msg; } } } return null; } /* * @see org.eclipse.jface.text.ITextHover#getHoverRegion(org.eclipse.jface.text.ITextViewer, int) */ public IRegion getHoverRegion(ITextViewer textViewer, int offset) { return findWord(textViewer.getDocument(), offset); } /** * Tells whether the annotation should be included in * the computation. * * @param annotation the annotation to test * @return <code>true</code> if the annotation is included in the computation */ protected bool isIncluded(Annotation annotation) { return true; } private IAnnotationModel getAnnotationModel(ISourceViewer viewer) { if (cast(ISourceViewerExtension2)viewer ) { ISourceViewerExtension2 extension= cast(ISourceViewerExtension2) viewer; return extension.getVisualAnnotationModel(); } return viewer.getAnnotationModel(); } private IRegion findWord(IDocument document, int offset) { int start= -2; int end= -1; implMissing(__FILE__,__LINE__); // SWT FIXME: unicode /+ try { int pos= offset; wchar c; while (pos >= 0) { c= document.getChar(pos); if (!Character.isUnicodeIdentifierPart(c)) break; --pos; } start= pos; pos= offset; int length= document.getLength(); while (pos < length) { c= document.getChar(pos); if (!Character.isUnicodeIdentifierPart(c)) break; ++pos; } end= pos; } catch (BadLocationException x) { } if (start >= -1 && end > -1) { if (start is offset && end is offset) return new Region(offset, 0); else if (start is offset) return new Region(start, end - start); else return new Region(start + 1, end - start - 1); } +/ return null; } }