Dicas para Depuração da Ajuda Ativa

O código e a marcação que dispararam nosso link de ajuda ativa parecem muito diretos.  Mas o que você faria se seu link de ajuda ativa não parecesse funcionar?

Teste sua ação antecipadamente

Se a implementação de sua ação estiver muito envolvida, você deverá chamar a própria 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.0.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 JavaScript está em execução, você pode depurar sua ação no Eclipse.  Para isso, defina um ponto de interrupção na classe da 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-lançada 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 lançou 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 thread que chama a ajuda ativa.  Se sua ação da ajuda ativa veio do código executado originalmente em um thread da UI, ele precisará ser modificado para compensar o fato de estar sendo executado em um thread não pertencente à UI. 

	public void run() {
		// A ajuda ativa não é executada no thread da UI, portanto, devemos utilizar syncExec
		Display.getDefault().syncExec(new Runnable() {
							public void run() {
								//a UI funciona aqui;
							}
		});		
	}

Copyright IBM Corp. e outros 2000,2002.