Советы по отладке активной справки

Исходный код и текст на языке описания, связанные с ссылками активной справки, выглядят достаточно просто. Однако, какие действия следует предпринять, если ссылка активной справки не работает?

Предварительное тестирование действия

Действия со сложной реализацией рекомендуется дополнительно проверять в рабочей среде Eclipse в составе исходного кода тестирования. Такой подход позволяет убедиться в отсутствии ошибок перед добавлением этого действия в JavaScript.  

Проверка работы JavaScript

В качестве первого оператора функции liveAction в файл "plugins/org.eclipse.help_2.1.0/liveHelp.js" можно добавить вызов функции alert:

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

Функция alert открывает в браузере окно диалога предупреждения, позволяющее проверить правильность вызова liveAction из файла HTML. Если при выборе ссылки окно диалога не открылось, то неполадка связана с текстом на языке описания HTML.

Отладка действия активной справки

Убедившись в правильной работе JavaScript, вы можете приступить к отладке действия непосредственно в рабочей среде Eclipse. Для этого задайте точку прерывания в классе действия справки и запустите саморазмещаемый экземпляр Eclipse. Для тестирования активной справки следует воспользоваться браузером справки, входящим в состав нового динамического экземпляра рабочей среды Eclipse. Применение статического экземпляра недопустимо, поскольку JavaScript из файла HTML вызывает сервлет, развернутый на сервере справки Eclipse, с помощью которого был запущен браузер.

Если, задав точку прерывания и щелкнув на ссылке активной справки, ничего не произошло, возможно в JavaScript неправильным образом указаны модуль и класс активной справки.  

Добившись приостановки выполнения на точке прерывания, заданной для действия, вы можете приступить к его отладке аналогично любому исходному коду Java.

Убедитесь, что исходный код пользовательского интерфейса инкапсулирован методом Display.syncExec

Одной из общих неполадок времени выполнения является неправильное обращение к исходному коду пользовательского интерфейса из нити, вызывающей активную справку. Если действие активной справки указано в исходном коде, изначально выполняющемся в нити пользовательского интерфейса, его потребуется дополнительно изменить, поскольку оно выполняется в нити, не связанной с пользовательским интерфейсом.  

public void run() {
		// Так как активная справка не выполняется в нити пользовательского интерфейса,
  // требуется применение syncExec
		Display.getDefault().syncExec(new Runnable() {
							public void run() {
								// операции пользовательского интерфейса;
							}
		});		
	}