Wskazówki dotyczące debugowania aktywnej pomocy

Kod i znaczniki wyzwalające odsyłacz pomocy aktywnej wyglądają całkiem prosto. Co jednak zrobić, gdy wydaje się, że odsyłacz pomocy aktywnej nie działa?

Przetestuj akcję wcześniej

Jeśli implementacja akcji jest już prawie gotowa, należy ją wywołać przy użyciu testowego kodu na platformie Eclipse. W ten sposób można się upewnić, że akcja działa poprawnie, zanim zostanie wywołana z poziomu skryptu JavaScript. 

Upewnij się, że skrypt JavaScript został uruchomiony

Wywołanie funkcji alert można dodać jako pierwszą instrukcję funkcji liveAction, modyfikując plik plugins/org.eclipse.help_2.1.0/liveHelp.js:

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

Funkcja alert otwiera okno dialogowe ostrzeżenia w przeglądarce i może służyć do sprawdzenia, czy funkcja liveAction została wywołana prawidłowo w kodzie HTML. Jeśli po kliknięciu odsyłacza pomocy nie zostanie wyświetlone okno dialogowe ostrzeżenia, oznacza to problem w znacznikach HTML.

Debuguj akcję pomocy aktywnej

Po upewnieniu się, że skrypt JavaScript został uruchomiony, można debugować akcję z poziomu platformy Eclipse. Aby to zrobić, należy ustawić w klasie akcji pomocy aktywnej punkt zatrzymania i uruchomić nową instancję platformy Eclipse. Pomoc aktywną należy przetestować przy użyciu przeglądarki pomocy z poziomu nowo uruchomionej instancji platformy Eclipse, a nie z poziomu instancji macierzystej, ponieważ skrypt JavaScript wywołuje serwlet na serwerze pomocy platformy Eclipse, który uruchomił przeglądarkę.

Jeśli po ustawieniu punktu zatrzymania i kliknięciu odsyłacza pomocy aktywnej nic się nie stanie, prawdopodobnie moduł dodatkowy i klasa pomocy aktywnej zostały określone nieprawidłowo w skrypcie JavaScript. 

Jeśli uda się zatrzymać akcję w punkcie zatrzymania, można ją debugować, jak każdy inny kod Java.

Upewnij się, że kod interfejsu użytkownika jest opakowany w obiekt Display.syncExec

Powszechnym problemem wykonawczym jest niewłaściwe uzyskiwanie dostępu do kodu interfejsu użytkownika z wątku, który wywołuje pomoc aktywną. Jeśli akcja pomocy aktywnej pochodzi z kodu uruchamianego pierwotnie w wątku interfejsu użytkownika, należy ją zmienić, aby uwzględnić fakt, że teraz jest uruchamiana w wątku innym niż wątek interfejsu użytkownika. 

      public void run() {
		// Pomoc aktywna nie jest uruchamiana w wątku interfejsu użytkownika, więc należy użyć metody syncExec
		Display.getDefault().syncExec(new Runnable() {
							public void run() {
								//Tu zostanie wykonana praca interfejsu użytkownika;
							}
		});		
	}