Respektera stöd för enkelklickning

Via de allmänna inställningarna kan användarna ange huruvida vyer ska öppna sina objekt vid enkel- eller dubbelklick.

Allmänna "Öppningsläge"-inställningar med reservation för att inställningen inte gäller i alla vyer

Varför en reservation för att denna inställning inte fungerar i alla vyer?  Eftersom vyer som bidras med av insticksprogram explicit måste stödja denna inställning i implementationen.

Du kommer nog ihåg att en vy kan implementeras genom att skapa SWT-kontroller och skriva vanlig SWT-kod, eller genom att använda JFace viewers till att hantera lågnivådetaljerna.  Du kan ange att hänsyn ska tas till enkelklicksinställningen på endera nivån.  De flesta vyer som öppnar andra objekt presenterar den i en strukturerad, listlik vy.  Vi ska fokusera på den typen av vy för tillfället.  Om din vy visar objekt på ett annat sätt kommer du sannolikt att använda SWT-nivåbegreppen för att stödja enkelklick.

Enkelklick i JFace-visningsprogram

Om du använder ett JFace-listorienterat visningsprogram till att presentera dina objekt är stöd för enkelklick en rättfram process.  Istället för att användaaddDoubleClickListener till att utlösa öppningen av objekt i vyn använder du addOpenListener.  Öppningslyssnaren tar hänsyn till den aktuella arbetsmiljöinställningen och avfyrar öppningshändelsen när den angivna mushändelsen inträffar.

Du kan fortfarande använda addDoubleClickListener för ej öppnande åtgärder, t.ex. expandering av objekten i ett träd vid dubbelklick.

Enkelklick i SWT-kontroller

JFace tillhandahåller en verktygsklass, OpenStrategy, som hanterar logistiken för enkel- och dubbelklickning på SWT-kontrollnivå.  OpenStrategy konfigureras i dialogrutan Allmänna inställningar så att hänsyn tas till den aktuella öppningsinställningen i arbetsmiljön. Faktum är att JFace-visningsprogram använder den här klassen till att implementera öppningslyssnaren. 

Du måste skapa en OpenStrategy och koppla den till din SWT-kontroll.  OpenStrategy ansluter till tillhörande händelser och tolkar dem baserat på användarinställningarna.  Ditt jobb är att lägga till en öppningslyssnare till den strategi som implementerar koden för öppning.  På det här sättet avskärmas du från vetskapen om vilken kontrollhändelse som utlöste öppningshändelsen.

OpenStrategy openHandler = new OpenStrategy(control);
openHandler.addOpenListener(new IOpenEventListener() {
	public void handleOpen(SelectionEvent e) {
	// code to handle the open event.
	...
	}
}

Även de andra arbetsmiljöinställningarna för öppning (välj när pekaren står över ett objekt, öppna med piltangenter) hanteras avOpenStrategy.  Det betyder att "rätt sak" inträffar om du använder JFace-visningsprogram eller klassen OpenStrategy till att implementera öppningsbeteende.

Aktivera redigerare vid öppning

När du hanterar en öppningshändelse bör du använda OpenStrategy.activateOnOpen() till att fastställa huruvida en öppnad redigera ska aktiveras som standard.  Om du aktiverar en redigerare växlas fokus från vyn till redigeraren vilket kan vara mycket förvirrande och inte önskvärt i enkelklicksläge.