Descripción: este punto de extensión permite añadir editores nnuevos al entorno de trabajo. Los editores son componentes visuales situados 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 una interfaz IFile. 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 lanzan en una ventana de un marco aparte. También existen diversos 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 precargados con varias acciones comunes, tales como cortar, copiar y pegar. La parte activa, vista o editor, se supone que proporciona la implementación para dichas 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 ninguna manera de determinar el estado del editor externo ni de colaborar con él de ningún modo, excepto mediante el sistema de archivos.
Códigos XML de configuración:
<!ELEMENT editor EMPTY>
<!ATTLIST editor
id
CDATA #REQUIRED
name
CDATA #REQUIRED
icon
CDATA #REQUIRED
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 XYZ imaginario"
icon="./icons/XMLEditor.gif"
extensions="xml"
class="com.xyz.XMLEditor"
contributorClass="com.xyz.XMLEditorContributor"
default="false">
</editor>
</extension>
Información sobre las API:
Si se utiliza el atributo command, se tratará como una línea de mandatos de programa externo que se ejecutará de manera dependiente de la plataforma.
Si se utiliza el atributo launcher, el editor también se tratará como programa externo. En este caso, la clase especificada debe implementar org.eclipse.ui.IEditorLauncher. Se creará una instancia del lanzador y luego se invocará el método open(IFile file) para lanzar el editor.
Si se utiliza el atributo class, el entorno de trabajo presupondrá que se trata de un editor interno, y la clase especificada debe implementar org.eclipse.ui.IEditorPart. Se suele crear una subclase de org.eclipse.ui.EditorPart al definir un nuevo tipo de editor. También es necesario definir un atributo contributorClass. La clase especificada debe implementar org.eclipse.ui.IEditorActionBarContributor, y se utiliza para añadir a las barras de menú y de herramientas del entorno de trabajo acciones nuevas que reflejen las características del tipo de editor.
En el entorno de trabajo pueden coexistir más de un editor abierto de un tipo concreto. Por ejemplo, puede haber uno o más editores Java abiertos. Para evitar la creación de acciones e imágenes de acciones duplicadas, el concepto de editor se ha dividido en dos. El contribuidor, IEditorActionBarContributor, se encarga de crear las acciones. El editor se encarga de implementar la acción. Además, los editores abiertos comparten el contribuidor. Como resultado de este diseño, solamente hay un conjunto de acciones para uno o más editores abiertos.
El contribuidor añadirá a las barras de menú y de herramientas del entorno de trabajo acciones nuevas que reflejen el tipo de editor. Estas acciones se comparten y, cuando se invocan, actúan sobre el editor activo. El editor activo se pasa al contribuidor invocando IEditorActionBarContributor#setActiveEditor. Los identificadores de las acciones y los grupos principales de la ventana del entorno de trabajo están definidos en org.eclipse.ui.IWorkbenchActionConstants. Hay que utilizarlos como punto de referencia para la adición de nuevas acciones. Los menús de nivel superior se crean utilizando los valores siguientes del atributo path:
Implementación suministrada: el entorno de trabajo proporciona un editor de texto por omisión. El producto del 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.