Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在向导';托盘_Java_Eclipse Plugin - Fatal编程技术网

Java 如何在向导';托盘

Java 如何在向导';托盘,java,eclipse-plugin,Java,Eclipse Plugin,我想在向导的任务栏中打开帮助URL。这就是我想到的: import org.eclipse.help.ui.internal.views.*; public static void openHelpInWizard(Shell activeShell, String href) { if (HelpTray.isAppropriateFor(activeShell)) { TrayDialog dialog = (TrayDialog) activeShell.getD

我想在向导的任务栏中打开帮助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()
返回
null
,并且只有一个
iHelpSource
,当
getRelatedTopics
被称为一个帮助资源的“href”时

因此,如果您想执行我所做的操作,可以使用上述属性实现
IContext
,或者使用扩展点
org.eclipse.help.contexts
和context.xml,如下所示:

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

因为它使用的是明确禁止的内部类,所以这肯定是不“正确的”。然而,我不认为有一个正确的方法来做这件事。
PlatformUI.getWorkbench().getHelpSystem().displayHelp("my_id");