2011-07-29 24 views
1

我有一個RCP應用程序,我需要在模式對話框中顯示GEF編輯器。但是由於編輯框架似乎與使用工作臺窗口等緊密結合,我需要找到爲什麼要打開一個新的工作臺窗口(使用自己的WorkbenchWindowAdvisor等),以便我可以在此工作臺窗口中打開我的GEF編輯器。一旦我得到這個workbenchWindow打開,我將設置WorkbenchWindow的shell的樣式爲應用程序模式。如何從現有工作臺窗口打開新的工作臺窗口(帶有自己的WorkbenchWindowAdvisor)?

回答

0

使用命令「org.eclipse.ui.window.newWindow」打開一個新窗口。在WorkbenchWindowAdvisor.preWindowOpen()中,將IWorkbenchWindowConfigurer上的shell樣式設置爲應用程序模式。你也可以隱藏coolbar,菜單和狀態欄,所以它看起來更像是一個對話框而不是窗口。

+0

謝謝,但我怎麼給這個新打開的窗口自己的WorkbenchWindowAdvisor,因爲我真的不希望它使用主應用程序使用的WorkbenchWindowAdvisor。我希望這個新窗口不會有其父窗口(主應用程序的窗口)存在的其他絨毛 – Craig

+0

實際上,使用此命令的問題在於它(從調試中看到)會打開一個具有活動工作臺窗口透視圖的新窗口。這不是我想要的......我希望它用自己的WorkbenchWindowAdvisor打開一個新窗口,並用一個單獨的編輯器完全不同的視角。方法:final IWorkbenchWindow window = PlatformUI.getWorkbench()。openWorkbenchWindow(「NewPerspectiveID」,null);將會稍微好一些......但使用「自定義」工作臺窗口顧問時仍然有問題,因此我可以配置其外殼樣式 – Craig

2

我有一個客戶項目使用以下組件做到了這一點:

  • 靜態類的方法openNewWindow(String type, ...)。這是您打開一個新窗口的方法。 type參數指定所需的窗口類型。
  • 該類通過新的擴展點查找指定類型以獲得ILocalWorkbenchWindowAdvisor和初始透視ID。
  • 它然後保存在全局變量中的信息,並調用IWorkbench.openWorkbenchWindow(perspectiveID, ...)
  • ApplicationWorkbenchAdvisor.createWorkbenchWindowAdvisor(...)一個新的顧問是基於上創建保存ILocalWorkbenchWindowAdvisor - 返回的顧問基本上代表所有postWindowCreate(...)等在ILocalWorkbenchWindowAdvisor同樣的方法...
  • 如果沒有ILocalWorkbenchWindowAdvisor保存 - 這是要打開的第一個窗口的情況下 - 類型「主窗口」中擡起頭來,用...

它工作得很好,讓的所有部件項目根據需要添加新窗口。

相關問題