Rispetto del supporto al clic singolo

La finestra generale Preferenze consente agli utenti di specificare se le viste devono aprire gli oggetti al clic singolo o doppio.

Preferenze generali della "modalità di apertura" con dichiarazione che la preferenza non ha effetto in tutte le viste

Viene specificata una dichiarazione di non responsabilità per questa preferenza  in quanto le viste aggiunte dai plugin devono supportarla in modo esplicito nell'implementazione.

Si ricordi che è possibile implementare una vista mediante la creazione di controlli SWT e scrivendo codice SWT standard, oppure utilizzando visualizzatori JFace per gestire dettagli di livello basso.  È possibile ottenere il rispetto della preferenza per il clic singolo a entrambi i livelli.  La maggior parte delle viste che aprono altri oggetti presenta questi ultimi in una vista strutturata simile a un elenco.  Per adesso verrà esaminato questo tipo di vista.  Se nella vista gli oggetti vengono mostrati in maniera diversa, si utilizzeranno probabilmente concetti di livello SWT per supportare il clic singolo.

Clic singolo nei visualizzatori JFace

Se per presentare gli oggetti si utilizza un visualizzatore orientato all'elenco, il supporto del clic singolo è semplice.  Per attivare l'apertura degli elementi nella vista, invece di addDoubleClickListener si deve utilizzare addOpenListener.  Il listener aperto rispetta la preferenza di workbench corrente, attivando l'evento di apertura al verificarsi dell'evento mouse specificato.

Per azioni diverse dall'apertura, come ad esempio l'espansione delle voci di una struttura al doppio clic, è possibile utilizzare addDoubleClickListener.

Clic singolo nei controlli SWT

JFace fornisce una classe di utilità, OpenStrategy, per gestire la logistica del clic singolo o doppio a livello di controllo SWT.  OpenStrategy viene configurata dalla finestra di dialogo generale Preferenze in modo tale che rispetti la preferenza corrente per l'apertura. Il visualizzatore JFace infatti utilizza questa classe per implementare il listener di apertura. 

È necessario creare una OpenStrategy e associarla a un controllo SWT.  OpenStrategy aggancerà gli eventi appropriati e li interpreterà in base alle preferenze dell'utente.  Il compito del programmatore consiste nell'aggiungere un listener di apertura alla strategia che implementa il codice per l'apertura.  In questo modo non è necessario conoscere quale evento widget ha innescato l'evento di apertura.

OpenStrategy openHandler = new OpenStrategy(control);
openHandler.addOpenListener(new IOpenEventListener() {
	public void handleOpen(SelectionEvent e) {
	// codice per la gestione dell'evento di apertura.
	...
	}
}

Anche le altre preferenze di workbench per l'apertura (selezione al posizionamento del cursore, apertura mediante i tasti di direzione) sono gestite da OpenStrategy.  Questo significa che per implementare la funzione di apertura la scelta migliore è utilizzare i visualizzatori JFace o la classe OpenStrategy.

Attivazione degli editor all'apertura

Nella gestione di un evento di apertura si deve utilizzare OpenStrategy.activateOnOpen() per stabilire se un editor aperto deve essere attivato per impostazione predefinita.  L'attivazione di un editor sposta il focus dalla vista all'editor, cosa che può generare una certa confusione ed è poco desiderabile in modalità di clic singolo.