我有一个功能正常的Eclipse RCP程序,它打开 root.html home-page-id 的 org.eclipse.ui.intro 扩展名。在 root.xhtml 主页内部,有指向其他XHTML页面的链接以提供帮助。
我正在尝试在我的GUI上创建按钮,当您单击它们时,它们会将您带到正确的XHTML文档页面。我到目前为止所能解决的是如何让按钮将我带到 root.xhtml 页面,但我无法弄清楚如何告诉介绍页面导航到不同的页面。这是我现在用来打开介绍页面的代码:
help_button.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent event)
{
ActionFactory.INTRO.create(DataStore.getInstance().getCurrentWorkbenchPage().getWorkbenchWindow()).run();
}
})
例如,我正在尝试做类似这样的事情,其中引号中的超链接字符串与 root.xhtml 文件中的超链接完全相同:
ActionFactory.INTRO.create(DataStore.getInstance().getCurrentWorkbenchPage().getWorkbenchWindow()).run().navigateTo("http://org.eclipse.ui.intro/showPage?id=setuplogging");
答案 0 :(得分:0)
我能够弄清楚这一点,这样做是相当耗时和痛苦的 - 希望它可以帮助某人。至少答案是几行代码。
在更改URL之前,您必须首先显示介绍站点 getIntroSite(),否则您将在IntroURL中获得空指针异常。如果在调用 createIntroURL()时遇到空指针异常,则可能与GUI中尚未打开的介绍站点有关,不一定是链接错误。此外,如果介绍已经打开,请不要尝试重新打开它,因为它会将页面更改为主页而不是使用page_id标识的页面。因此,对于这个课程,我在帮助按钮上设置了一个切换按钮,这意味着如果介绍窗口打开,则按下按钮。在某些情况下,如果按下按钮时它已经打开,我会关闭介绍站点(例如下面的例子),在其他情况下,我只是不更新介绍站点,因此它不会转到主页(示例未显示,但只是省略 if 块的第一部分。
如果您在我的问题中尝试 ActionFactory run()代码,那么将在整个Window中显示介绍网站。我希望介绍站点成为透视图中的子窗口,所以我使用下面的方法设置 showIntro(null,true) - true表示不占用整个窗口(他们调用布尔待机)。
在设置扩展点 org.eclipse.ui.intro.config content 变量时,page_id对应于文档XML文件中的页面ID设置。
final IIntroPart
intro = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().
getWorkbenchWindow().getWorkbench().getIntroManager().
getIntro();
if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().
getWorkbenchWindow().getWorkbench().getIntroManager().
isIntroStandby(intro))
{
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().
getWorkbenchWindow().getWorkbench().getIntroManager().
closeIntro(intro);
help_button.setSelection(false);
}
else
{
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().
getWorkbenchWindow().getWorkbench().getIntroManager().
showIntro(null, true).getIntroSite();
IIntroURL
introURL = IntroURLFactory.createIntroURL(
"http://org.eclipse.ui.intro/showPage?id=" + page_id);
introURL.execute();
help_button.setSelection(true);
}