Creación dinámica de ayuda de contexto

Además de asociar de forma estática widgets e ID de contexto, es posible proporcionar esta información de manera dinámica para una posibilidad de ayuda sensible al contexto más dinámica. El sistema de ayuda utiliza los ID de contexto para localizar el objeto org.eclipse.help.IContext correspondiente. La nueva vista de ayuda hace un seguimiento de la activación de las partes del entorno de trabajo (vistas y editores) y comprueba si se adaptan a la interfaz org.eclipse.help.IContextProvider. Si lo hacen, la vista utilizará el proveedor de contexto para localizar el objeto IContext y obtener del mismo la información necesaria. Este objeto puede almacenarse en la antememoria o crearse sobre la marcha.

Los componentes del entorno de trabajo que desee para crear dinámicamente el objeto de contexto deben adaptarse al objeto IContextProvider.class como clave:

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

La interfaz de proveedor de contexto requiere la implementación de tres métodos:

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

Si la máscara de cambio de contexto devuelve NONE, el objeto de contexto tendrá que proporcionarse cuando se active el componente del entorno de trabajo. Si se devuelve SELECTION, tendrá que proporcionar un objeto de contexto que sea sensible a la selección actual en el componente. Cada vez que el proveedor de selección activa un evento de cambio de selección, se solicitará al proveedor de contexto que proporcione el objeto de contexto.

Opcionalmente, puede proporcionarse la expresión de búsqueda de la ayuda dinámica. De lo contrario, se utilizará una combinación del nombre de componente y el nombre de perspectiva, con buenos resultados en casi todos los casos.