Suggerimenti per il debug della Guida attiva

Il codice e il tag che hanno attivato il collegamento della Guida attiva sono piuttosto semplici e lineari.  Ma cosa fare qualora il collegamento della Guida attiva non funzioni correttamente?

Verificare preventivamente l'azione

Se l'implementazione dell'azione risulta piuttosto complessa, è necessario richiamare l'azione utilizzando del codice di verifica all'interno di Eclipse.  In tal modo, sarà possibile sapere se l'azione è priva di errori prima di richiamarla da JavaScript. 

Assicurarsi che JavaScript sia in esecuzione

È possibile modificare "plugins/org.eclipse.help_2.1.0/liveHelp.js" in modo da includere una chiamata alla funzione alert come prima istruzione nella funzione liveAction:

function liveAction(pluginId, className, argument)
{
	alert("liveAction called");
	...

La funzione alert apre una finestra di avviso all'interno del browser e può essere utilizzata per verificare che la funzione liveAction sia stata richiamata in modo corretto nell'HTML.  Se non viene visualizzata alcuna finestra di avviso quando si fa clic sul collegamento della Guida, il tag HTML presenta qualche errore.

Eseguire il debug dell'azione della Guida attiva

Una volta verificato che JavaScript è in esecuzione, è possibile eseguire il debug dell'azione dall'interno di Eclipse.  Per eseguire questa operazione, è possibile impostare un punto di interruzione nella classe di azioni della Guida e avviare un'istanza Eclipse auto-ospitata.  È necessario verificare la Guida attiva con il browser della Guida dall'istanza Eclipse appena avviata, non dall'istanza host, poiché JavaScript richiama dall'HTML della Guida un servlet sul server della Guida Eclipse che ha avviato il browser.

Se non accade nulla dopo che si è impostato il punto di interruzione e si è fatto clic sul collegamento della Guida attiva, è probabile che il plugin e la classe della Guida attiva non siano stati correttamente specificati in JavaScript. 

Una volta impostato il punto di interruzione, è possibile eseguire il debug dell'azione come per qualsiasi altro codice Java.

Assicurarsi che il codice dell'interfaccia utente sia inserito in Display.syncExec

Un problema di run-time molto frequente consiste nell'accedere in maniera impropria al codice dell'interfaccia utente dal thread che richiama la Guida attiva.  Se l'azione della Guida attiva proviene da codice originariamente eseguito in un thread dell'interfaccia utente, sarà necessario modificarla poiché attualmente viene eseguita da un thread non appartenente all'interfaccia utente. 

public void run() {
		// la Guida attiva non viene eseguita sul thread UI, è necessario usare syncExec
		Display.getDefault().syncExec(new Runnable() {
public void run() {
								//inserire qui il codice UI;
							}
		});		
	}