Descripción: Este punto de extensión se utiliza para añadir nuevos editores al entorno de trabajo. Un editor es un componente visual dentro de una página del entorno de trabajo. Se acostumbra a utilizar para editar o examinar un documento o un objeto de entrada. Para abrir un editor, el usuario invocará "Abrir" en un archivoIFile. Cuando se realiza esta acción, se consulta el registro del entorno de trabajo para determinar un editor apropiado para el tipo de archivo y a continuación se crea una nueva instancia del tipo de editor. El resultado dependerá del tipo de editor. El entorno de trabajo proporciona soporte para la creación de editores internos, los cuales están estrechamente integrados en el entorno de trabajo, y para los editores externos, que son lanzados en una ventana de trama separada. También encontraremos varios niveles de integración entre tales extremos.
Si se trata de un editor interno, se puede alcanzar una fuerte integración entre la ventana del entorno de trabajo y el componente editor. El menú y la barra de herramientas del entorno de trabajo están preparados con varias acciones comunes, tales como cortar, copiar y pegar. La parte activa, visor o editor, se supone que proporciona la implementación para tales acciones. Un editor interno puede asimismo definir nuevas acciones que aparecen en la ventana del entorno de trabajo. Estas acciones únicamente aparecen cuando el editor está activo.
La integración entre el entorno de trabajo y los editores externos es más endeble. En este caso el entorno de trabajo puede lanzar un editor pero después no tiene manera de determinar el estado del editor externo o colaborar con él de ningún modo, excepto mediante el sistema de archivos.
Señalamiento de configuración:
<!ELEMENT editor EMPTY>
<!ATTLIST editor
id
CDATA #REQUIRED
name
CDATA #REQUIRED
icon
CDATA #IMPLIED
class
CDATA #IMPLIED
command
CDATA #IMPLIED
launcher
CDATA #IMPLIED
contributorClass
CDATA #IMPLIED
extensions
CDATA #OPTIONAL
filenames
CDATA #OPTIONAL
default
CDATA (true|false) "false"
A continuación podemos observar un ejemplo de definición de extensión de editor interno:
<extension point="org.eclipse.ui.editors">
<editor
id="com.xyz.XMLEditor"
name="editor XML Fancy XYZ"
icon="./icons/XMLEditor.gif"
extensions="xml"
class="com.xyz.XMLEditor"
contributor class="com.xyz.XMLEditorContributor"
default="false">
</editor>
</extension>
Información del API:
Si se utiliza el atributo command, será tratado como una línea de mandatos de un programa externo que se ejecutará de modo subordinado a la plataforma.
Si se utiliza el atributo launcher, el editor también será tratado como un programa externo. En este caso, la clase especificada debe implementar org.eclipse.ui.IEditorLauncher. El lanzador será instanciado y a continuación se invocará open (archivo IFile) para lanzar el editor.
Si se utiliza el atributo class, el entorno de trabajo asumirá que se trata de un editor interno y la clase especificada debe implementar org.eclipse.ui.IEditorPart. Se suele subclasificar org.eclipse.ui.EditorPart al definir un nuevo tipo de editor. También es necesario definir un atributo de contributorClass. La clase especificada debe implementar org.eclipse.ui.IEditorActionBarContributor, y se utiliza para añadir nuevas acciones a las barras de menú y de herramientas del entorno de trabajo que reflejen los dispositivos del tipo de editor.
En el entorno de trabajo pueden coexistir más de un editores abiertos de un tipo en particular. Por ejemplo, puede haber uno o más de un editor de Java abiertos. Para evitar la creación de acciones e imágenes de acciones duplicadas, el concepto de editor ha sido dividido en dos. El IEditorActionBarContributor es responsable de la creación de acciones. El editor es el responsable de la implementación de la acción. Además, el colaborador se comparte con cada editor abierto. Como resultado de este diseño, solamente hay un conjunto de acciones para uno o más editores abiertos.
El colaborador añadirá nuevas acciones al las barras de menú y de herramientas del entorno de trabajo que refleje el tipo de editor. Estas acciones son compartidas y, cuando son invocadas, actúan sobre el editor activo. El editor activo se pasa al colaborador al invocar IEditorActionBarContributor#setActiveEditor. Los identificadores de las acciones y los grupos principales se encuentran definidos en org.eclipse.ui.IWorkbenchActionConstants. Éstos deberán utilizarse como punto de referencia para la adición de nuevas acciones. Los menús de nivel superior se crean utilizando los valores siguientes para el atributo path:
Implementación suministrada: El entorno de trabajo proporciona un "editor de textos por omisión". El producto para el usuario final puede contener otros editores como parte del paquete compuesto. En tal caso, los editores se registrarán como extensiones utilizando la sintaxis definida anteriormente.