Java 如何在向导';托盘
我想在向导的任务栏中打开帮助URL。这就是我想到的: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
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");