Ajuda de Contexto Dinâmica

Além de associar estaticamente widgets e IDs de contexto, é possível prestar estas informações dinamicamente para ter uma capacidade de ajuda sensível a contextos mais dinâmica. O sistema de ajuda utiliza IDs de contexto para localizar o objecto org.eclipse.help.IContext correspondente. A nova vista Ajuda acompanha a activação das partes da área de trabalho (vistas e editores) e verifica se se adaptam à interface org.eclipse.help.IContextProvider. Se assim for, a vista utiliza o fornecedor de contextos para localizar o objecto IContext e obter as informações necessárias do mesmo. Este objecto pode estar colocado em memória cache ou ser criado de improviso.

As partes da área de trabalho que pretendem criar o objecto de contexto dinamicamente devem adaptar-se ao objecto IContextProvider.class como chaves:

public Object getAdapter(Class key) {
	if (key.equals(IContextProvider.class)) {
		return new MyContextProvider();
	}
	return super.getAdapter(key);
}

A interface fornecedora de contextos requer a implementação de três métodos:

public class MyContextProvider implements IContextProvider {
	int getContextChangeMask() {
		return NONE;
	}
	IContext getContext(Object target) {
		return myContext;
	}
	String getSearchExpression(Object target) {
		return null;
	}
}

Se a máscara de alteração de contexto devolver NONE, o objecto de contexto terá que ser fornecido quando a parte da área de trabalho for activada. Se for devolvido SELECTION, terá de fornecer objectos de contexto que sejam sensíveis à actual selecção da parte. De cada vez que o fornecedor de selecções de partes desencadear um evento de alteração de selecção, o fornecedor de contextos será solicitado para fornecer objectos de contexto.

A título opcional, podem ser fornecidas expressões de pesquisa para a ajuda dinâmica. Caso contrário, será utilizada uma combinação do nome da parte e do nome da perspectiva, com bons resultados na maioria dos casos.

Nota: Além de utilizar fornecedores de contexto (ou alternativamente), é possível utilizar anotações de XML para filtrar tópicos em ajuda de contexto.