De generelle Indstillinger giver brugerne mulighed for at angive, om oversigterne skal åbne deres objekter med et enkeltklik eller et dobbeltklik.
Hvorfor er der forbehold for, at indstillingen ikke virker i alle oversigter? Fordi de oversigter, som plugins bidrager med, eksplicit skal understøtte denne indstilling i deres implementering.
Husk, at en oversigt kan implementeres ved at oprette SWT-kontroller og skrive standard-SWT-kode eller ved at bruge JFace-fremvisere til at behandle detaljerne på laveste niveau. Overholdelsen af indstillingen for enkeltklik kan udføres på begge niveauer. De fleste oversigter, som åbner andre objekter, viser dem i en struktureret, listelignende oversigt. Vi vil fokusere på denne oversigtstype. Hvis din oversigt viser objekter på en anden måde, skal du formentlig bruge begreberne på SWT-niveau til at understøtte enkeltklik.
Hvis du bruger en Listeorienteret JFace-fremviser til at vise objekterne, er det let at understøtte enkeltklik. Brug addOpenListener til at åbne elementerne i oversigten i stedet for at bruge addDoubleClickListener. Åbningslytteren overholder de aktuelle indstillinger for arbejdsbænken og starter åbningsaktiviteten, når den angivne museaktivitet forekommer.
Du kan stadig have brug for addDoubleClickListener til funktioner, som ikke skal åbnes, som f.eks. udvidelse af elementerne i en træstruktur med et dobbeltklik.
JFace stiller funktionsklassen OpenStrategy til rådighed til håndtering af logistikken for enkelt- og dobbeltklik på SWT-kontrolniveau. OpenStrategy konfigureres med dialogboksen Indstillinger under Generelt, så den overholder de aktuelle åbningsindstillinger for arbejdsbænken. JFace-fremviserne bruger denne klasse til at implementere åbningslytteren.
Du skal oprette en OpenStrategy og knytte den til dit SWT-kontrol. OpenStrategy tilslutter de relevante aktiviteter og fortolker dem baseret på brugerindstillingerne. Dit arbejde er at tilføje en åbningslytter til den strategi, som implementerer koden til åbning. På den måde behøver du ikke at vide, hvilken widget-aktivitet, der udløste åbningsaktiviteten.
OpenStrategy openHandler = new OpenStrategy(control); openHandler.addOpenListener(new IOpenEventListener() { public void handleOpen(SelectionEvent e) { // code to handle the open event. ... } }
De øvrige arbejdsbænksindstillinger for åbning (Vælg, når der peges eller Åbn ved brug af piltaster) håndteres også af OpenStrategy. Det betyder, at der sker "det rigtige", hvis du bruger JFace-fremvisere eller klassen OpenStrategy til at implementere funktionsmåde for åbning.
Når du håndterer en åbningsaktivitet, skal du bruge OpenStrategy.activateOnOpen() til at afgøre, om en åbnet editor skal aktiveres som standard. Når en editor åbnes, skiftes der fokus fra oversigten til editoren, hvilket kan være forvirrende og uønsket i enkeltklikstilstand.