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
-
resaltado de sintaxis
-
asistencia de contenido sensible al tipo de contenido (Javadoc y código Java)
-
comunicación entre esquematizador de contenido y editor, es decir, la selección de
esquematizador alimenta el rango de resaltado del editor
-
dos modalidades de presentación distintas
-
marcar el rango resaltado mediante un indicador de rango visual
-
confinar el editor para que muestre sólo el texto que está dentro del rango
resaltado (por ejemplo, mostrar un solo método de una clase Java)
-
manejo de marcadores
-
compartición de documentos
Características no mostradas
-
formateo de contenido
-
reconciliación dinámica de página de esquema de contenido
Ejecución del editor Java de ejemplo
-
Crear un proyecto
-
Cree un archivo con la extensión ".jav" en el proyecto recién creado.
El editor de ejemplo Java se abre automáticamente.
-
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.
-
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.
-
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.
-
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.)
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
Construya una configuración de visor de fuente utilizando los conectores y
extensiones creados anteriormente.
Consulte JavaSourceViewConfiguration en el editor de ejemplo.
-
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.
-
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.
-
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:
-
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 fuente específicos de Java como, por ejemplo,
JavaDamagerRepairer, así como el particionador de documentos específico de Java.
-
org.eclipse.ui.examples.javaeditor.javadoc
contiene todos los
conectores de visor de fuente específicos de Javadoc como, por ejemplo,
JavaDocDamagerRepairer.
org.eclipse.ui.examples.javaeditor.util
contiene clases
útiles compartidas por los otros tres paquetes.