org.eclipse.ui.editors

Los editores son componentes del entorno de trabajo que permiten a un usuario editar un objeto (que suele ser un archivo). Los editores funcionan de manera parecida a las herramientas de edición del sistema de archivos, salvo que están fuertemente integrados en la UI del entorno de trabajo de la plataforma. Un editor siempre está asociado a un objeto de entrada (IEditorInput). Del objeto de entrada podría decirse que es como el documento o el archivo que se está editando. Los cambios hechos en un editor no quedan comprometidos hasta que el usuario los guarda.

Solo puede haber un editor abierto para cualquier entrada de editor concreta de una página del entorno de trabajo. Por ejemplo, si el usuario está editando el archivo readme.txt en el entorno de trabajo y lo abre de nuevo en la misma perspectiva, se activará el mismo editor. (Puede abrir otro editor en el mismo archivo desde otra ventana o perspectiva del entorno de trabajo).  Sin embargo, a diferencia de las vistas, se puede abrir el mismo tipo de editor (por ejemplo, un editor de texto) numerosas veces dentro de una página del entorno de trabajo para diferentes entradas.

Los conectores utilizan el punto de extensión org.eclipse.ui.editors del entorno de trabajo 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 sobre la configuración del editor. Parte de la información sobre el editor es similar a la información sobre una vista, como la clase de implementación (class), el nombre (name) y el icono (icon) que hay que utilizar en los menús y etiquetas del entorno de trabajo. 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 reconoce. Los editores también pueden definir una clase de contribuyente (contributorClass), que aporta acciones a los menús y barras de herramientas del entorno de trabajo cuando el editor está activo.

La interfaz de los editores se define en IEditorPart, pero los conectores pueden optar por ampliar la clase EditorPart, en lugar de implementar IEditorPart desde cero.

Nota: también se puede configurar una extensión de editor para que lance un programa externo o para que llame a código Java preexistente. En este tema, nos estamos centrando en los editores que están fuertemente integrados en el entorno de trabajo y que se implementan con la interfaz IEditorPart.

La herramienta readme proporciona un editor personalizado cuya finalidad principal es suministrar una página de esquematizador de contenido propia a la vista 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="%Editors.ReadmeEditor"
      	   icon="icons/obj16/editor.gif"
      	   class="org.eclipse.ui.examples.readmetool.ReadmeEditor"
	   extensions="readme"
           contributorClass="org.eclipse.ui.examples.readmetool.ReadmeEditorActionBarContributor">
	</editor>
</extension>

En estos códigos XML de configuración, vemos los atributos id, name, icon y class con los que ya estamos familiarizados.   El atributo extensions describe los tipos de archivos que el editor reconoce.  (Si tuviera que ser más específico, también podría especificar el atributo filenames).  El atributo class implementa el editor, y el atributo contributorClass se encarga de proporcionar acciones relacionadas con el editor.  Veamos este último con más detalle.

Contribuyentes de acciones de editor

La clase de contribuyente aporta acciones relacionadas con el editor al menú y a la barra de herramientas del entorno de trabajo. Debe implementar la interfaz IEditorActionBarContributor. El contribuyente está separado del propio editor, porque una página dada del entorno de trabajo puede tener múltiples editores del mismo tipo. Todos los editores de un tipo concreto comparten un solo contribuyente, en lugar de hacer que cada instancia de un editor cree acciones e imágenes. 

En ReadmeEditorActionBarContributor, contribuimos con tres acciones: "Editor Action1", "Editor Action2" y "Editor Action3". Estas acciones están configuradas en el constructor.

public ReadmeEditorActionBarContributor() {
      	...
	action1 = new EditorAction(MessageUtil.getString("Editor_Action1")); 
	action1.setToolTipText(MessageUtil.getString("Readme_Editor_Action1")); 
	action1.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_DISABLE);
	action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_ENABLE);
	...	
	action2 = new RetargetAction(IReadmeConstants.RETARGET2, MessageUtil.getString("Editor_Action2")); 
	action2.setToolTipText(MessageUtil.getString("Readme_Editor_Action2")); 
	action2.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_DISABLE);
	action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_ENABLE);
	...
	action3 = new LabelRetargetAction(IReadmeConstants.LABELRETARGET3, MessageUtil.getString("Editor_Action3"));
	action3.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_DISABLE);
	action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_ENABLE);
	...   
   }

Los nombres y los iconos de las acciones se configuran en el código, en vez de hacerlo en el archivo plugin.xml. (Por ahora, haremos caso omiso de las diferencias en las clases de acciones, hasta que veamos el tema de las acciones redirigibles).  

Observe cómo se parece la información sobre las acciones a la información de viewActions que vimos en los códigos XML de las acciones de vista.  Las acciones se configuran en el código, ya que es necesario gestionar el compartimiento de las acciones entre las distintas instancias de un mismo editor.  Cuando las acciones se crean en el constructor, son independientes de las instancias concretas del editor.

Cuando un editor se activa y tiene acciones que deben instalarse en los menús y la barra de herramientas del entorno de trabajo, se envía el mensaje setActiveEditor al contribuyente.  El contribuyente conecta las acciones del editor a un editor específico.  

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

Como 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.

Entrada de readme en la barra de menús del entorno de trabajo con tres acciones de editor

Barra de herramientas del entorno de trabajo con tres acciones de readme

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

Editores y esquematizadores del contenido

El editor readme, ReadmeEditor, no es muy complejo. Amplía la clase TextEditor para que pueda contribuir suministrando una página de esquematizador de contenido personalizada a la vista Esquema cuando se esté editando un archivo readme. No modifica el comportamiento del editor de texto.

A menudo, los editores tienen sus correspondientes esquematizadores del contenido que proporcionan una vista estructurada del contenido del editor y ayudan al usuario a navegar por él.   Consulte el tema Esquematizadores de contenido para obtener más detalles.

En el tema Editores de texto y texto de plataforma veremos la implementación de los editores de texto.

Copyright IBM Corporation y otros 2000, 2003.