Ogólne okno dialogowe Preferencje umożliwia użytkownikom określenie, czy obiekty w widokach mają być otwierane kliknięciem pojedynczym czy dwukrotnym.
Skąd to zastrzeżenie? Ponieważ widoki wnoszone przez moduły dodatkowe muszą w sposób jawny obsługiwać tę preferencję w swoich implementacjach.
Jak wiadomo, widok można zaimplementować, tworząc pola sterujące SWT i pisząc standardowy kod SWT lub używając przeglądarek JFace do obsługi szczegółów niskiego poziomu. Uwzględnianie preferencji pojedynczego kliknięcia można wprowadzić na obu poziomach. Większość widoków, które otwierają inne obiekty, prezentuje je w strukturalnym widoku podobnym do listy. Dalszy opis dotyczyć będzie tylko widoków tego rodzaju. Gdy dany widok wyświetla obiekty w inny sposób, do obsługi pojedynczych kliknięć użyte zostaną najprawdopodobniej metody z poziomu pakietu SWT.
Gdy do prezentowania obiektów używa się przeglądarki list JFace , obsługa pojedynczego kliknięcia jest uproszczona. Zamiast metody addDoubleClickListener do wyzwalania otwierania elementów w widoku używa się metody addOpenListener. Funkcja nasłuchiwania otwierania uwzględnia bieżącą preferencję środowiska roboczego, wyzwalając zdarzenie otwierania, gdy wystąpi określone zdarzenie myszy.
W dalszym ciągu można używać metody addDoubleClickListener dla akcji innych niż otwieranie, na przykład dla rozwijania elementów w drzewie po dwukrotnym kliknięciu.
Pakiet JFace udostępnia klasę narzędziową OpenStrategy przeznaczoną do obsługi kliknięć pojedynczych i dwukrotnych na poziomie pola sterującego SWT. Klasa OpenStrategy jest konfigurowana z poziomu ogólnego okna dialogowego Preferencje w taki sposób, aby uwzględniała bieżące preferencje otwierania ustawione w środowisku roboczym. Przeglądarki JFace używają tej klasy do implementowania funkcji nasłuchiwania otwierania.
Konieczne jest utworzenie klasy OpenStrategy i powiązanie jej z danym polem sterującym SWT. Klasa OpenStrategy podłączy odpowiednie zdarzenia i zinterpretuje je zgodnie z preferencjami użytkownika. Zadaniem programisty jest dodanie funkcji nasłuchiwania otwierania do strategii, która implementuje kod dla operacji otwierania. Dzięki temu nie trzeba wiedzieć, które zdarzenie widgetu wyzwoliło zdarzenie otwierania.
OpenStrategy openHandler = new OpenStrategy(control); openHandler.addOpenListener(new IOpenEventListener() { public void handleOpen(SelectionEvent e) { // kod do obsługi zdarzenia otwierania. ... } }
Inne preferencje środowiska roboczego dotyczące otwierania (zaznacz po wskazaniu, otwórz przy użyciu klawiszy strzałek) są także obsługiwane przez klasę OpenStrategy. Oznacza to, że zaimplementowanie zachowania otwierania przy użyciu przeglądarek JFace lub klasy OpenStrategy, gwarantuje poprawne działanie.
Podczas obsługi zdarzenia otwierania należy użyć metody OpenStrategy.activateOnOpen(), aby określić, czy otwarty edytor powinien być domyślnie aktywowany. Aktywowanie edytora powoduje przejście z widoku do edytora, co może być szczególnie mylące i niepożądane w trybie pojedynczych kliknięć.