Kurzinfo für Text und Skala

Die Kurzinfounterstützung wird im Textgerüst der Plattform bereitgestellt. Somit können Sie Kurzinfos für den Text und die Skalen implementieren, die in Ihrem Editor angezeigt werden.

Die Kurzinfounterstützung ist optional.  In der Standardeinstellung installiert SourceViewerConfiguration kein Kurzinfoverhalten, da es keine nützlichen allgemeinen Informationen gibt, die angezeigt werden könnten.  Um Kurzinfos für Text oder Skalen bereitstellen zu können, muss die Konfiguration der Quellenanzeigefunktion für den Editor so konfiguriert sein, dass ein Plug-in-Objekt für Kurzinfos definiert wird.

Die Methoden, mit denen das Kurzinfoverhalten definiert werden kann, sollen auch hier wieder am Beispiel von JavaSourceViewerConfiguration erläutert werden:

public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
	return new JavaTextHover();
}
public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
	return new JavaAnnotationHover();
}

Unterstützungsklassen für Kurzinfo können auch dynamisch über das Protokoll SourceViewer installiert werden (setTextHover und setAnnotationHover).  Welche der beiden Methoden verwendet wird, ist für die Laufzeit unerheblich. Wenn Sie jedoch die gesamten Überschreibungen des Plug-in-Verhaltens in eine Unterklasse von SourceViewerConfiguration stellen, haben Sie den Vorteil, dass alle Definitionen an einer gemeinsamen Position konsolidiert sind.

Im Folgenden werden die Besonderheiten für die Bereitstellung des jeweiligen Kurzinfotyps erläutert.

Kurzinfo für Text

Über die Textkurzinfo können Sie zusätzliche Informationen über den im Editor angezeigten Text zur Verfügung stellen.  Hierfür wird die Schnittstelle ITextHover verwendet.  Es ist Aufgabe einer Textkurzinfo, den Bereich zu berechnen, der an einer relativen Position im Dokument als Quelle der Kurzinfo verwendet wird,  ebenso wie die Bereitstellung des Informationstextes über einen bestimmten Bereich.  JavaTextHover ist recht einfach strukturiert.  Es überprüft, ob die für die Kurzinfo bereitgestellte relative Position in der Textauswahl enthalten ist.   Wenn dies der Fall ist, liefert es den ausgewählten Bereich als Kurzinfobereich. 

public class JavaTextHover implements ITextHover {

	...
	
	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
		Point selection= textViewer.getSelectedRange();
		if (selection.x <= offset && offset < selection.x + selection.y)
			return new Region(selection.x, selection.y);
		return new Region(offset, 0);
	}
}

Anhand des selbst berechneten Kurzinfobereichs wird der ausgewählte Text aus dem Dokument abgerufen und als Kurzinfo zurückgegeben.

public class JavaTextHover implements ITextHover {

	public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
		if (hoverRegion != null) {
			try {
				if (hoverRegion.getLength() > -1)
					return textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
			} catch (BadLocationException x) {
			}
		}
		return JavaEditorMessages.getString("JavaTextHover.emptySelection"); 
	}
	...
}

Sicherlich haben Sie bereits festgestellt, dass der Kurzinfotext die Auswahl enthält, wenn Sie den Mauszeiger über eine Auswahl im Editor ziehen.

Kurzinfo für den ausgewählten Bereich

Mit komplizierteren kontextbezogenen Informationen können hilfreiche Kurzinfos berechnet werden.  Beispiele hierfür finden Sie im JavaTextHover, der im JDT-Editor implementiert ist.

Kurzinfo für Skala

Eine Kurzinfo auf der vertikalen Skala ist nützlich, um zeilenbezogene Informationen anzuzeigen.  Die Kurzinfoklasse wird wie oben beschrieben konfiguriert.  IAnnotationHover ist die Schnittstelle für Kurzinfoobjekt für Skalen.  Obwohl der Name andeutet, dass die Kurzinfo für Anmerkungen in der Skala gedacht ist, ist es eigentlich Aufgabe des jeweiligen Editors, selbst festzulegen, was am geeignetsten ist.  Aufgabe einer Skalakurzinfo ist es, die einer bestimmten Zeilennummer zugeordneten Informationszeichenfolge wiederzugeben, unabhängig davon, ob sich in der Zeile Markierungen befinden oder nicht.   

Der JavaAnnotationHover des Java-Beispieleditors implementiert die Kurzinfo für alle Zeilen.  Er ruft den gesamten Text für die Kurzinfozeile anhand der Zeilennummer ab und gibt ihn als Informationszeichenfolge zurück.

public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) {
	IDocument document= sourceViewer.getDocument();

	try {
		IRegion info= document.getLineInformation(lineNumber);
		return document.get(info.getOffset(), info.getLength());
	} catch (BadLocationException x) {
	}
return null;
}

Kurzinfo für Skala

Da die Kurzinfo auf das Dokument und die Quellenanzeigefunktion zugreifen kann, verfügt sie über den gesamten Kontext, der für kompliziertere kontextbezogene Entscheidungen über die anzuzeigenden Informationen erforderlich ist.  Beispielsweise könnte das Anmerkungsmodell aus der Quellenanzeigefunktion abgerufen werden, um die Kurzinfo für Anmerkungen in der vertikalen Skala anzuzeigen.  Diese Funktionalität wird vom JavaAnnotationHover des JDT-Editors bereitgestellt.