Conseils de débogage de l'aide active

Le code et les marques déclenchant le lien d'aide active semblent plutôt simples. Que faire toutefois si votre lien ne fonctionne pas ?

Testez votre action à l'avance

Si l'implémentation de votre action est attendue, il est conseillé de l'appeler auparavant vous-même avec un code test dans Eclipse. Vous vous assurez de cette façon que l'action n'entraîne pas d'erreur avant de l'appeler à partir du JavaScript. 

Vérifiez que le JavaScript est actif

Vous pouvez modifier "plugins/org.eclipse.help_2.1.0/liveHelp.js" afin d'inclure un appel à la fonction alert comme première instruction dans la fonction liveAction :

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

la fonction alert affiche un avertissement dans le navigateur et peut être employée pour vérifier que liveAction a été appelée correctement dans votre code HTML. Si aucun avertissement n'apparaît lorsque vous cliquez sur votre lien d'aide, le problème concerne les marques HTML.

Déboguez l'action d'aide active

Si le JavaScript est actif, vous pouvez déboguer votre action à partir d'Eclipse. Pour ce faire, vous pouvez définir un point d'arrêt dans la classe de votre action d'aide et lancer une instance Eclipse dépourvue d'hôte. Vous devez tester votre aide active à l'aide du navigateur à partir de l'instance Eclipse lancée, et non de l'instance de l'hôte, puisque le JavaScript de votre code HTML appelle un servlet sur le serveur d'aide Eclipse ayant lancé le navigateur.

Si rien ne se passe une fois que vous avez défini le point d'arrêt et cliqué sur le lien, il est probable que votre plug-in et la classe de l'aide active soient erronés dans le JavaScript. 

Lorsque vous parvenez à vous arrêter dans votre action au point d'arrêt, vous pouvez déboguer l'action tel que tout autre code Java le ferait.

Assurez-vous que votre code d'interface graphique est encapsulé dans Display.syncExec

L'un des problèmes fréquents d'exécution consiste à accéder au code de l'interface graphique à partir de l'unité d'exécution appelant l'aide active. Si votre action d'aide provient du code exécuté initialement dans cette unité d'exécution, vous devrez la modifier pour que son exécution à partir d'une unité indépendante de l'interface soit prise en charge. 

	public void run() {
// L'aide active ne s'exécutant pas sur l'unité d'exécution
de l'interface graphique, syncExec doit être utilisé.
		Display.getDefault().syncExec(new Runnable() {
							public void run() {
								//insérez ici les actions sur l'interface graphique.
							}
		});		
	}

Copyright IBM Corporation and others 2000, 2003.