Enquanto os aspectos de "pacote configurável" de um plug-in podem ser interessantes para os plug-in e as ferramentas do tempo de execução, é muito mais comum que um plugin esteja preocupado com quais pontos de extensão foram definidos pelos plug-ins e quais extensões foram constribuídas pelos plug-ins. Essas informações são fornecidas pelo registro de extensão da plataforma, IExtensionRegistry.
Por que um plug-in pode desejar saber quais extensões estão presentes? Um exemplo concreto ajudará a mostrar a necessidade dessas informações e o protocolo para obtê-las.
Chame novamente o diálogo Mostrar Visualização do workbench que mostra todas as visualizações disponíveis que foram instaladas na plataforma.
Sabemos que os nomes da categoria e os nomes da visualização de todas as visualizações contribuídas são especificados no arquivo plugin.xml para qualquer plug-in que contribui uma extensão para org.eclipse.ui.views. Mas como o workbench localiza essas informações? A partir do registro de extensão da plataforma. O seguinte código é um fragmento simplificado com base na implementação do workbench do diálogo Mostrar Visualização:
... 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 ...
Vemos acima que o registro pode ser obtido a partir da classe Plataforma. O protocolo em IExtensionRegistry é utilizado para localizar o ponto de extensão denominado org.eclipse.ui.views. As informações no registro sobre os pontos de extensão específicos ou as extensões podem ser localizadas utilizando o protocolo definido em IExtensionRegistry, IExtensionPoint, e IExtension. O javadoc para essas classes fornece informações detalhadas sobre o protocolo de registro.
Assim que a definição de extensão de interesse for localizada, o protocolo em IConfigurationElement pode ser utilizado para examinar os atributos individuais de uma extensão.