내 일식 편집기를 열거하고 있습니까?
-
21-08-2019 - |
문제
사용자가 사용할 수있는 간단한 일식 플러그인을 만들었습니다. TableViewer
해당 리소스에 대한 편집기를 열 수있는 데이터베이스 리소스
따라서 사용자는 편집기 실행의 상향 인스턴스가 0이 될 수 있습니다.
편집기 인스턴스 목록을 얻을 수있는 API가 있습니까?
해결책
모든 오픈 편집자에 대한 참조를 얻을 수 있습니다.
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().getEditorReferences();
그런 다음 편집기 유형의 인스턴스를 참조하는 것을 선택하려면 이것을 확인하십시오.
다른 팁
API의 Javadoc에 따르면 워크 벤치에는 여러 개의 창이있을 수 있으며 창에는 여러 페이지가있을 수 있으며 편집자를 공유하지 않습니다.
따라서 모든 열린 편집자를 모두 얻으려면이 라인을 따라 무언가를해야합니다 (오류 확인 등에 제외).
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);
}
}
}
그러한 열거가 될 것입니다 탭 순서를 존중하지 않습니다
편집자 열거의 예는 다음과 같습니다.
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;
}
}
제휴하지 않습니다 StackOverflow