View Implementation Example

The DataSourceExplorerView (in org.eclipse.datatools.connectivity.ui.dse) first implements the org.eclipse.help.IContextProvider interface, and then it creates an instance of the org.eclipse.datatools.help.ContextProviderDelegate.

    private ContextProviderDelegate contextProviderDelegate = new
        ContextProviderDelegate(DSEPlugin.getDefault().getBundle().getSymbolicName())
    ;

The symbolic name is usually the plug-in ID. Providing the symbolic name as shown above will avoid broken code, if the plug-in’s ID changes.

The plug-in ID passed to the ContextProviderDelegate must indicate which plug-in the help context is actually associated with. In the example above, the help context is associated with the DSEPlugin, that is, the plug-in that contributes the DataSourceExplorerView UI component. However, the help context could be associated with a separate plug-in, for example, if the plug-in “owner” of the UI component is not the same as the plug-in that contributes the UI component.

Implementation of the IContextProvider methods looks like this:

    public IContext getContext(Object target) {
        return contextProviderDelegate.getContext(target);
    }

    public int getContextChangeMask() {
        return contextProviderDelegate.getContextChangeMask();
    }

    public String getSearchExpression(Object target) {
        return contextProviderDelegate.getSearchExpression(target);
    }

After implementing the IContextProvider methods, the view must set the help context for the control in the createPartControl method:

    public void createPartControl(Composite parent) {
        super.createPartControl(parent);
        PlatformUI.getWorkbench().getHelpSystem()
            .setHelp(getCommonViewer().getTree(),
                IHelpContextsConnectivityUIDSE.CONTEXT_ID_CONNECTIVITY_DSE_VIEW);
    }

The string passed to the setHelp method is actually an abstract helpKey constant, whose property key is mapped to a concrete help context ID string by the ContextProviderDelegate.

All helpKey constant strings must be declared in an interface class.