O código e a marcação que acionam nosso link de ajuda ativa parecem muito diretos. Mas o que você faria se seu link de ajuda ativa parecesse não funcionar?
Se a implementação de sua ação estiver muito envolvida, deverá chamar você mesmo a ação com código de teste dentro do Eclipse. Assim, você saberá que a ação está correta antes de chamá-la no JavaScript.
Você pode modificar "plugins/org.eclipse.help_2.1.0/liveHelp.js" para que inclua uma chamada na função alert como a primeira instrução na função liveAction:
function liveAction(pluginId, className, argument) { alert("liveAction chamada"); ...
A função alert abre um diálogo de aviso no navegador e pode ser utilizada para verificar se liveAction foi chamada adequadamente no HTML. Se você não vir um diálogo de aviso quando clicar no link de ajuda, é porque existem problemas na marcação HTML.
Depois de confirmar que o JavaScript está em execução, é possível depurar sua ação de dentro do Eclipse. Para isso, defina um ponto de interrupção na classe de ação de ajuda e inicialize uma instância auto-hospedada do Eclipse. A ajuda ativa deve ser testada com o navegador de Ajuda a partir da instância recém-ativada do Eclipse, não da instância do host, uma vez que o JavaScript do HTML de ajuda chama um servlet no servidor de ajuda do Eclipse que ativou o navegador.
Se nada acontecer depois que você configurar o ponto de interrupção e clicar no link de ajuda ativa, é provável que seu plug-in e a classe de ajuda ativa não foram especificados corretamente no JavaScript.
Uma vez que planejou parar no ponto de interrupção em sua ação, poderá depurar a ação como faria com qualquer outro código Java.
Um problema comum com o tempo de execução é acessar incorretamente o código da UI a partir do encadeamento que chama a ajuda ativa. Se sua ação da ajuda ativa veio do código executado originalmente em um encadeamento da UI, ele precisará ser modificado para compensar o fato de estar sendo executado em um encadeamento não pertencente à UI.
public void run() { // A ajuda ativa não é executada no encadeamento da UI, portanto, devemos utilizar syncExec Display.getDefault().syncExec(new Runnable() { public void run() { //a UI funciona aqui; } }); }