Ejemplo - Editor Java

Introducción

El ejemplo de Editor Java muestra las características estándar disponibles para editores de texto personalizados.  También muestra cómo  registrar un editor para una extensión de archivo (en este caso .jav) y cómo definir un proveedor de documentos personalizado para que lo utilice ese editor. La finalidad de este ejemplo es únicamente demostrativa. El soporte de edición en java está proporcionado por  Eclipse Java Tooling.

El código de este ejemplo se encuentra en el conector org.eclipse.ui.examples.javaeditor. Para explorar el código, se recomienda que importe ese conector al área de trabajo.

Características mostradas en el editor de ejemplos

Características no mostradas

Ejecución del editor Java de ejemplo

  1. Crear un proyecto
  2. Cree un archivo con la extensión ".jav" en el proyecto recién creado. El editor de ejemplo Java se abre automáticamente.
  3. Inserte código Java. El código de Java es coloreado dinámicamente. El editor de ejemplo presenta los siguientes elementos de lenguaje en colores diferentes: comentarios de varias líneas, comentarios de una sola línea, palabras reservadas de lenguaje Java, constantes de serie y de caracteres, código regular Java, así como comentarios de varias líneas de acuerdo a las directrices de Javadoc. Dentro de estos comentarios Javadoc, las palabras clave Javadoc (verdes) y los códigos HTML (grises) aparecen con colores distintos.
  4. Abra un nuevo comentario Java de varias líneas insertando "/*" fuera de un comentario Java. Todo el texto situado entre el "/*" insertado y la primera aparición de "*/" o hasta el final del texto cambia a color rojo. Añada otro "*". El rango en rojo cambia a color negro, ya que ahora se considera que el comentario regular de varias líneas contiene Javadoc. Invoque el asistente de código utilizando CONTROL-ESPACIO. La función del asistente de código es dar soporte al usuario al escribir código. Por tanto, en la invocación, el asistente de contenido debe listar todas las finalizaciones válidas posibles en la ubicación de invocación. Dentro de Javadoc, el editor de ejemplo siempre propone todas las palabras clave Javadoc.
  5. Fuera de un comentario Java, invoque una sugerencia de contenido utilizando CONTROL+MAYÚS+ESPACIO. Se listan cinco propuestas. Seleccione una y pulse INTRO. Aparece una pequeña ventana flotante roja encima de la línea actual que muestra la propuesta seleccionada. Las sugerencias de contenido se utilizan para que el usuario exprese sus intenciones (por ejemplo, escribir una llamada a un método) y luego presentar información de contexto que guiará al usuario para hacerlo. En el editor de ejemplo, la propuesta se considera válida cinco caracteres alrededor de la ubicación de invocación inicial. Aunque la sugerencia de contenido es visible, invoque el asistente de contenido utilizando CONTROL+ESPACIO. El asistente de contenido invocado en esta situación debería ayudar al usuario a conseguir su intención indicada, lo que sigue siendo visible en la sugerencia de contenido. Dentro del código regular Java, el editor de ejemplo siempre propone todas las palabras clave Java.
  6. Guarde el código Java. Al guardar se actualiza el esquematizador de contenido. El esquematizador de contenido contiene diez entradas cada uno de ellos, representando uno de diez segmentos de igual tamaño del código Java en el editor. Este estilo de esquematizador de contenido se ha elegido para mostrar que la semántica de rangos de resaltado puede definirse arbitrariamente. (Vea los pasos siguientes.)
  7. Seleccione una de las entradas del perfilador de contenido. Las líneas correspondientes se marcan como una barra azul en la regla vertical izquierda del editor.
  8. Conmute ahora a la modalidad de presentación segmentada del editor Java. Para ello, asegúrese de que el editor tiene el foco y pulse ese botón de la barra de herramientas del escritorio cuya ayuda flotante dice "Habilitar/inhabilitar visor de fuente segmentado".   Esta funcionalidad se utiliza para las vistas de un solo método y funciones similares.
  9. Seleccione una entrada diferente del esquematizador de contenido. Ahora el editor sólo muestra el segmento seleccionado. Al deseleccionar la entrada en el esquematizador de contenido, vuelve a mostrarse el código Java completo.
  10. Seleccione una entrada en el esquematizador de contenido, luego seleccione una fracción del texto visible y añada una tarea para la selección. La tarea aparece en la lista de tareas. Modifique el código visible. En la lista de tareas, seleccione la tarea creada anteriormente y pulse el botón "Ir a archivo". La tarea se selecciona en el área visible, teniendo en cuenta correctamente las modificaciones aplicadas anteriormente.
  11. Seleccione otra entrada en el esquematizador de contenido. Revele la tarea añadida anteriormente de la lista de tareas. El rango de resaltado del editor aumenta automáticamente para incluir el rango de la tarea revelada.
  12. Abra un área de trabajo nueva. En la nueva área de trabajo, abra un editor Java para el mismo archivo que en el área de trabajo original. Modifique el contenido del editor. Vuelva al área de trabajo original. El editor muestra los cambios efectuados en la otra área de trabajo. Los dos editores que muestran el mismo archivo están enlazados.

Principios para crear editores de texto personalizados

Los pasos siguientes suelen ser necesario para desarrollar un editor de texto personalizado.
  1. Cree un proveedor de documentos. Un proveedor de documentos (consulte IDocumentProvider) produce y gestiona documentos (vea IDocument) que contienen una representación textual de elementos de entrada de editor. Es importante decidir cómo debe realizarse la conversión entre representación de elementos y de texto y si el proveedor de documentos debe compartirse o no entre varios editores. Consulte la clase FileDocumentProvider en el editor de ejemplos de Java.
  2. Cree un divisor de documento. Un particionador de documentos (consulte IDocumentPartitioner) divide un documento en regiones no coincidentes. El particionador asigna a cada región un tipo de contenido entre un conjunto de tipos de contenido predefinidos por el particionador. En cada documento, cambie el particionamiento del documento que debe actualizarse. Consulte la clase JavaPartitioner en el editor de ejemplos de Java. JavaPartitioner determina las regiones de tipos "comentarios de varias líneas", "comentarios de Javadoc" y "todo lo demás". Debe asegurarse de que el proveedor de documentos se establezca en cada documento producido por el proveedor de documentos.
  3. Determine cuál de los conectores de visor de fuente debe proporcionarse. Entre otros conectores soportados se encuentran las estrategias de sangrado automático, estrategias de doble pulsación, formateador de contenido y reconciliador de presentación de texto. La descripción subsiguiente se restringirá al reconciliador de presentación de texto (consulte IPresentationReconciler). En el editor de ejemplos de Java, el reconciliador de presentación de texto se utiliza para implementar el resaltado de sintaxis.
  4. Para todos los conectores de visor de fuente, cree las extensiones adecuadas para cada tipo de contenido soportado. Como se ha visto antes, el particionador de documento define los tipos de contenido soportados. La implementación por omisión de IPresentationReconciler da soporte a IPresentationDamagers e IPresentationRepairers como extensiones. Esas extensiones se consideran específicas para un tipo de contento concreto. Así, para un editor personalizado, en primer lugar el usuario debe seleccionar un subconjunto de tipos de contenido soportados. De las regiones de un tipo en el subconjunto seleccionado, por ejemplo, se resaltará la sintaxis. Las extensiones deben implementarse para cada uno de esos tipos. Véase el JavaDamagerRepairer y el JavaDocDamagerRepairer en el editor de ejemplo.
  5. Construya una configuración de visor de fuente utilizando los conectores y extensiones creados anteriormente. Consulte JavaSourceViewConfiguration en el editor de ejemplo.
  6. Personalice la clase TextEditor o AbstractTextEditor con el particionador de documentos desarrollado y la configuración de visor de fuente. Añada o sustituya acciones y adapte la construcción del menú de contexto del editor. En la versión real, esta personalización debe realizarse en una subclase. Véase JavaEditor en el editor de ejemplo.
  7. Configure un contribuyente de barra de acciones adecuado que contribuya con acciones relativas al editor a la barra de herramientas y a los menús del escritorio. Véase JavaActionContributor en el editor de ejemplo.
  8. Amplíe el archivo de configuración XML del conector del editor, de manera que el editor registre en el punto de extensión de editor predefinido un conjunto específico de extensiones de archivo. Configure también el contribuyente de barra de acciones en el archivo XML. Véase plugin.xml de este ejemplo.

Organización de código del ejemplo

El código de ejemplo de editor Java está organizado en cuatro paquetes: