Vi har sett at de ulike aspektene ved bunter for en plugin-modul kan være interessante i forbindelse med plugin-moduler og verktøy for kjøretid, men det er langt vanligere at en plugin-modul trenger informasjon om hvilke utvidelsespunkter som er definert av plugin-moduler og hvilke utvidelser de bidrar med. Denne informasjonen oppgis av plattformens utvidelsesregister, IExtensionRegistry.
Hvorfor er det viktig at en plugin-modul har informasjon om hvilke utvidelser som finnes? Et konkret eksempel kan vise behovet for denne informasjonen og hvilken protokoll som brukes for å hente den.
I dialogboksen Vis visning i arbeidsbenken ser du alle tilgjengelige visninger som er installert i plattformen.
Vi vet at kategorinavnene og visningsnavnene på alle de oppgitte visningene angis i filen plugin.xml for alle plugin-moduler som bidrar med en utvidelse for org.eclipse.ui.views. Men hvordan får arbeidsbenk tilgang til denne informasjonen? Fra plattformens utvidelsesregister. Følgende kode er en forenklet snutt basert på arbeidsbenkimplementeringen av dialogboksen Vis visning:
... IExtensionRegistry registry = Platform.getExtensionRegistry(); IExtensionPoint point = registry.getExtensionPoint("org.eclipse.ui.views"); if (point == null) return; IExtension[] extensions = point.getExtensions(); for (int i = 0; i < extensions.length; i++) readExtension(extensions[i]); //get the information about each extension ...
Som vi ser kan registeret hentes fra Platform-klassen. Protokollen i IExtensionRegistry brukes til å finne utvidelsespunktet org.eclipse.ui.views. Du finner informasjonen i registeret om bestemte utvidelsespunkter eller utvidelser ved å bruke protokollen som er definert i IExtensionRegistry, IExtensionPoint og IExtension. Javadoc for disse klassene inneholder detaljert informasjon om registerprotokollen.
Når det er funnet en utvidelsesdefinisjon av interesse, kan protokollen i IConfigurationElement brukes til å undersøke de enkelte attributtene i en utvidelse.