org.eclipse.ui.editors

Un editor es una parte del entorno de trabajo que permite a un usuario editar un objeto (que suele ser un archivo). Los editores operan de manera similar a las herramientas de edición del sistema de archivos, con la excepción de que están sólidamente integrados en la UI del entorno de trabajo de la plataforma. Un editor siempre está asociado con un objeto de entrada (IEditorInput). Un objeto de entrada es como un documento o archivo que se ha editado. Los cambios hechos en un editor no se confirman hasta que el usuario los guarda.

Sólo puede haber un editor abierto para cualquier entrada de editor concreta en una página del entorno de trabajo. Por ejemplo, si el usuario edita readme.txt en el entorno de trabajo, abrirlo de nuevo en la misma perspectiva activará el mismo editor. (Se puede abrir otro editor en el mismo archivo desde una ventana o perspectiva diferentes del entorno de trabajo).  Sin embargo, a diferencia de las vistas, se puede abrir el mismo tipo de editor (como un editor de texto) muchas veces en una página del entorno de trabajo para entradas distintas.

Los conectores utilizan el punto de extensión de entorno de trabajoorg.eclipse.ui.editors para añadir editores al entorno de trabajo. Los conectores que contribuyen con un editor deben registrar la extensión del editor en el archivo plugin.xml , junto con información de configuración del editor. Parte de la información del editor, como la clase de implementación y el nombre y el icono utilizados en los menús y las etiquetas de entorno de trabajo, es similar a la información de vista. Además, las extensiones de los editores especifican las extensiones de archivo o los patrones de nombre de archivo de los tipos de archivo que el editor entiende. Los editores también pueden definir contributorClass, una clase que añade acciones a la barra de menús y de herramientas del entorno de trabajo cuando el editor está activo.

La interfaz para editores se define en IEditorPart, pero los conectores pueden elegir ampliar la clase EditorPart en lugar de implementar IEditorPart desde el principio.

Nota:  Las extensiones de editores también pueden configurarse para iniciar un programa externo al objeto de editar un archivo o de proporcionar una clase de iniciador que se utiliza para llamar a código java ya existente como el editor. Al tratar de este tema, el punto de interés se centra en aquellos editores que realmente están sólidamente integrados en el entorno de trabajo y se han implementado mediante IEditorPart.

La herramienta readme proporciona un editor personalizado cuya finalidad principal es contribuir con su página de diseño de contenido a la vista de esquema del entorno de trabajo.   

A continuación, se define la configuración para la extensión de un editor.

<extension
    point = "org.eclipse.ui.editors">
        <editor
            id = "org.eclipse.ui.examples.readmetool.ReadmeEditor"
            name="Readme File Editor"
            icon="icons/basic/obj16/editor.gif"
            class="org.eclipse.ui.examples.readmetool.ReadmeEditor"
            extensions="readme"
            contributorClass="org.eclipse.ui.examples.readmetool.ReadmeEditorActionBarContributor">
        </editor>
</extension>

Observe que la marcación de configuración para identificador, nombre, icono y clase resulta familiar. Sin embargo, hay algo nuevo: contributorClass.

Contribuidores de acciones de editores

Las clase contributor añade acciones relacionadas con los editores a la barra de menús y de herramientas del entorno de trabajo. Debe implementar la interfaz IEditorActionBarContributor. El contribuidor está separado del editor ya que cualquier página del entorno de trabajo puede tener varios editores del mismo tipo. En lugar de que cada instancia de un tipo de editor cree acciones e imágenes, todos los editores de un tipo específico comparten un solo contribuidor. 

En ReadmeEditorActionBarContributor, se contribuyen tres acciones: "Editor Action1," "Editor Action2," y "Editor Action3,"   las cuales se han establecido en el constructor.

public ReadmeEditorActionBarContributor() {
    ...
    action1 = new EditorAction("&Editor Action1");
    action1.setToolTipText("Readme Editor Action1");
    action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE);
    ...
    action2 = new EditorAction("&Editor Action2");
    action2.setToolTipText("Readme Editor Action2");
    action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE);
    ...
    action3 = new EditorAction("&Editor Action3");
    action3.setToolTipText("Readme Editor Action3");
    action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE);
    ...
}

Los nombres e iconos de las acciones se establecen en el código en lugar de en el plugin.xml.  Observe la similitud de esta información con la información de viewActions que se mostró en la marcación para la acción de la vista.  Las acciones se establecen en código ya que las acciones se han de poder compartir entre diferentes instancias del mismo editor.

A medida que se crean en el constructor, las acciones son independientes de cualquier instancia particular del editor.  Cuando un editor se activa y las acciones deben instalarse en la barra de menús y de herramientas del entorno de trabajo, se envía el mensaje setActiveEditor al contribuidor.  El contribuidor conecta las acciones del editor con un editor específico.  

public void setActiveEditor(IEditorPart editor) {
    ...
    action1.setActiveEditor(editor);
    action2.setActiveEditor(editor);
    action3.setActiveEditor(editor);
    ...
}

Como se puede ver, las acciones se muestran en la barra de menús y de herramientas del entorno de trabajo cuando hay un editor readme activo.

Contribuciones del editor readme a la barra de menús del entorno de trabajo
Contribuciones del editor readme a la barra de herramientas del entorno de trabajo

Estos elementos de la barra de menús y de herramientas sólo se muestran cuando el editor está activo. La ubicación de los elementos de la barra de menús y de herramientas pueden especificarse tal como se describe en Vías de acceso de barra de menús y de herramientas.

Editores y diseñadores de contenido

El editor readme, ReadmeEditor, no es muy complejo. Amplía la clase TextEditor de manera que puede contribuir con una página de diseño de contenido personalizada a la vista de esquema cuando se edita un archivo readme. No modifica ninguna función del editor de texto.

A menudo, los editores tienen diseñadores de contenido que proporcionan una vista estructurada de su contenido y ayudan al usuario a navegar por él.  Vea Diseñadores de contenido para obtener información más detallada.

En Editores de texto y texto JFace se tratará la implementación de editores de texto.