2011-11-19 63 views
0

我有打开org.eclipse.ui.intro扩展到家页-ID正常运行的Eclipse RCP的程序root.xhtml。在root.xhtml主页的内部,有链接指向其他XHTML页面以提供帮助。打开Eclipse欢迎页转到页除“家庭页ID”

我试图通过我的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

我能想出解决办法,这是相当耗费时间和痛苦的这样做的 - 希望这可以帮助别人了。至少答案是几行代码。

在更改URL之前,您必须首先显示介绍站点getIntroSite()否则您将在IntroURL中获得空指针异常。如果您在调用createIntroURL()时遇到空指针异常,它可能与您的GUI中尚未打开的介绍站点有关,但不一定您的链接不好。另外,如果介绍已经打开,请勿尝试重新打开它,因为它会将页面更改为主页,而不是您使用page_id标识的页面。所以,对于这个班级,我让帮助按钮成为一个切换按钮,表示如果介绍窗口已打开,然后按下按钮。在某些情况下,如果按钮被按下时(例如下面),已经打开了介绍站点,但在其他情况下,我只是不更新​​介绍站点,因此它不会进入主页(示例未显示,但只是省略块的第一部分)。

如果您在我的问题中尝试运行ActionFactory run()代码,那将在整个Window中显示介绍站点。我想让介绍网站成为透视图中的一个子窗口,所以我使用下面的方法设置showIntro(null,true) - 真正意义不占用整个窗口(它们称为布尔备用)。

当设置扩展点org.eclipse.ui.intro.config content变量时,page_id对应于文档XML文件中的页面标识设置。

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