Editores internos y externos
Identificador:
org.eclipse.ui.editors
Descripción:
Este punto de extensión se utiliza para añadir editores nuevos al entorno de trabajo. Un editor es un componente visual de una página del entorno de trabajo.
Se suele utilizar para editar o examinar un documento o un objeto de entrada. Para abrir un editor, el usuario invocará generalmente a una acción "Abrir" en un IFile.
Cuando se realiza esta acción, se consulta el registro del entorno de trabajo para determinar un editor apropiado para el tipo de archivo y, a continuación, se crea una instancia nueva del tipo de editor. El resultado real depende del tipo del editor. El entorno de trabajo proporciona soporte para la creación de editores internos, que están estrechamente integrados en el entorno de trabajo, y para editores externos, que se lanzan en una ventana independiente.
Existen también diversos niveles de integración entre estos extremos.
En el caso de un editor interno, puede lograrse un grado de integración elevado entre la ventana del entorno de trabajo y el componente editor. El menú y
la barra de herramientas del entorno de trabajo están precargados con varias
acciones comunes, tales como cortar, copiar y pegar. Se espera que el componente activo,
vista o editor, proporcione la implementación para dichas
acciones. Un editor interno puede también definir nuevas acciones que aparecen
en la ventana del entorno de trabajo. Estas acciones únicamente aparecen
cuando el editor está activo.
La integración entre el entorno de trabajo y los editores externos es más
frágil. En este caso, el entorno de trabajo puede lanzar un editor, pero
luego no tiene ninguna manera de determinar el estado del editor externo ni de colaborar con él de ningún modo, excepto mediante el sistema de archivos.
Código de configuración:
<!ELEMENT extension (editor*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
- point: identificador totalmente calificado del punto de extensión destino
- id: identificador opcional de la instancia de extensión
- name: nombre opcional de la instancia de extensión
<!ELEMENT editor (contentTypeBinding*)>
<!ATTLIST editor
id CDATA #REQUIRED
name CDATA #REQUIRED
icon CDATA #IMPLIED
extensions CDATA #IMPLIED
class CDATA #IMPLIED
command CDATA #IMPLIED
launcher CDATA #IMPLIED
contributorClass CDATA #IMPLIED
default (true | false) "false"
filenames CDATA #IMPLIED
symbolicFontName CDATA #IMPLIED
matchingStrategy CDATA #IMPLIED>
- id: nombre exclusivo que se empleará para identificar este editor.
- name: nombre traducible que se utilizará en la UI para este editor.
- icon: nombre relativo del icono que se empleará para todos los recursos
que coincidan con las extensiones especificadas.
No hace falta un icono si
especifica un mandato en lugar de una clase. En ese caso,
el entorno de trabajo utilizará el icono suministrado por el sistema operativo.
- extensions: campo opcional que contiene la lista de tipos de archivo que
el editor interpreta. Es una serie que contiene extensiones de archivos
separadas por comas. Por ejemplo, un editor que interprete documentos de
hipertexto podrá registrar la serie de extensiones "htm, html".
- class: nombre de la clase que implementa
org.eclipse.ui.IEditorPart. Los atributos class, command y launcher son mutuamente excluyentes. Si se define este
atributo, también debe definirse el atributo contributorClass.
- command: mandato que hay que ejecutar para lanzar un editor
externo. El mandato ejecutable debe estar situado en la vía de acceso del
sistema o en el directorio del conector. Los atributos class, command y launcher son mutuamente excluyentes.
- launcher: nombre de una clase que implementa
org.eclipse.ui.IEditorLauncher.
Un lanzador abrirá un editor
externo. Los atributos class, command y launcher son mutuamente excluyentes.
- contributorClass: nombre de la clase que implementa
org.eclipse.ui.IEditorActionBarContributor. Este atributo sólo debe definirse si se define el atributo class. Esta
clase se utiliza para añadir al menú y a la barra de herramientas del entorno
de trabajo acciones nuevas que reflejen las características del tipo de editor.
- default: si es "true", este editor será el que se utilice por omisión
para este tipo. Esto solo es relevante en el caso de que haya más de un editor
registrado para el mismo tipo. Si un editor no es el que se toma por omisión
para el tipo, aún es posible lanzarlo utilizando el submenú "Abrir con..."
para el recurso seleccionado.
Observe que este atributo sólo se respeta en estos momentos para asociaciones
de nombre de archivo y extensión.
No se respetará para enlaces de tipo de contenido. La resolución de contenido
basado en el tipo se producirá según el procedimiento de primero en llegar,
primero en ser servido, y no se especifica de manera explícita.
- filenames: campo opcional que contiene la lista de nombres de archivo que
el editor interpreta. Es una serie que contiene nombres de archivo
separados por comas. Por ejemplo, un editor que interprete documentos de
hipertexto específicos podrá registrar "ejb.htm, ejb.html".
- symbolicFontName: nombre simbólico de un font. El nombre de font simbólico debe ser el ID de un font definido (consulte org.eclipse.ui.fontDefinitions). Si este atributo falta o no es válido, el nombre del font es el valor de "org.eclipse.jface.textfont" en el almacén de preferencias del editor. Si no existe ningún almacén de preferencias o la clave no está definida, se utilizará el font de texto de JFace. La implementación del editor decide si utiliza este nombre de font simbólico para establecer el font.
- matchingStrategy: nombre de la clase que implementa
org.eclipse.ui.IEditorMatchingStrategy. Este atributo sólo debe definirse si se define el atributo class. Esto
permite que la extensión de editor proporcione su propio algoritmo para que la
entrada de uno de sus editores se empareje con la entrada de un editor dado en
busca de coincidencias.
<!ELEMENT contentTypeBinding EMPTY>
<!ATTLIST contentTypeBinding
contentTypeId CDATA #REQUIRED>
Anuncia que el editor que lo contiene entiende el tipo de contenido dado y es
adecuado para editar archivos de ese tipo.
- contentTypeId: identificador del tipo de contenido
Ejemplos:
A continuación figura un ejemplo de
definición de extensión de editor interno:
<extension point=
"org.eclipse.ui.editors"
>
<editor
id=
"com.xyz.XMLEditor"
name=
"Editor XML XYZ a medida"
icon=
"./icons/XMLEditor.gif"
extensions=
"xml"
class=
"com.xyz.XMLEditor"
contributorClass=
"com.xyz.XMLEditorContributor"
symbolicFontName=
"org.eclipse.jface.textfont"
default=
"false"
>
</editor>
</extension>
Información sobre las API:
Si se utiliza el atributo command, se tratará como una línea de
mandatos de programa externo que se ejecutará de manera dependiente de la
plataforma.
Si se utiliza el atributo launcher, el editor también se tratará
como programa externo. En este caso, la clase especificada debe implementar
org.eclipse.ui.IEditorLauncher.
Se creará una instancia del lanzador y
luego se invocará el método open(IFile file) para lanzar el editor.
Si se utiliza el atributo class, el entorno de trabajo supondrá que se trata de un editor interno, y la clase especificada deberá implementar org.eclipse.ui.IEditorPart.
Es una práctica común crear una subclase de org.eclipse.ui.EditorPart al definir un tipo de editor nuevo. También es necesario definir un atributo
contributorClass.
La clase especificada debe implementar org.eclipse.ui.IEditorActionBarContributor, y se utiliza para añadir al menú y a la barra de herramientas del entorno
de trabajo acciones nuevas que reflejen las características del tipo de editor.
Dentro del entorno de trabajo, puede estar abierto más de un editor de un tipo determinado. Por ejemplo, puede haber abiertos uno o varios editores Java. Para evitar la creación de acciones e imágenes de acción duplicadas, el concepto de editor se ha dividido en dos. Un
IEditorActionBarContributor se encarga de la creación de las acciones. El editor es responsable de la implementación de las acciones. Además, todos los editores abiertos comparten el contribuyente. Como resultado de este diseño, sólo existe un conjunto de acciones para uno o varios editores abiertos.
El contribuyente añadirá al menú y a la barra de herramientas del entorno
de trabajo acciones nuevas que reflejen el tipo de editor. Estas acciones son compartidas y, cuando se invocan, actúan sobre el editor activo. El editor activo se pasa al contribuyente invocando a IEditorActionBarContributor.setActiveEditor.
Los identificadores de las acciones y grupos principales dentro de la ventana del entorno de trabajo se definen en org.eclipse.ui.IWorkbenchActionConstants.
Deben utilizarse como punto de referencia para la adición de acciones nuevas. Los menús de nivel superior se crean utilizando los valores siguientes para el
atributo path:
-
additions: representa un grupo situado a la izquierda del menú Ventana.
Las acciones y los menús añadidos a estas vías de acceso únicamente se
mostrarán mientras esté activo el editor asociado. Cuando éste se cierre, los
menús y las acciones quedarán eliminados.
Implementación suministrada:
El entorno de trabajo proporciona
un editor de texto por omisión. El producto del usuario final puede contener
otros editores como parte del paquete compuesto. En tal caso, los editores se
registrarán como extensiones utilizando la sintaxis definida anteriormente.
Copyright (c) 2002, 2005 IBM Corporation y otros.
Reservados todos los derechos. Este programa y sus materiales adjuntos están
disponibles bajo los términos de la licencia pública común (Eclipse Public
License) v1.0 que acompaña a esta distribución, y está disponible en
http://www.eclipse.org/legal/epl-v10.html