Informazioni a comparsa su testo e righelli

Nella struttura del testo della piattaforma viene fornito il supporto che consente di implementare gli aiuti a comparsa su testo e righelli visualizzati nell'editor in uso.

Questo supporto è facoltativo.  Per impostazione predefinita, SourceViewerConfiguration non installa tale funzione in quanto non sono presenti informazioni generali utili da visualizzare.  Per poter fornire informazioni a comparsa su testo o righelli, è necessario che il visualizzatore di origine dell'editor sia configurato per la definizione di un oggetto a comparsa collegabile.

Per sapere quali metodi definiscono la funzione di informazioni a comparsa, tornare a JavaSourceViewerConfiguration:

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

Le classi helper della funzione di informazioni a comparsa possono essere installate anche dinamicamente mediante il protocollo SourceViewer (setTextHover e setAnnotationHover).  Procedure alternative non comportano alcun particolare vantaggio di run-time, ma inserendo tutte le sostituzioni delle funzioni collegabili in una sottoclasse di SourceViewerConfiguration, si ottiene il vantaggio di fissare tutte le definizioni in un'unica posizione.

Verranno analizzate le specifiche relative a entrambi i tipi di funzioni a comparsa.

Informazioni a comparsa su testo

Le informazioni a comparsa su testo consentono di fornire indicazioni relative al testo visualizzato nell'editor.  Questa operazione viene eseguita mediante l'interfaccia ITextHover.  Un testo a comparsa è responsabile dell'elaborazione dell'area da utilizzare come origine delle informazioni a comparsa, dato un offset nel documento.  Si occupa inoltre di fornire il testo informativo relativo a una determinata area.  JavaTextHover è abbastanza semplice.  Verifica la presenza dell'offset fornito per la funzione a comparsa all'interno della selezione del testo.    In caso affermativo, fornisce l'intervallo di selezione come area a comparsa. 

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

Una volta fornita l'area a comparsa elaborata, ottiene il testo selezionato dal documento relativo e lo restituisce come informazione a comparsa.

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

Posizionando il puntatore su una selezione nell'editor, il testo a comparsa mostra la selezione.

Per elaborare informazioni a comparsa utili, è possibile utilizzare informazioni contestuali più complesse.  Esempi in merito sono disponibili in JavaTextHover implementato con l'editor JDT.

Informazioni a comparsa su righello

Le informazioni a comparsa sul righello verticale sono utili per mostrare informazioni sulle righe.  La classe della funzione di informazioni a comparsa è configurata come sopra descritto.  IAnnotationHover è l'interfaccia per gli oggetti a comparsa relativi ai righelli.  Sebbene il nome implichi che l'area per il testo a comparsa è stata designata per le annotazioni nel righello, ciascun singolo editor dovrà stabilirne l'utilizzo più appropriato.  La funzione delle informazioni a comparsa su righello è responsabile della restituzione della stringa di informazioni associata a un particolare numero di riga, indipendentemente dalla presenza di indicatori su quella riga.   

JavaAnnotationHover dell'editor di esempio Java implementa la funzione di testo a comparsa per tutte le righe.  Si serve del numero di riga per ottenere tutto il testo sulla riga restituendolo come stringa di informazioni.

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

Dal momento che il testo a comparsa ha accesso al documento e al visualizzatore di origine, è in possesso di tutto il contesto necessario per prendere decisioni contestuali più complesse che riguardano le informazioni da visualizzare.  Ad esempio, il modello di annotazioni potrebbe essere richiamato dal visualizzatore di origine per fornire informazioni a comparsa per le annotazioni mostrate sul righello verticale.  Le JavaAnnotationHover, fornite dall'editor JDT, rendono disponibile questa funzione.

Copyright IBM Corporation e altri 2000, 2003.