Dicas para depuração de ajuda ativa

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?

Teste sua ação antecipadamente

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. 

Assegure-se de que JavaScript esteja em execução

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.

Depure a ação de ajuda ativa

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.

Certifique-se de que o código da UI esteja agrupado em Display.syncExec

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;
							}
		});		
	}