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.