Внутренние и внешние редакторы

org.eclipse.ui.editors

Эта точка расширения служит для добавления в рабочую среду новых редакторов. Редактор - это визуальный компонент в странице рабочей среды. Обычно он применяется для просмотра и редактирования документа или объекта ввода. Для открытия редактора пользователь должен выбрать пункт "Открыть" для IFile. При выполнении действия реестр рабочей среды определяет, какой редактор подходит для типа открываемого файла, и создает новый экземпляр этого редактора. Результат зависит от типа редактора. В рабочей среде поддерживается создание внутренних редакторов, которые плотно интегрируются в рабочую среду, и внешних, вызываемых в отдельном окне. Между этими крайними точками есть еще множество уровней интеграции.

Внутренний редактор позволяет достичь максимальной интеграции между окном рабочей среды и компонентом редактора. Меню и панель инструментов рабочей среды загружаются с уже заготовленным набором общих действий, например, вырезание, копирование и вставка. За реализацию этих действий отвечает активный компонент - панель или редактор. Во внутреннем редакторе можно также определять и новые действия. Они будут отображаться в окне рабочей среды. Эти действия появляются только во время активности редактора.

Внешние редакторы интегрируются с рабочей средой гораздо слабее. В этом случае рабочая среда может вызвать редактор, но потом уже не сможет ни определить его состояние, ни обмениваться с ним какими-либо данными кроме как через файловую систему.

<!ELEMENT extension (editor*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT editor (contentTypeBinding*)>

<!ATTLIST editor

id               CDATA #REQUIRED

name             CDATA #REQUIRED

icon             CDATA #IMPLIED

extensions       CDATA #IMPLIED

class            CDATA #IMPLIED

command          CDATA #IMPLIED

launcher         CDATA #IMPLIED

contributorClass CDATA #IMPLIED

default          (true | false) "false"

filenames        CDATA #IMPLIED

symbolicFontName CDATA #IMPLIED

matchingStrategy CDATA #IMPLIED>


<!ELEMENT contentTypeBinding EMPTY>

<!ATTLIST contentTypeBinding

contentTypeId CDATA #REQUIRED>

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



Ниже приведен пример определения расширения внутреннего редактора:

   

<extension point=

"org.eclipse.ui.editors"

>

<editor id=

"com.xyz.XMLEditor"

name=

"Fancy XYZ XML editor"

icon=

"./icons/XMLEditor.gif"

extensions=

"xml"

class=

"com.xyz.XMLEditor"

contributorClass=

"com.xyz.XMLEditorContributor"

symbolicFontName=

"org.eclipse.jface.textfont"

default=

"false"

>

</editor>

</extension>

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

Если используется атрибут launcher, то редактор также будет обрабатываться как внешняя программа. В этом случае заданный класс должен реализовывать org.eclipse.ui.IEditorLauncher. Будет создан экземпляр панели запуска, а затем для запуска редактора будет вызван метод open(IFile file).

Если используется атрибут class, то рабочая среда будет считать, что редактор внутренний, а заданный класс должен реализовывать интерфейсorg.eclipse.ui.IEditorPart. Обычно при определении нового типа редактора создается производный класс org.eclipse.ui.EditorPart. Кроме того, следует определить атрибут contributorClass. Этот класс должен реализовывать интерфейс org.eclipse.ui.IEditorActionBarContributor. Он предназначен для добавления новых действий в меню и панель инструментов рабочей среды, отражающие возможности типа редактора.

В рабочей среде можно открывать несколько редакторов одного и того же типа. Например, можно открыть несколько редакторов Java. Во избежание создания дублирующихся действий и графических объектов для действий концепция редактора предполагает две составляющие. За создание действий отвечает IEditorActionBarContributor. Сам редактор отвечает за их реализацию. Кроме того, все открытые редакторы работают с общим участником. В результате такого подхода все открытые редакторы пользуются одним и тем же набором действий.

Участник добавляет новые действия в меню и панель инструментов рабочей среды, которые отражают тип редактора. Эти действия становятся общими, и при вызове они работают в активном редакторе. Активный редактор передается в участник с помощью IEditorActionBarContributor.setActiveEditor. Идентификаторы действий и главных групп в окне рабочей среды определяются в org.eclipse.ui.IWorkbenchActionConstants. Это базовая точка для добавления новых действий. Меню верхнего уровня создаются с помощью следующих значений атрибута пути:

Действия и меню, добавляемые в эти пути, будут показываться только тогда, когда активен связанный редактор. После закрытия редактора действия и меню удаляются.

В рабочую среду встроен редактор "Стандартный текстовый редактор". Продукт для конечного пользователя может содержать другие редакторы, входящие в комплект поставки. В этом случае редакторы будут зарегистрированы как расширения с помощью описанного выше синтаксиса.