如何在向导托盘中显示帮助

How to Display Help In Wizard's Tray

我想在向导的托盘中打开帮助 URL。这就是我想出的:

import org.eclipse.help.ui.internal.views.*;

public static void openHelpInWizard(Shell activeShell, String href) {
    if (HelpTray.isAppropriateFor(activeShell)) {
        TrayDialog dialog = (TrayDialog) activeShell.getData();

        DialogTray tray = dialog.getTray();
        if (tray == null) {
            tray = new HelpTray();
            dialog.openTray(tray);
        }
        if (tray instanceof HelpTray) {
            ReusableHelpPart helpPart = ((HelpTray) tray).getHelpPart();
            helpPart.showURL(href);
        }
    }
}

对于模块化,此代码依赖于 org.eclipse.help.ui(帮助在另一个插件中)是不好的,但作为可选依赖项可能是可以容忍的。更糟糕的是,代码必须使用内部 类.

那么正确的做法是什么?

这真的很难找到:如果 IContext 通过 getText() 实现 returns null 并且只有一个 IHelpResourcegetRelatedTopics 被称为 "href" 的一个帮助资源被显示。

所以如果你想做我所做的,你可以用上面提到的属性实现 IContext,或者使用扩展点 org.eclipse.help.contextscontext.xml 像这样:

<contexts>
    <context id="my_id">
        <topic href="html/help_topic.html" label="My Help Topic"/>
    </context>
</contexts>

(我认为 "label" 属性不是必需的。)

然后当然要像这样使用上下文 ID(它甚至不依赖于帮助插件):

PlatformUI.getWorkbench().getHelpSystem().displayHelp("my_id");