2012-07-06 81 views
2

根據here我已經實現了一個IIntroAction,它將在介紹頁面中從Eclipse中打開透視圖(我的操作幾乎完全相同)。如何在歡迎頁面中打開Eclipse中的視圖,因爲它在歡迎頁面下方打開?

礦是有顯示的一個稍有不同,但本質上它被調用(作爲URL)如下: http://org.eclipse.ui.intro/runAction?class=my.plugin.actions.OpenPerspectiveAction&pluginId=my.plugin&pId=my.other.plugin.MyPerspective

其中PID是我想開角度的ID。 (並且這是有效的!)大多數情況下。)

如上面的鏈接所述,此操作的問題在於,如果MyPerspective在歡迎頁面下打開,則不會打開(或而歡迎頁面將不會關閉......)。

如何在動作調用中顯示所需的視角,即使它在歡迎頁面下打開?

有些路徑可能的解決方案我探索(不完全,所以我可能錯過了一些東西):

  • 做一些與PerspectiveRegistry(沒有看到任何結果,雖然...)
  • 檢查Workbench查看開放的觀點是什麼,並從中
  • 切換檢查工作臺,看看有什麼是開放的角度,如果它想要的角度

這些只是概念上的解決方案---我不知道他們是否真的可以實施!如果有人能夠就我如何解決這個問題提供一些見解,我將不勝感激。

回答

3

以下代碼在我的RCP項目中正常工作。

介紹頁面鏈接:

<a id="a-ism" href="http://org.eclipse.ui.intro/runAction?pluginId=sernet.gs.ui.rcp.main&#38;class=sernet.gs.ui.rcp.main.actions.ShowISMPerspectiveIntroAction"> 

Action類:

public class ShowISMPerspectiveIntroAction extends ShowPerspectiveIntroAction { 

    @Override 
    public String getCheatSheetId() { 
    return "sernet.gs.ui.rcp.main.cheatsheet1"; 
    } 

    @Override 
    public String getPerspectiveId() { 
    return Iso27kPerspective.ID; 
    } 
} 

行動的基類:

import org.eclipse.ui.intro.config.IIntroAction; 

public abstract class ShowPerspectiveIntroAction implements IIntroAction { 

    private static final Logger LOG = Logger.getLogger(ShowPerspectiveIntroAction.class); 

    @Override 
    public void run(IIntroSite arg0, Properties arg1) { 
    // Switch to perspective 
    final IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); 
    IPerspectiveDescriptor activePerspective = workbenchWindow.getActivePage().getPerspective(); 
    if(activePerspective==null || !activePerspective.getId().equals(getPerspectiveId())) {   
     Display.getCurrent().asyncExec(new Runnable() { 
      public void run() { 
       // switch perspective   
       try { 
        workbenchWindow.getWorkbench().showPerspective(getPerspectiveId(),workbenchWindow); 
       } catch (WorkbenchException e) { 
        LOG.error("Can not switch to perspective: " + getPerspectiveId(), e); 
       } 
      } 
     }); 
    } 

    // close intro/welcome page 
    final IIntroPart introPart = PlatformUI.getWorkbench().getIntroManager().getIntro(); 
    PlatformUI.getWorkbench().getIntroManager().closeIntro(introPart); 

    // Show CheatSheet 
    ShowCheatSheetAction action = new ShowCheatSheetAction("Show security assessment cheat sheet", getCheatSheetId()); 
    action.run(); 
    } 

    public abstract String getCheatSheetId(); 
    public abstract String getPerspectiveId(); 
} 
+0

這工作比我以前有好多了。感謝您的幫助! – blahman 2012-07-09 01:23:42