При написании плагинов Eclipse, как правильно проверить, является ли IEditorPart редактором Java? - PullRequest
2 голосов
/ 22 февраля 2009

Я пишу плагины Eclipse для Java, и у меня возникла следующая проблема:

Учитывая IEditorPart, мне нужно проверить, если это редактор Java.

Я мог бы сделать (IEditor экземпляр JavaEditor), но JavaEditor это org.eclipse.jdt.internal.ui.javaeditor.JavaEditor, который подпадает под "внутренние" классы JDT.

Есть ли более умный и безопасный способ сделать это? Я не уверен, почему нет никакого внутреннего интерфейса для этого.

Ответы [ 2 ]

4 голосов
/ 22 февраля 2009

Вы должны проверить идентификатор IEditorPart:

private boolean isJavaEditor(IWorkbenchPartReference ref) {
    if (ref == null) {
        return false; }

    String JavaDoc id= ref.getId();
    return JavaUI.ID_CF_EDITOR.equals(id) || JavaUI.ID_CU_EDITOR.equals(id);
}

Тестирование экземпляра было необходимо только в eclipse3.1 .

альтернативный текст http://blogs.zdnet.com/images/Burnette_DSCN0599.JPG

JavaUI является основной точкой доступа к компонентам пользовательского интерфейса Java. Он позволяет программно открывать редакторы для элементов Java, открывать перспективу просмотра Java или Java, а также открывать диалоги пакетов и подсказок типа.

JavaUI - центральная точка доступа для подключаемого модуля Java UI (id "org.eclipse.jdt.ui")

Вы можете видеть, что такая функция полезности ("isJavaEditor()") используется, например, в ASTProvider.

Механизм идентификации здесь действительно прост для сравнения строк.

В любом случае, вам следует избегать сравнения приведения с внутренним классом: он указан как одна из 10 распространенных ошибок при разработке плагинов ;).

0 голосов
/ 02 марта 2009

Одной из стратегий может быть использование JavaUI.getEditorInputJavaElement (IEditorPart) :

// given IEditorPart editor
IJavaElement elt = JavaUI.getEditorInputJavaElement(editor.getEditorInput());
if (elt != null) {
    // editor is a Java editor
}

Метод возвращает null, если ввод редактора на самом деле не является элементом Java.

...