Aceitando o Suporte de Clique Único

As Preferências do workbench permitem que os usuários especifiquem se as exibições devem abrir seus objetos com um clique único ou duplo.

Preferências de "Modo de abertura" do workbench com a rejeição de que a preferência pode não ser efetivada em todas as exibições

Por que a rejeição a esta preferência não funciona para todas as exibições?  Porque as exibições que recebem contribuição dos plug-ins devem suportar explicitamente esta preferência em sua implementação.

Lembre-se de que uma exibição pode ser implementada criando-se controles do SWT e gravando código padrão do SWT, ou utilizando Visualizadores do JFace para tratar dos detalhes de nível inferior.  Aceitar a preferência de clique único pode ser feita em qualquer nível.  A maioria das exibições que abrem outros objetos os apresenta em uma exibição estruturada, do tipo de lista.  Focalizaremos esse tipo de exibição por enquanto.  Se a sua exibição apresentar objetos de uma maneira diferente, provavelmente, você utilizará os conceitos em nível de SWT para suportar clique único.

Clique Único em Visualizadores do JFace

Se você estiver utilizando um visualizador orientado a lista do JFace para apresentar seus objetos, o suporte ao clique único será direto.  Em vez de utilizar addDoubleClickListener para disparar a abertura de itens em sua exibição, utilize addOpenListener.  O ouvinte aberto aceita a preferência atual do workbench, ativando o evento aberto quando ocorre o evento de mouse especificado.

Talvez você ainda queira utilizar addDoubleClickListener para ações não abertas, tal como expandir os itens em uma árvore no clique duplo.

Clique Único em Controles do SWT

O JFace fornece uma classe de utilitário, OpenStrategy, para tratar da logística do clique único e do clique duplo no nível de controle do SWT.  O OpenStrategy é configurado pelo diálogo Preferências do workbench para que aceite a preferência de abertura atual do workbench. Realmente, os visualizadores do JFace utilizam esta classe para implementar o ouvinte aberto. 

Você deve criar um OpenStrategy e associá-lo a seu controle do SWT.  O OpenStrategy conectará os eventos apropriados e os interpretará com base nas preferências do usuário.  Seu trabalho é incluir um ouvinte aberto na estratégia que implementa o código para abertura.  Assim, você não precisa saber qual evento de widget disparou o evento aberto.

OpenStrategy openHandler = new OpenStrategy(control);
openHandler.addOpenListener(new IOpenEventListener() {
	public void handleOpen(SelectionEvent e) {
	// código para tratar do evento aberto.
	...
	}
}

As outras preferências de abertura do workbench (selecionar suspenso, abrir utilizando teclas de seta) também são tratadas por OpenStrategy.  Isso significa que a "coisa certa" acontecerá se você utilizar os visualizadores do JFace ou a classe OpenStrategy para implementar o comportamento aberto.

Ativando Editores na Abertura

Ao tratar de um evento aberto, você deve utilizar OpenStrategy.activateOnOpen() para determinar se um editor aberto deve ser ativado por padrão.  Ativar um editor muda o foco da exibição para o editor, que pode ser particularmente confuso e indesejável no modo de clique único.

Copyright IBM Corp. e outros 2000,2002.