De code en markup voor initiëring van uw actieve-hulplink lijken niet al te ingewikkeld. Maar wat doet u als uw actieve-hulplink niet werkt?
Als de implementatie voor uw actie meer voeten in de aarde heeft, is het raadzaam de actie van tevoren aan te roepen met testcode in Eclipse. Zo kunt u controleren of de actie foutloos werkt voordat u deze aanroept via het Java-script.
U kunt in "plugins/org.eclipse.help_2.1.0/liveHelp.js" als eerste instructie in de liveAction-functie een aanroep voor de alert-functie opnemen:
function liveAction(pluginId, className, argument) { alert("liveAction called"); ...
Met de alert-functie wordt een waarschuwingsdialoogvenster in de browser geopend dat kan worden gebruikt om te controleren of de actie (liveAction) correct is aangeroepen in de HTML. Als er geen waarschuwingsdialoogvenster wordt weergegeven wanneer u op uw helplink klikt, is de HTML-markup onjuist.
Zodra u weet dat het Java-script wordt uitgevoerd, kunt u fouten in uw actie opsporen vanuit Eclipse. Hiertoe kunt u een onderbrekingspunt in uw hulpactieklasse instellen en een self-hosting-instance van Eclipse opstarten. U moet de actieve hulp testen met de Help-browser vanuit de zojuist gestarte Eclipse-instance, niet vanuit de hostinstance, omdat het Java-script van uw Help-HTML een servlet aanroept op de Eclipse-Help-server waardoor de browser is gestart.
Als er niets gebeurt nadat u het onderbrekingspunt hebt ingesteld en op de actieve-hulplink hebt geklikt, zijn uw plugin en actieve-hulpklasse waarschijnlijk niet op de juiste wijze opgegeven in het Java-script.
Als de actie wordt onderbroken op het onderbrekingspunt, kunt u fouten in de actie opsporen (en corrigeren) zoals u dat zou doen bij andere Java-code.
Een veelvoorkomend runtimeprobleem is een onjuiste benadering van gebruikersinterfacecode via de thread waarmee de actieve hulp wordt opgeroepen. Als uw live hulpactie afkomstig is van code die oorspronkelijk werd uitgevoerd in een gebruikersinterfacethread, moet deze worden gewijzigd om te kunnen verwerken dat deze wordt uitgevoerd via een niet-gebruikersinterfacethread.
public void run() { // Actieve hulp kan niet worden uitgevoerd op de gebruikersinterfacethread, dus u moet syncExec gebruiken. Display.getDefault().syncExec(new Runnable() { public void run() { // verwerk hier het gebruikersinterfacegedeelte; } }); }