سؤال

لقد قمت ببناء مكون إضافي بسيط لـ Eclipse حيث يمكن للمستخدم استخدام ملف TableViewer لموارد قاعدة البيانات لفتح محرر على أي من تلك الموارد.

لذلك قد لا يكون لدى المستخدمين أي مثيلات تصاعدية للمحرر قيد التشغيل.

هل هناك واجهة برمجة تطبيقات متاحة للحصول على قائمة بمثيلات المحرر تلك؟

هل كانت مفيدة؟

المحلول

ويمكنك الحصول على كل ما يشير إلى جميع المحررين مفتوح مع:

PlatformUI.getWorkbench().getActiveWorkbenchWindow()
    .getActivePage().getEditorReferences();

وبعد ذلك التحقق من هذه لتحديد تلك التي تشير إلى حالات النظر عن نوع محرر.

نصائح أخرى

ووفقا لجافادوك ل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);
        }
    }
}

كن على علم بمثل هذا التعداد لا تحترم ترتيب علامة التبويب

فيما يلي مثال لتعداد المحررين:

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;
  }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top