Obecné předvolby uživatelům umožňují určit, zda mají pohledy své objekty otevírat na základě jednoduchého nebo dvojitého klepnutí myší.
Proč upozornění, že tato předvolba nefunguje u všech pohledů? Protože pohledy poskytované moduly plug-in musí tuto předvolbu explicitně podporovat ve svých implementacích.
Připomeňme si, že pohled může být implementován vytvořením SWT obslužných prvků a zápisem standardního SWT kódu, nebo použitím prohlížečů JFace pro zpracování podrobností nízké úrovně. Akceptování předvolby jednoho klepnutí lze provést na kterékoli úrovni. Většina pohledů, které otevírají jiné objekty, tyto objekty prezentuje ve strukturovaném pohledu ve formě seznamu. Na tento druh pohledu se zde zaměříme . Pokud váš pohled zobrazuje objekty jiným způsobem, pravděpodobně budete pro podporu jednoho klepnutí používat koncepty úrovně SWT.
Pokud pro prezentaci vašich objektů používáte prohlížeč JFace zaměřený na seznam, podpora jednoho klepnutí je samozřejmá. Namísto použití addDoubleClickListener k otevření položek ve vašem pohledu použijte addOpenListener. Listener otevření dodržuje aktuální předvolby pracovní plochy a spouští událost otevření, pokud dojde k určené události myši.
Je možné, že si přejete použít addDoubleClickListener pro akce bez otevření, jako například rozbalení položek ve stromu při dvojím klepnutí.
JFace poskytuje obslužnou třídu OpenStrategy pro práci s logistikou jednoho a dvojího klepnutí na úrovni SWT ovládání. Třída OpenStrategy se konfiguruje pomocí dialogového okna Obecné předvolby tak, aby byla dodržena aktuální předvolba otevření pracovní plochy. Ve skutečnosti prohlížeče JFace tuto třídu používají k implementaci listeneru otevření.
Je třeba vytvořit třídu OpenStrategy a přiřadit ji k vašemu SWT obslužnému prvku. OpenStrategy zapojí příslušné události a interpretuje je na základě předvoleb uživatele. Vaším úkolem je přidat listener otevření do strategie, která implementuje kód pro stav otevření. Tímto způsobem nezjistíte, která událost prvku widget spustila událost otevření.
OpenStrategy openHandler = new OpenStrategy(control); openHandler.addOpenListener(new IOpenEventListener() { public void handleOpen(SelectionEvent e) { // kód pro zpracování události otevření. ... } }
Také další předvolby pracovní plochy pro stav otevření (zvolit při umístění myši, otevřít pomocí kurzorových kláves) jsou ovládány pomocí OpenStrategy. To znamená, že "správná událost" nastane, pokud k implementaci chování ve stavu otevření použijete prohlížeče JFace, nebo tříduOpenStrategy.
Při manipulaci s událostí otevření byste měli použít OpenStrategy.activateOnOpen() a pomocí ní určit, zda by se měl ve výchozím nastavení aktivovat editor otevření. Aktivace editoru změní zaměření z pohledu na editor, a to může být v režimu jednoho klepnutí obzvláště nepříjemné a nežádoucí.