Ejemplo - Editor Java
Introducción
El ejemplo de editor de Java muestra las características estándar disponibles para los
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 ser utilizado por ese editor. La finalidad de este ejemplo es únicamente demostrativa. El soporte para edición de Java se obtiene de las Herramientas Java de Eclipse.
Características demostradas en el editor de ejemplo
-
resaltado de sintaxis
-
asistente de contenido sensible al tipo de contenido (JavaDoc y código de Java)
-
comunicación entre el perfilador de contenido y el editor, esto es, la selección del perfilador de contenido introduce el campo resaltado del editor
-
dos modos diferentes de presentación
-
marcar el campo resaltado utilizando un indicador de campo visual
-
limitar el editor a que muestre únicamente el texto dentro del campo resaltado (p.ej. muestra un método sencillo de una clase de Java)
-
tratamiento de marcadores
-
compartición de documentos
Características no demostradas
-
formato del contenido
-
reconciliación dinámica de la página de perfil de contenido
Ejecución del editor de ejemplo
-
Crear un proyecto
-
Crear un archivo con la extensión de archivo ".jav" en el proyecto recién creado.
El editor de ejemplo Java se abre automáticamente.
-
Insertar el código de Java. El código de Java es coloreado dinámicamente. El editor de ejemplo presenta los siguientes elementos de lenguaje en diferentes colores: comentarios multilínea, comentarios de línea sencilla, palabras reservadas del lenguaje Java, constantes de serie y de carácter, código regular Java, así como observaciones multilínea de acuerdo con las directrices del JavaDoc. Dentro de estas observaciones JavaDoc, las etiquetas y las palabras clave del JavaDoc están coloreados de distinto modo.
-
Abra una nueva observación multilínea Java insertando "/*" en el exterior de la observación Java.
Todo el texto entre el "/*" insertado y la primera aparición de "*/" o el final del texto
cambia su color al rojo. Añada otro "*". El campo en rojo cambia al verde como la observación regular multilínea, que ahora se considera que contiene el JavaDoc. Invoque el asistente de código utilizando CTRL-ESPACIO.
La función del asistente de contenido consiste en ayudar al usuario al escribir el código.
Por lo tanto, al invocarlo, el asistente del contenido debería enumerar todas las terminaciones válidas posibles en la ubicación de la invocación. Dentro del JavaDoc, el editor de ejemplo siempre propone todas las palabras clave del JavaDoc.
-
En el exterior de la observación Java invoque la ayuda de contenido utilizando CTRL+SHIFT+ESPACIO. Se enumeran cinco propuestas. Seleccione una y pulse INTRO. Aparecerá una pequeña ventana flotante en rojo encima de la línea actual que visualiza la propuesta seleccionada.
El uso anticipado de la ayuda de contenido sirve para permitir que el usuario exprese su intención, p.ej. entrar una llamada de método y presentar información contextual que guíe al usuario. En el editor de ejemplo, la propuesta es considerada válida cinco caracteres alrededor de la localización de la invocación inicial. Mientras la ayuda de contenido esté visible, invoque al asistente de contenido utilizando CTRL+ESPACIO. El asistente de contenido invocado en esta situación debería ayudar al usuario a llevar a cabo su intención visible en la ayuda de contenido. Dentro del código habitual de Java, el editor de ejemplo siempre propone todas las palabras clave de Java.
-
Guarde el código Java. Al guardarlo se actualiza el perfilador de contenido. El perfilador de contenido contiene diez entradas, cada una de las cuales representa uno de los diez segmentos de igual tamaño del código Java del editor. Este tipo de perfil de contenido ha sido escogido para mostrar que la semántica de los campos resaltados puede ser definida de forma arbitraria. (Vea los pasos siguientes.)
-
Seleccione una de las entradas del perfilador de contenido. Las líneas correspondientes están marcadas con una barra azul en la regla vertical izquierda del editor.
-
Ahora conmute al modo de presentación segmentado del editor Java. Para ello, asegúrese de que el editor esté activo y pulse el botón de la barra de herramientas del escritorio cuya ayuda flotante indica "Habilitar/Inhabilitar visor de código fuente segmentado".
Esta función está prevista para usarla, por ejemplo, para vistas de un solo método.
-
Seleccione una entrada diferente en el esquematizador de contenido. Ahora el editor muestra únicamente el segmento seleccionado. Al seleccionar la entrada en el esquematizador de
contenido, se muestra de nuevo el código completo de Java.
-
Seleccione una entrada en el esquematizador de contenido, seleccione una parte del texto visible y añada una tarea para la selección. La tarea se muestra en la lista de tareas.
Modifique el código visible. En la lista de tareas, seleccione la tarea previamente creada y pulse el botón "Ir a archivo". La tarea se selecciona en el área visible, tomando en cuenta de forma correcta las modificaciones previamente aplicadas.
-
Seleccione otra entrada en el esquematizador de contenido. Revele la tarea añadida
previamente en la lista de tareas. El rango resaltado del editor se amplia de forma automática
para incluir el rango de la tarea revelada.
-
Abra un área de trabajo nueva. En la nueva área de trabajo, abra un editor Java para el mismo archivo que el del área de trabajo original. Modifique el contenido del editor. Vuelva al área de trabajo original. El editor muestra los cambios realizados en la otra área de trabajo. Los dos editores que muestran el mismo archivo están bien conectados.
Principios para crear editores de texto personalizados
Generalmente, son necesarios los pasos siguientes para desarrollar un editor de texto personalizado.
-
Cree un proveedor de documentos. Un proveedor de documentos (véase IDocumentProvider) produce y gestiona documentos (véase IDocument) que contienen una representación textual de los elementos de entrada del editor. Es importante decidir cómo aparecerá la traducción entre un elemento y su representación textual y si el proveedor del documento debería compartirse, o no, entre los múltiples editores. Véase la clase FileDocumentProvider en el editor de ejemplo de Java.
-
Cree un divisor de documento. Un divisor de documento (véase IDocumentoPartioner) divide un documento en dos áreas separadas. El divisor asigna a cada área un tipo de contenido de entre un conjunto de tipos de contenido predefinido por el divisor. En cada modificación de documento, la división del documento debe ser actualizada. Véase la clase JavaPartitioner en el editor de ejemplo de Java. El JavaPartitioner determina las áreas de los comentarios de tipos multilínea, comentarios JavaDoc y todo lo demás. Se debe asegurar de que el proveedor de documento esté establecido en cada documento producido por el proveedor de documento.
-
Determine qué conectores de visor de código fuente deben suministrarse. Entre los conectores soportados se encuentran las estrategias de autosangrado, las estrategias de doble pulsación, el formateador de contenido y el conciliador de presentación de texto. La descripción posterior resultará restringida para el conciliador de presentación de texto (véase IPresentationReconciler).
En el editor de ejemplo de Java, el conciliador de presentación de texto se utiliza para implementar el resaltado de la sintaxis.
-
Cree para todos los conectores de visor de código fuente las extensiones apropiadas para cada tipo de contenido soportado. Como se ha indicado anteriormente, el divisor de documento define los tipos de contenido soportados. La implementación por omisión del IPresentationReconciler proporciona soporte para los IPresentationDamagers y los IPresentationRepairers como extensiones.
Estas extensiones se consideran específicas para un tipo de contenido en particular. De este modo, para un editor personalizado, el usuario debe, en primer lugar, seleccionar un subconjunto de tipos de contenido soportados. Las regiones de un tipo que forme parte del subconjunto seleccionado tendrán, por ejemplo, resaltado de sintaxis. Para cada uno de estos tipos, deben implementarse las extensiones. Véase el JavaDamagerRepairer y el JavaDocDamagerRepairer en el editor de ejemplo.
-
Construya una configuración de visor de código fuente utilizando los conectores y las extensiones creados previamente. Consulte JavaSourceViewConfiguration en el editor de ejemplo.
-
Personalice la clase TextEditor o AbstractTextEditor con el divisor de documento desarrollado y la configuración de visor de código fuente. Añada o sustituya acciones y adapte la construcción del menú de contexto del editor. En la versión actual,
esta personalización debe llevarse a cabo en una subclase. Véase JavaEditor en el editor de ejemplo.
-
Configure un contribuyente de barra de acciones apropiado, que aporte acciones relacionadas con el editor a la barra de herramientas y a los menús del escritorio. Véase JavaActionContributor en el editor de ejemplo.
-
Amplíe el archivo de configuración XML del conector del editor, de tal forma que el editor registre en el punto de extensión del editor predefinido un conjunto específico de extensiones de archivo. Configure también el contribuyente de la barra de acciones en el archivo XML.
Véase plugin.xml de este ejemplo.
Organización del código del ejemplo
El código de ejemplo está organizado en cuatro paquetes:
-
org.eclipse.ui.examples.javaeditor contiene todas las clases específicas del editor.
-
org.eclipse.ui.examples.javaeditor.java contiene todos los conectores de visor de código fuente específicos de Java, como JavaDamagerRepairer y el divisor de documento específico de Java.
-
org.eclipse.ui.examples.javaeditor.javadoc contiene todos los conectores de visor de código fuente específicos de JavaDoc, como por ejemplo JavaDocDamagerRepairer.
org.eclipse.ui.examples.javaeditor.util contiene clases de conveniencia
compartidas por los otros tres paquetes.