我已經構建了一個簡單的Eclipse插件,用戶可以使用tableViewer的數據庫資源打開任何這些資源的編輯器。枚舉我所有的Eclipse編輯器?
因此,用戶可能有零個向上的編輯器運行實例。
是否有API可用來獲取這些編輯器實例的列表?
M.
我已經構建了一個簡單的Eclipse插件,用戶可以使用tableViewer的數據庫資源打開任何這些資源的編輯器。枚舉我所有的Eclipse編輯器?
因此,用戶可能有零個向上的編輯器運行實例。
是否有API可用來獲取這些編輯器實例的列表?
M.
你可以得到所有打開的編輯器的引用:
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().getEditorReferences();
然後檢查這些選擇引用您的編輯器類型的實例的人。
要知道這樣一個枚舉not respect the tab order
下面是編輯的枚舉的例子:
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
IWorkbenchPage page = window.getActivePage();
IEditorPart actEditor = page.getActiveEditor();
IEditorReference[] editors = page.getEditorReferences();
for (int i=0; i<editors.length-1; i++) {
if (editors[i].getEditor(true) == actEditor) {
page.activate(editors[i+1].getEditor(true));
return null;
}
}
根據的Javadoc的API工作臺可以有多個窗口和窗口可以有幾頁,並且不共享編輯。
因此,爲了讓所有和每一個打開的編輯器,你應該做的東西沿着這些路線(錯誤檢查等除外):
List<IEditorReference> editors = new ArrayList<IEditorReference>();
for (IWorkbenchWindow window : PlatformUI.getWorkbench().getWorkbenchWindows()) {
for (IWorkbenchPage page : window.getPages()) {
for (IEditorReference editor : page.getEditorReferences()) {
editors.add(editor);
}
}
}
有你跳過數組中的最後一個編輯的原因?要查找數組中的所有元素,您應該執行`for(int i = 0; i
Erk
2017-08-22 19:12:29
@Erk不確定。七年前,這個例子來自https://www.eclipse.org/forums/index.php/t/106220/ – VonC 2017-08-22 19:47:05