In den Allgemeinen Benutzervorgaben kann der Benutzer angeben, ob Objekte in Sichten durch Einzel- oder Doppelklicken geöffnet werden sollen.
Warum wird darauf hingewiesen, dass die Benutzervorgabe nicht für alle Sichten wirksam ist? Dies liegt daran, dass von Plug-ins angebotene Sichten diese Benutzervorgabe in ihrer Implementierung explizit unterstützen müssen.
Es wurde bereits dargestellt, dass eine Sicht durch die Erstellung von SWT-Steuerelementen oder durch die Verwendung von JFace-Anzeigefunktionen zur Handhabung der Details auf niedriger Ebene implementiert werden kann. Die Einzelklickvorgabe kann auf beiden Ebenen berücksichtigt werden. Die meisten Sichten, die andere Objekte öffnen, stellen Sie in einer strukturierten, listenartigen Ansicht dar. Diese Art von Sicht wird im folgenden untersucht. Wenn Ihre Sicht Objekte auf eine andere Art und Weise darstellt, verwenden Sie wahrscheinlich Konzepte auf SWT-Ebene, um einfaches Klicken zu unterstützen.
Wenn Sie zum Anzeigen Ihrer Objekte eine listenorientierte JFace-Anzeigefunktion verwenden, ist die Unterstützung von einfachem Klicken sehr unkompliziert. Anstatt addDoubleClickListener zu verwenden, um das Öffnen von Elementen in Ihrer Sicht auszulösen, verwenden Sie addOpenListener. Die geöffnete Listener-Funktion berücksichtigt die aktuelle Workbench-Benutzervorgabe und löst den Öffnungsvorgang aus, wenn das angegebene Mausereignis eintritt.
Sie können addDoubleClickListener nach Wunsch nach wie vor für Nicht-Öffnungs-Aktionen (wie z. B. das Erweitern eines Elements in einer Baumstruktur durch Doppelklicken) verwenden.
JFace stellt eine Dienstprogrammklasse (OpenStrategy) zur Verfügung, um die Logistik für einfaches und doppeltes Klicken auf der SWT-Steuerungsebene zu verwalten. Die Klasse OpenStrategy wird über den Dialog 'Allgemein' Benutzervorgaben so konfiguriert, dass die aktuellen Benutzervorgaben der Workbench für das Öffnen berücksichtigt werden. Die JFace-Anzeigefunktionen verwenden diese Klasse zum Implementieren der Listener-Funktion für das Öffnen.
Sie müssen eine Klasse OpenStrategy und ihrer SWT-Steuerung zuordnen. Die Klasse OpenStrategy knüpft sich an die geeigneten Ereignisse an und interpretiert sie auf Basis der Benutzervorgaben. Ihre Aufgabe ist es, eine Listener-Funktion für 'open'-Ereignisse zur Strategie hinzuzufügen, die den Code für das Öffnen implementiert. Auf diese Weise bleibt Ihnen vorenthalten, welches Fensterobjektereignis das 'open'-Ereignis ausgelöst hat.
OpenStrategy openHandler = new OpenStrategy(control); openHandler.addOpenListener(new IOpenEventListener() { public void handleOpen(SelectionEvent e) { // code to handle the open event. ... } }
Die anderen Workbench-Benutzervorgaben für das Öffnen (bei Kurzhilfe auswählen, Öffnen mit den Pfeiltasten) werden ebenfalls durch die Klasse OpenStrategy verwaltet. Dies bedeutet, dass der "korrekte Vorgang" ausgeführt wird, wenn Sie JFace-Anzeigefunktionen oder die Klasse OpenStrategy zum Implementieren von Öffnungsverhalten verwenden.
Beim Verwalten eines Öffnungsereignisses sollten Sie OpenStrategy.activateOnOpen() verwenden, um zu ermitteln, ob ein geöffneter Editor standardmäßig aktiviert werden sollte. Beim Aktivieren eines Editors wird der Fokus von der Sicht auf den Editor versetzt, was besonders im Einzelklickmodus zu unerwünschter Verwirrung führen kann.