org.eclipse.ui.menus

Förbehåll: Utökningspunkten org.eclipse.ui.menus i Eclipse 3.2 är endast delvis implementerad. Den har för närvarande inte funktioner för definitioner eller utökningar för menyer och verktygsfält (befintliga tilläggsutökningar bör användas för dem). Det är dock den enda mekanism som kan användas till att lägga till gränssnittskontroller för trimning i arbetsmiljön. I det här avsnittet beskrivs hur du använder den för det ändamålet.

En gränssnittskontroll för trimning är en kontroll som placeras på en plats (trimningsområde) i den yttre delen av arbetsmiljöfönstret. Det vanligaste exemplet är den generiska statusraden som nästan alla GUI:er placerar längs med fönstrets nederkant. Utökningspunkten org.eclipse.ui.menus gör det möjligt för insticksprogram att lägga till vyer i arbetsmiljön. Insticksprogram som bidrar med en trimning måste registrera trimningen i filen plugin.xml och tillhandahålla konfigurationsinformation om trimningen, till exempel implementationsklassen för den, den trimningsgrupp (trimningsfält) som den ingår i och layoutinformation, till exempel om tillgängligt "extra" utrymme ska användas för layouten för trimningen i trimningsområdet.

Gränssnittet för tillagda trimningar definieras i IWorkbenchWidget men insticksprogram kan utöka klassen AbstractWorkbenchTrimWidget i stället för att implementera gränssnittet från början (vilket vi rekommenderar).

I exemplet med Readme-verktyget har vi lagt till en ganska enkel trimningsgränssnittskontroll som bara visar en sträng och en indikation om till vilken sida av trimningen som dockningen görs.

Låt oss ta en titt på den utökningspunktsdefinition som används till att lägga till den här trimningen:

Det första avsnittet i utökningen (definitionen "group") definierar helt enkelt ID:t för gruppen och början av gruppen "status" som "location" för gruppen (dvs. i början av det nedre trimningsområdet). Det andra avsnittet (definitionen "widget") anger "class" för implementationen av gränssnittskontrollen och definierar "location" för gränssnittskontrollen som att den ska placeras i den tidigare definierade gruppen.

Observera att i båda fallen definieras "type" för fältet som trim (som är den enda typ som för närvarande kan användas).

När du har installerat det faktiska readmetool-exemplet kan du visa implementationen av metoden ReadmeTrimWidget's fill. Den skiljer sig från de andra fill-metoderna som används när du lägger till gränssnittskontroller i verktygsfält eller på menyer. Det beror på att eftersom en trimning kan dras från ett område till ett annat passeras även den "sida" som trimningen placeras i, vilket gör det möjligt för implementeringsfunktionen att anpassa visningen för gränssnittskontrollen baserat på dess plats genom att ändra orientering osv. Den aktuella implementationen ändrar helt enkelt den text som visas så att den återspeglar den aktuella platsen. Lägg även märke till hur livscykeln för dispose/fill hanteras. Det förekommer upprepade anrop till dispose och fill som genereras av ändringar i arbetsmiljön (dvs. ändring av perspektiv eller flytt av trimningen till en ny sida).

En sak som inte återspeglas i den här exempelkoden är att layouthanteraren för trimningen förlitar sig på att trimningen implementeras på rätt sätt av metoden computeSize för gränssnittskontrollen. Det måste vara möjligt för gränssnittskontrollen att beräkna och returnera önskad storlek eftersom den används i hela implementationen för layouthantering till att ange till exempel hur mycket utrymme som krävs för ett visst trimningsområde. Mer information om hur du implementerar computeSize på rätt sätt finns i SWT-dokumentation.