Body rozšíření a registr

Zatímco "balíkové" aspekty plug-in mohou být zajímavé pro běhový modul plug-in a pro běhové nástroje, mnohem častěji se modul plug-in týká toho, jaké body rozšíření jsou definovány jednotlivými moduly plug-in a jakými rozšířeními tyto moduly přispívají. Tyto informace poskytuje registr rozšíření platformy, IExtensionRegistry.

Proč může modul plug-in zajímat, jaká rozšíření jsou přítomná? Na konkrétním příkladu si ukážeme potřebu těchto informací a protokol k jejich získání.

Připomeňme si dialogové okno pracovní plochy Zobrazit pohled, které obsahuje všechny dostupné pohledy, jež jsou v rámci platformy nainstalovány.

Dialogové okno Zobrazit pohled s položkou Hello

Víme, že názvy kategorií a názvy všech poskytovaných pohledů jsou uvedeny v souboru plugin.xml pro každý modul plug-in, který do pohledů přispívá nějakým rozšířením org.eclipse.ui.views. Jak ale pracovní prostor tyto informace zjistí? Z registru rozšíření platformy. Následující ukázka obsahuje zjednodušený úsek kódu v implementaci pracovní plochy dialogového okna Zobrazit pohled:

	...
	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]);  // získat informace o každém rozšíření
	...

Z výše uvedeného vidíme, že registr je možno získat ze třídy Platform. Protokol v registru IExtensionRegistry slouží k nalezení bodu rozšíření s názvem org.eclipse.ui.views. Informace v registru o konkrétních bodech rozšíření nebo rozšířeních lze nalézt za použití protokolu definovaného v IExtensionRegistry, IExtensionPoint, a IExtension. Dokumentace javadoc pro tyto třídy obsahuje podrobné informace o protokolu registru.

Jakmile je nalezena požadovaná definice rozšíření, je možno pomocí protokolu v IConfigurationElement zkoumat jednotlivé atributy rozšíření.