v
Les préférences du plan de travail permettent aux utilisateurs d'indiquer si les vues doivent ouvrir leurs objets après un clic simple ou double.
Pourquoi cette préférence ne fonctionne-t-elle pas pour toutes les vue ? Parce que les vues ajoutées par des plug-in doivent prendre en charge de façon explicite cette préférence dans leur implémentation.
Pour rappel, une vue peut être implémentée en créant des contrôles SWT et en écrivant du code SWT standard, ou bien à l'aide d'afficheurs JFace pour gérer les détails de faible niveau. Le respect de la préférence de clic simple peut être appliqué à tout niveau. La plupart des vues ouvrant d'autres objets les présentent de façon structurée, sous forme de liste. Nous allons pour l'instant étudier ce genre de vue. Si votre vue affiche les objets autrement, il est conseillé d'utiliser des concepts de niveau SWT pour prendre en charge le clic simple.
Si vous utilisez un afficheur orienté liste JFace pour présenter vos objets, la prise en charge du clic simple est facile. Au lieu de addDoubleClickListener pour déclencher l'ouverture des éléments dans votre vue, utilisez addOpenListener. L'écouteur d'ouverture respecte la préférence actuelle du plan de travail, envoyant l'événement d'ouverture lorsque l'événement de souris se produit.
Vous pouvez toujours utiliser addDoubleClickListener pour des actions qui ne sont pas d'ouverture, telles que le développement par clic double des éléments dans une arborescence.
JFace fournit une classe d'utilitaire OpenStrategy pour gérer la logistique d'un clic simple et double au niveau des contrôles SWT. OpenStrategy est configuré par la boîte de dialogue Préférences du plan de travail afin que la préférence d'ouverture soit respectée. En fait, les afficheurs JFace utilisent cette classe pour implémenter l'écouteur d'ouverture.
Vous devez créer une OpenStrategy et l'associer à votre contrôle SWT. OpenStrategy relie les événements appropriés et les interprète en fonction des préférences utilisateur. Votre tâche consiste à ajouter un écouteur d'ouverture à la stratégie implémentant le code d'ouverture. De cette façon, vous ne savez pas quel événement de widget déclenche celui d'ouverture.
OpenStrategy openHandler = new OpenStrategy(control); openHandler.addOpenListener(new IOpenEventListener() { public void handleOpen(SelectionEvent e) { // code pour gérer l'événement d'ouverture. ... } }
Les autres préférences du plan de travail pour l'opération d'ouverture (sélection en passant sur l'élément, ouverture à l'aide des touches fléchées) sont également gérées par OpenStrategy. Ainsi, tout se déroulera "comme prévu" si vous utilisez des afficheurs JFace ou la classe OpenStrategy pour implémenter un comportement d'ouverture.
Lors de la gestion d'un événement d'ouverture, vous devez utiliser OpenStrategy.activateOnOpen() pour déterminer si un éditeur ouvert doit par défaut être activé. L'activation d'un éditeur désactive la vue, ce qui peut prêter à confusion en mode de clic simple.