Внутренний редактор позволяет достичь максимальной интеграции между окном рабочей среды и компонентом редактора. Меню и панель инструментов рабочей среды загружаются с уже заготовленным набором общих действий, например, вырезание, копирование и вставка. За реализацию этих действий отвечает активный компонент - панель или редактор. Во внутреннем редакторе можно также определять и новые действия. Они будут отображаться в окне рабочей среды. Эти действия появляются только во время активности редактора.
Внешние редакторы интегрируются с рабочей средой гораздо слабее. В этом случае рабочая среда может вызвать редактор, но потом уже не сможет ни определить его состояние, ни обмениваться с ним какими-либо данными кроме как через файловую систему.
<!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>
Если используется атрибут 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. Это базовая точка для добавления новых действий. Меню верхнего уровня создаются с помощью следующих значений атрибута пути:
Copyright (c) 2002, 2005 IBM Corporation и другие.
Все права защищены.
Эта программа и сопутствующие материалы распространяются на условиях Eclipse Public License v1.0, поставляемой вместе с продуктом и доступной на Web-сайте
http://www.eclipse.org/legal/epl-v10.html