Merk: Utvidelsespunktet org.eclipse.ui.menus
er i Eclipse 3.2 bare delvis implementert. Det støtter ikke meny- eller verktøylinjedefinisjoner
eller -utvidelser (eksisterende leveringsutvidelser bør brukes for disse). Det er imidlertid den eneste mekanismen for å levere
kuttings-widgeter til arbeidsbenken. Denne seksjonen viser hvordan du bruker den til dette formål.
En kuttings-widget er en kontroll som blir plassert et sted (kalles kuttingsområde) på yttergrensen av arbeidsbenkvinduet. Det vanligste eksempelet er den generiske statuslinjen, som nesten alle grafiske brukergrensesnitt plasserer nederst i vinduet. Utvidelsespunktet org.eclipse.ui.menus tillater at plugin-moduler legger til visninger på arbeidsbenken. Plugin-moduler som bidrar med kutting, må registrere kuttingen i sin plugin.xml-fil og oppgi konfigurasjonsopplysninger om kuttingen, for eksempel den implementeringsklasse, kuttingsgruppe (kuttingslinje) som den ligger i, og layoutinformasjon som f.eks. om kuttingen ønsker å bruke tilgjengelig "ekstraplass" under sin layout i kuttingsområdet.
Grensesnittet for levert kutting er definert i IWorkbenchWidget, men plugin-moduler kan (og oppmuntres til å) velge å utvide klassen AbstractWorkbenchTrimWidget snarere enn å implementere grensesnittet fra grunnen av.
For readmetool-eksempelet har vi levert en ganske naiv kuttings-widget som bare viser en streng og en angivelse av hvilken side kuttingen er forankret til.
La oss ta en titt på utvidelsespunktets definisjon , som brukes til å levere denne kuttingen:
Den første seksjonen av utvidelsen (gruppedefinisjonen) definerer bare IDen til gruppen og definerer en plassering for gruppen som begynnelsen av statusgruppen (dvs. begynnelsen av nedre kuttingsområde). Den andre seksjonen (widget-definisjonen) spesifiserer implementeringsklasse for widgeten og plassering for widget som innen den tidligere definerte gruppen.
Merk at linjen type i begge tilfeller er definert som kutting (som er den eneste typen som støttes for tiden).
Når du har installert selve readmetool
-eksempelet, bør du ta en titt på implementeringen av metoden
ReadmeTrimWidget's fill
. Den er forskjellig fra den andre fill
-metodene som brukes når widgeter legges til på verktøylinjer eller menyer,
for siden kuttingen kan dra fra ett område til et annet, passerer den også siden som kuttingen blir plassert i, slik at implementatoren kan skreddersy widgetens visning
ut fra plassering ved å endre retning osv.
Gjeldende implementering endrer bare den viste teksten for å gjenspeile gjeldende plassering. Merk også hvordan livssyklusen
'dispose'/'fill' håndteres. Det vil bli gjentatte kall til dispose
og fill
generert av arbeidsbenkendringer (dvs. endring av
perspektiver eller draing av kuttingen til en annen side).
En ting som ikke gjenspeiles i dette eksempelets kode, er hvor
avhengig kuttings Layoutstyrer er av kuttingens faktiske implementering av widgetkontrollens
computeSize
-metode. Widgeten må kunne beregne og returnere sin foretrukne størrelse, siden denne brukes gjennom hele layoutstyringens implementering
for å bestemme, for eksempel, hvor mye plass som trengs for et bestemt kuttingsområde.
I SWT-dokumentasjonen finner du merknader om hvordan du implementerer 'computeSize
riktig.