打开Eclipse欢迎页面到“home-page-id”以外的页面

时间:2011-11-19 18:52:14

标签: eclipse-rcp

我有一个功能正常的Ec​​lipse 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");

1 个答案:

答案 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);
    }