In de algemene voorkeuren kunt u aangeven of u objecten in views met één muisklik of met een dubbelklik wilt openen.
Waarom wordt er een bericht afgebeeld dat de instelling niet in alle views geldt? In de implementatie van views die door plugins worden aangeleverd, moet deze instelling expliciet worden ondersteund.
Denk eraan dat u een view kunt implementeren door SWT-besturingsfuncties te maken en standaard SWT-code te schrijven of door JFace-viewers te gebruiken voor de afhandeling van de lowlevel-gegevens. U kunt de voorkeursinstelling voor openen met één klik instellen op beide niveaus. In de meeste views waarin andere objecten worden geopend, worden de objecten in een gestructureerde lijstweergave afgebeeld. Dit soort view wordt nu nader toegelicht. Als objecten in een view op een andere manier worden afgebeeld, kunt u de concepten van het SWT-niveau waarschijnlijk gebruiken om de objecten met één muisklik te kunnen openen.
Als u een op een lijst gebaseerde JFace-viewer gebruikt voor het afbeelden van de objecten, is het inschakelen van ondersteuning voor openen met één muisklik eenvoudig. In plaats van addDoubleClickListener gebruikt u addOpenListener om het openen van items in de view te initiëren. De listeners hanteren de voorkeursinstelling van de workbench en starten de open-event zodra de opgegeven muis-event optreedt.
U kunt addDoubleClickListener nog steeds toepassen voor acties waarmee items niet worden geopend, zoals het uitvouwen van de items in een structuur bij dubbelklikken.
JFace bevat een utility-klasse, OpenStrategy, voor het afhandelen van de muisklikken (enkele klik of dubbelklik) op het SWT-besturingsniveau. OpenStrategy kunt u configureren via de algemene voorkeuren, zodat de voorkeursinstelling van de workbench wordt gehanteerd. De JFace-viewers gebruiken deze klasse voor het implementeren van de listener voor openen.
U moet een OpenStrategy maken en aan het SWT-besturingselement koppelen. De OpenStrategy-klasse herkent de bijbehorende events en voert vervolgens de actie uit die in de gebruikersvoorkeuren is opgegeven. U moet daarom een listener toevoegen aan de strategie waarmee de code voor openen wordt geïmplementeerd. Zo hoeft u geen kennis te hebben over de widget waarmee de open-event is geïnitieerd.
OpenStrategy openHandler = new OpenStrategy(control); openHandler.addOpenListener(new IOpenEventListener() { public void handleOpen(SelectionEvent e) { // code voor het afhandelen van de open-event. ... } }
De andere workbenchvoorkeuren voor openen (selecteren bij aanwijzen, openen met cursortoetsen) worden ook afgehandeld door OpenStrategy. Zo treedt het gewenste effect op als u JFace-viewers of de klasse OpenStrategy gebruikt om een gedrag voor openen te implementeren.
Bij het afhandelen van events moet u OpenStrategy.activateOnOpen() gebruiken om vast te stellen of een geopende editor standaard geactiveerd moet worden. Door een editor te activeren, wordt de focus verplaatst van de view naar de editor. Dit kan verwarrend en onwenselijk zijn als u hebt aangegeven items met één muisklik te willen openen.