org.eclipse.ui.menus

Ansvarsfraskrivelse Udvidelsespunktet org.eclipse.ui.menus i Eclipse 3.2 er kun delvist implementeret. Aktuelt understøtter det ikke definitioner af menuer, værktøjslinjer eller udvidelser - den eksisterende bidragsudvidelse kan anvendes til disse. Det er imidlertid den eneste mekanisme, hvorigennem trim-widgets kan leveres til arbejdsbænken. I dette afsnit vises, hvordan du bruger den til dette formål.

En trim-widget er en kontrol, der placeres på et sted kaldet et trimområde på de ydre grænser af vinduet Arbejdsbænk. Det mest almindelige eksempel er en generisk statuslinje, som næste alle GUI'er placerer nederst i vinduet. Udvidelsespunktet org.eclipse.ui.menus giver plugins mulighed for at tilføje oversigter til arbejdsbænken. Plugins, der bidrager med en trim, registrer trim'en i deres plugin.xml-fil og leverer konfigurationsoplysninger om denne trim, f.eks. om dens implementering af klasser, trim-gruppen (trim-linjen), som den er placeret i, og layoutoplysninger, f.eks. om trim'en skal bruge ekstra plads i dens layout i trim-området.

Grænsefladen for leveret trim er defineret i IWorkbenchWidget, men plugins kan og opfordres til at vælge at udvide klassen AbstractWorkbenchTrimWidget i stedet for at implementere grænsefladen fra begyndelsen.

I eksemplet Readme-værktøj har vi leveret en rimelig enkel trim-widget, der blot viser en streng og en indikation af, på hvilken side trim'en er er fastgjort.

Vi ser nærmere på definitionen af udvidelsespunktet, der anvendes til at bidrag til dette stykke trim:

Det første afsnit af udvidelsen, gruppedefinitionen, definerer simpelthen gruppens id og en placering for gruppen i starten af statusgruppen, dvs. i begyndelsen af bunden af trimområdet. Det andet afsnit, widget-definitionen, angiver implementeringsklassen for den pågældende widget og definerer placeringen af denne i den tidligere definerede gruppe.

Bemærk, at i begge tilfælde er linjernes type defineret som trim, som er den eneste type, der aktuelt understøttes.

Når du én gang har installeret det aktuelle eksempel på Readme-værktøj, bør du se på implementeringen af ReadmeTrimWidgets fyldmetode. Den adskiller sig fra andre fyldmetoder, der anvendes til at tilføje widgets til værktøjslinjer eller menuer i den, fordi trim kan trækkes fra et område til et andet. Den overfører også den side, som trim er placeret i og tillader den, der implementerer, at tilpasse fremvisningen af en widget ud fra en placering ved at ændre retning osv. Den aktuelle implementering ændrer simpelthen den viste tekst for at afspejle den aktuelle placering. Bemærk også, hvordan livscyklen 'dispose/fill' behandles. Der er gentagne kald til dispose og fill genereret af arbejdsbænkændringer, f.eks. ændring af perspektiv eller trækning af trim til en ny side.

En ting, der ikke afspejles i dette eksempels kode er afhængigheden af trims layoutstyring i trim'ens korrekte implementering af widget-kontrollens størrelsesmetode. En widget skal kunne beregne og returnere sin foretrukne størrelse, da den anvendes gennem hele layoutstyringens implementering til at bestemme, f.eks. hvor meget plads der er nødvendig for et bestemt trimområde. Der er oplysninger i SWT-dokumentationen om, hvordan computeSize implementeres korrekt.