2011-11-01 22 views
0

我想查找在com.example.plugin中聲明的org.example.extension.point的所有擴展名。有沒有比做更有效率的方法在Eclipse RCP中獲取特定插件配置元素的有效方法

List<IConfigurationElement> result = new ArrayList<IConfigurationElement>(); 
IConfigurationElement[] allConfigElements = 
    Platform.getExtensionRegistry.getConfigurationElementsFor("org.example.extension.point"); 
for (IConfigurationElement ice : allConfigElements) { 
    if (ice.getDeclaringExtension().getNamespaceIdentifier() == "com.example.plugin") 
     result.add(ice); 
} 
return result; 

+0

另一種方法是先看看IContributor,然後篩選擴展點ID ... –

+0

恐怕我不會看不懂你的意思,你能提供一些示例代碼嗎? –

回答

2

不,沒有其他(更高效)的方法(這是不夠簡單嗎?)。此外,我會使用ice.getContributor().getName()而不是ice.getDeclaringExtension().getNamespaceIdentifier()

我真的很想知道爲什麼要過濾特定貢獻者。 - 我的意思是,如果您必須「知道」撰稿人爲什麼使用擴展點?擴展點的主要目的是使用控制反轉;使用擴展點的主要特點是不知道的貢獻者。沒有冒犯,但可能你正在使用擴展點的方式,他們不是爲了...

+0

我需要顯示一個包含它們提供的包和擴展的樹。 –

+2

然後看看Eclipses「插件註冊表」視圖是如何實現的,請參閱org.eclipse.pde.internal.runtime.registry.RegistryBrowser類。這個視圖顯示了一個包含所有插件及其擴展的樹。 –