Otras funciones del editor de texto

El editor Java de ejemplo hereda muchos comportamientos útiles de AbstractTextEditor.  La infraestructura de edición de texto maneja otras diversas funciones que pueden personalizarse alterando temporalmente los métodos de AbstractTextEditor.  Examine la implementación de esta clase y de sus subclases para conocer cómo se personaliza el comportamiento en la infraestructura.

A continuación se indican algunas de las funciones útiles de la infraestructura que pueden configurarse.

Manejo de preferencias

Generalmente, los editores de texto aportan preferencias de usuario que controlan la presentación y el comportamiento del editor.  En la infraestructura de texto, cada instancia de editor de texto tiene asociado un almacén de preferencias que se utiliza para acceder a las preferencias de usuario.  El editor puede configurar este almacén de preferencias, o puede heredarse de los almacenes de preferencias ya utilizados en la infraestructura.

En el caso del editor Java de ejemplo, éste hereda el almacén de preferencias inicializado por TextEditor.  Se trata del almacén de preferencias definido por el conector de editores del entorno de trabajo.  

protected void initializeEditor() {
	...
	setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore());
}
Las preferencias del conector de editores pueden manipularse en las páginas de preferencias General > Editores y General > Editores > Editores de texto.

Si no desea utilizar las preferencias de texto estándar del entorno de trabajo para el editor, puede definir un almacén de preferencias diferente.  Esta operación se realiza generalmente alterando temporalmente initializeEditor y estableciendo su propio almacén de preferencias.  Si utiliza su propio almacén de preferencias, deberá también alterar temporalmente el método handlePreferenceStoreChanged(), que se desencadena siempre que se actualiza una preferencia.

Enlaces de teclas

Los contextos de enlaces de teclas son de utilidad para establecer un orden de búsqueda para enlaces de teclas. El hecho de disponer de enlaces de teclas contextuales reduce la posibilidad de que diferentes conectores aporten secuencias de teclas que entren en conflicto. Por omisión, el entorno de trabajo opera en un contexto genérico al trabajar con ventanas o diálogos. Cuando se activa un editor de texto, éste es responsable de restablecer el contexto de edición de texto, para que se activen los enlaces de teclas específicos de dicho editor.

En la infraestructura de texto de la plataforma, cada instancia de editor de texto tiene asociada una matriz de ámbitos enlaces de teclas. Es responsable de establecer los ámbitos correctos cuando se activa. AbstractDecoratedTextEditor define este ámbito y controla su activación. El ámbito se asigna en un método al que se llama desde el constructor:

protected void initializeKeyBindingScopes() {
	setKeyBindingScopes(new String[] { "org.eclipse.ui.textEditorScope" });  
}

El argumento del método es una matriz de los ID que se han definido para los contextos. Si desea que el editor defina su propio contexto de enlaces de teclas, puede alterar temporalmente este método en la clase de editor o establecer el ámbito dinámicamente mediante setKeybindingScopes.

El contexto propiamente dicho debe definirse con el ID correspondiente en el punto de extensión org.eclipse.ui.contexts. A continuación figura la definición del contexto de edición de texto.

   <extension
	point="org.eclipse.ui.contexts">
	<context
		name="%context.editingText.name"
		description="%context.editingText.description"
		id="org.eclipse.ui.textEditorScope"
		parentId="org.eclipse.ui.contexts.window">
	</context>
	...

(Nota:  En esta descripción, los términos ámbito y contexto son intercambiables. Los nombres de método de las clases de texto siguen haciendo referencia a los contextos de enlace de teclas como ámbitos. Estos nombres de método reflejan la implementación original de contextos como ámbitos y utilizan terminología obsoleta).