Rady pro ladění aktivní nápovědy

Kód a značka spouštějící náš odkaz na aktivní nápovědu vypadají přímočaře.  Co ale máte dělat, jestliže váš odkaz na aktivní nápovědu zřejmě nefunguje?

Vyzkoušejte akci předem

Pokud je implementace vaší akce řádně zahrnuta, měli byste sami akci vyvolat s nějakým zkušebním kódem v rámci Eclipse.  Tímto způsobem se přesvědčíte, že akce je bez chyb ještě před jejím vyvoláním ze skriptu JavaScript. 

Zajistěte, aby skript JavaScript byl spuštěn

Můžete upravit "plugins/org.eclipse.help_2.1.0/liveHelp.js" tak, aby zahrnoval volání funkce alert jako první příkaz ve funkciliveAction:

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

Funkce alert otevírá v prohlížeči dialogové okno varování a může být použita k ověření řádného vyvolání liveAction ve vašem HTML.  Pokud se nezobrazí dialogové okno varování, když klepnete na odkaz nápovědy, je problém ve značce HTML.

Ladění akce aktivní nápovědy

Jakmile víte, že skript JavaScript je spuštěn, můžete ladit svou akci zevnitř Eclipse.  K tomu účelu můžete nastavit do třídy akce nápovědy bod přerušení a spustit samostatně hostovanou instanci Eclipse.  Aktivní nápovědu musíte testovat s prohlížečem nápovědy z nově spuštěné instance Eclipse a nikoliv z vaší hostitelské instance, jelikož skript JavaScript z vašeho nápovědného HTML volá servlet na serveru nápovědy Eclipse, který spustil prohlížeč.

Pokud se nic nestane po tom, co jste nastavili bod přerušení a klepli na odkaz aktivní nápovědy, je pravděpodobné, že váš modul plug-in a třída aktivní nápovědy nebyly ve skriptu JavaScript správně specifikovány. 

Jakmile se vám podaří zastavit na bodu přerušení ve vaší akci, můžete ladit akci, jako by to byl libovolný jiný kód jazyka Java.

Ujistěte se, že váš kód uživatelského rozhraní je zabalen v Display.syncExec

Běžným problémem v době provádění je nesprávný přístup ke kódu uživatelského rozhraní z podprocesu, který vyvolává aktivní nápovědu.  Pokud vaše aktuální akce nápovědy pochází z kódu, který byl původně spuštěn v podprocesu uživatelského rozhraní, bude potřeba ji upravit s ohledem na skutečnost, že je spuštěna z podprocesu nespadajícího do uživatelského rozhraní. 

      public void run() {
		// Aktivní nápověda neběží v podprocesu uživatelského rozhraní, takže musíme použít syncExec
		Display.getDefault().syncExec(new Runnable() {
							public void run() {
								//zde práce uživatelského rozhraní;
							}
		});		
	}