Исходный код и текст на языке описания, связанные с ссылками активной справки, выглядят достаточно просто. Однако, какие действия следует предпринять, если ссылка активной справки не работает?
Действия со сложной реализацией рекомендуется дополнительно проверять в рабочей среде Eclipse в составе исходного кода тестирования. Такой подход позволяет убедиться в отсутствии ошибок перед добавлением этого действия в 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.
Одной из общих неполадок времени выполнения является неправильное обращение к исходному коду пользовательского интерфейса из нити, вызывающей активную справку. Если действие активной справки указано в исходном коде, изначально выполняющемся в нити пользовательского интерфейса, его потребуется дополнительно изменить, поскольку оно выполняется в нити, не связанной с пользовательским интерфейсом.
public void run() { // Так как активная справка не выполняется в нити пользовательского интерфейса, // требуется применение syncExec Display.getDefault().syncExec(new Runnable() { public void run() { // операции пользовательского интерфейса; } }); }