Tip til fejlfinding i aktiv hjælp

Den kode og markup-kode, der udløser det aktive hjælpelink, er ret lige til. Men hvad skal man gøre, hvis det aktive hjælpelink ikke fungerer?

Afprøv funktionen på forhånd

Hvis implementeringen af funktionen er rimelig omfattende, skal du starte funktionen selv med testkode inde fra Eclipse. På den måde kan du være sikker på, at funktionen kan udføres uden fejl, inden du starter den fra JavaScript'et. 

Kontrollér, at JavaScript'et udføres

Du kan ændre "plugins/org.eclipse.help_2.1.0/liveHelp.js" for at inkludere et kald til alert-funktionen som den første sætning i funktionen liveAction:

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

Funktionen alert åbner en advarselsdialogboks i browseren, og den kan bruges til at kontrollere, om liveAction er startet korrekt i HTML Hvis der ikke vises en advarselsdialogboks, når du klikker på hjælpelinket, er der fejl i HTML-koden.

Find fejl i den aktive hjælpefunktion

Når du ved, at JavaScript'et udføres, kan du finde fejl i funktionen inde fra Eclipse. For at gøre dette skal du angive et breakpoint i hjælpefunktionsklassen og starte en Eclipse-forekomst, som er vært for sig selv. Du skal afprøve den aktive hjælp med hjælpebrowseren fra den nyoprettede Eclipse-forekomst, men ikke fra værtsforekomsten, da JavaScript'et fra din hjælpe-HTML kalder en miniserver på den Eclipse- hjælpeserver, der startede browseren.

Hvis der ikke sker noget, når du har angivet et breakpoint og klikket på linket til den aktive hjælp, er plugin'en og den aktive hjælpeklasse sikkert ikke angivet korrekt i JavaScript'et. 

Når du har stoppet ved breakpointet i funktionen, kan du finde fejl i funktionen, som du ville enhver anden Java-kode.

Sørg for, at grænsefladekoden er pakket ind i Display.syncExec

En almindelig runtime-fejl opstår, når der skal oprettes adgang til grænsefladekoden fra den programdel, der starter den aktive hjælp. Hvis live-hjælpefunktionen kommer fra kode, der oprindeligt er udført fra en programdel i grænsefladen, skal den ændres, så den kan udføres fra en programdel, der ikke er i grænsefladen. 

      public void run() {
          // Aktiv hjælp udføres ikke på grænsefladeprogramdelen og derfor bruges syncExec
          Display.getDefault().syncExec(new Runnable() {
public void run() {
								//udfører grænsefladearbejdet her;
							}
		});		
	}