Szöveg- és vonalzó előugró leírás

A platform szöveg keretrendszer biztosítja az előugró leírás támogatását, és ez lehetővé teszi az információs előugró leírások (vagy előugró súgó) megvalósítását a szerkesztőben megjelenített szövegen és vonalzókon keresztül.

Az előugró leírás támogatása nem kötelező. Alapértelmezés szerint a SourceViewerConfiguration nem telepíti az előugró leírást, mivel nincsenek hasznos általános megjelenítendő információk. Szöveg vagy vonalzó előugró leírás biztosításához a szerkesztő forrásmegjelenítő-konfigurációjának beállítottnak kell lennie a cserélhető előugró leírás objektum megadásához.

Tekintse meg a JavaSourceViewerConfiguration elemet újra annak kiderítéséhez, hogy mely metódusok adják meg az előugró leírás viselkedését:

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

Az előugró leírás segédosztályok a SourceViewer protokoll (setTextHover és setAnnotationHover) segítségével dinamikusan telepíthetők.  Nincs különös futási előny egyik esetben sem, de az összes cserélhető viselkedés felülírás SourceViewerConfiguration alosztályában megadása biztosítja az összes definíció felülírás egyesítésének előnyeit egy helyen.

Tekintsük meg a különböző típusú előugró leírások specifikációit.

Előugró szöveg

Az előugró szöveg segítségével a szerkesztőben megjelenített szöveggel kapcsolatos információs szöveget biztosíthat.  Ez az ITextHover felület segítségével hajtható végre. Az előugró szöveg felelős a terület feldolgozásáért, amelyet az előugró leírás információk forrásaként kell használni, egy eltolás dokumentumban megadásával. Az adott terület információs szövegének biztosításáért is felelős. A JavaTextHover meglehetősen egyszerű. Ellenőrzi, hogy az előugró leíráshoz megadott eltolás benne van-e a szövegkiválasztásban.     Ha igen, akkor biztosítja a kiválasztási tartományt előugró leírás területként. 

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);
	}
}

Saját feldolgozott előugró leírás terület megadásával lekéri a kiválasztott szöveget a dokumentumból és visszaadja előugró leírásinformációként.

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"); 
	}
	...
}

Láthatjuk, hogyha a szerkesztőben rámegyünk az előugró leírásra, akkor az előugró leírás szövege megjeleníti a kijelölést.

Előugró információk a kiválasztott területen

Bonyolultabb környezetfüggő információk használhatók a hasznos előugró leírás információk feldolgozásához.  Erre példák a JDT szerkesztőben megvalósított JavaTextHover elemben találhatók.

Vonalzó előugró leírás

A függőleges vonalzón lévő előugró leírás a sororientált információk megjelenítéséhez hasznos.  Az előugró leírás osztály a fenti módon van beállítva.  Az IAnnotationHover a felület a vonalzó előugró leírás objektumokhoz.  A név arra utal, hogy az előugró leírás a vonalzón lévő megjegyzésekhez van tervezve, ez valójában egy egyéni szerkesztő annak meghatározásához, hogy mi a megfelelő. A vonalzó felelős az adott sorszámhoz rendelt információs karaktersorozat visszaadásáért, a jelzők vonalon jelenlététől függetlenül.   

A Java példa szerkesztő JavaAnnotationHover eleme megvalósítja az előugró leírást az összes sorhoz. Ez a sorszámot használja az előugró leírássoron lévő összes szöveg lekéréséhez és információs karaktersorozatként visszaadásához.

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;
}

Előugró információk a vonalzón

Mivel az előugró leírás hozzá tud férni a dokumentumhoz és a forrásmegjelenítőhöz, rendelkezik az összes kontextussal, amely szükséges a megjelenítendő információkkal kapcsolatos összetettebb környezetfüggő döntésekhez. A feljegyzésmodell például lekérhető az erőforrás-megjelenítőről annak érdekében, hogy előugró leírás információkat biztosítson a függőleges vonalzón megjelenő feljegyzésekhez.  A JDT szerkesztő által biztosított JavaAnnotationHover szolgáltatja ezt a képességet.