Respetar el soporte de una sola pulsación

Las Preferencias del entorno de trabajo permiten a los usuarios especificar si los objetos de las vistas se deben abrir al pulsar una sola vez o al pulsar dos veces.

Preferencias de la "modalidad de apertura" del entorno de trabajo, con la advertencia de que podrían no entrar en vigor en todas las vistas

¿Por qué se advierte de que esta preferencia podría no funcionar en todas las vistas? Porque las vistas suministradas como contribución de los conectores deben dar soporte explícito a esta preferencia en su implementación.

Recuerde que una vista se puede implementar creando controles SWT y escribiendo código SWT estándar, o bien utilizando visores de JFace para manejar los detalles de bajo nivel. La entrada en vigor de la preferencia de una sola pulsación se puede lograr en los dos niveles. La mayoría de las vistas que abren otros objetos los presentan en una vista estructurada y parecida a una lista. Por ahora, nos centraremos en esa clase de vista. Si los objetos de su vista se visualizan de otra manera, es probable que utilice los conceptos a nivel de SWT para dar soporte a una sola pulsación.

Una sola pulsación en los visores de JFace

Si está utilizando un visor de JFace orientado a listas para presentar sus objetos, el soporte de una sola pulsación es muy sencillo. En vez de utilizar el método addDoubleClickListener para desencadenar la apertura de los elementos de la vista, utilice el método addOpenListener. El escuchador de apertura respeta las preferencias del entorno de trabajo actual, disparando el evento de apertura cuando se produce el evento especificado del ratón.

Todavía puede resultarle interesante utilizar el método addDoubleClickListener para las acciones no de apertura, como son las de expandir los elementos de un árbol al pulsar dos veces.

Una sola pulsación en los controles de SWT

JFace proporciona una clase de utilidades, OpenStrategy, que maneja la logística de una sola pulsación y de doble pulsación a nivel de control de SWT. La estrategia de apertura, OpenStrategy, se configura mediante el diálogo Preferencias del entorno de trabajo para que respete la preferencia de apertura actual del entorno de trabajo. De hecho, los visores de JFace emplean esta clase para implementar el escuchador de apertura. 

Debe crear una clase OpenStrategy y asociarla al control de SWT. La clase OpenStrategy enganchará los eventos apropiados y los interpretará basándose en las preferencias del usuario. Su tarea consistirá en añadir un escuchador de apertura a la estrategia que implemente el código de la apertura. De esta forma, no hará falta que conozca qué evento del widget desencadenó el evento de apertura.

OpenStrategy openHandler = new OpenStrategy(control);
openHandler.addOpenListener(new IOpenEventListener() {
	public void handleOpen(SelectionEvent e) {
	// código para manejar el evento de apertura.
	...
	}
}

En el entorno de trabajo, las otras preferencias de apertura (seleccionar en menú flotante, abrir mediante las teclas de flecha) también están manejadas por la clase OpenStrategy. Esto quiere decir que sucederá lo "correcto" si utiliza los visores de JFace o la clase OpenStrategy para implementar el comportamiento de la apertura.

Activar los editores al producirse la apertura

Al manejar un evento de apertura, debe utilizar el método OpenStrategy.activateOnOpen() para determinar si un editor abierto se debe activar por omisión. El hecho de activar un editor hace que el foco pase de la vista actual al editor, lo que puede resultar especialmente confuso y no deseable en la modalidad de una sola pulsación.

Copyright IBM Corp. y otros 2000, 2002.