延伸點和登錄

外掛程式的「軟體組」外觀可能是執行時期外掛程式和執行時期工具所感興趣的,外掛程式常常會關心外掛程式已定義哪些延伸點以及外掛程式提供了哪些延伸。這項資訊是由平台延伸登錄 IExtensionRegistry 所提供。

為什麼外掛程式想要知道有哪些延伸?利用具體的範例有助於告訴您這項資訊的必要性以及取得資訊的協定。

請回想顯示平台上已安裝的所有可用視圖的工作台顯示視圖對話框。

顯示 Hello 項目的視圖

我們知道在提供延伸給 org.eclipse.ui.views 的外掛程式的 plugin.xml 檔案中指定了所有提供視圖的種類名稱和視圖名稱。但是工作台要如何知道這項資訊呢?答案是從平台延伸登錄。下列程式碼是根據顯示視圖對話框的工作台實作方式而簡化的片段︰

	...
	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]);  //取得每個延伸的相關資訊
	...

我們從以上看到可以從 Platform 類別取得登錄。IExtensionRegistry 中的協定用來尋找名稱為 org.eclipse.ui.views 的延伸點。使用 IExtensionRegistryIExtensionPointIExtension 中定義的協定可以尋找在登錄中有關特定延伸點或延伸的資訊。這些類別的 Javadoc 提供了關於登錄協定的詳細資訊。

找到想要的延伸定義之後,即可使用 IConfigurationElement 中的協定來檢查延伸的個別屬性。