自分のプラグインにExtentionポイントを定義する

さらに、バージョン管理が便利になるEclipseの機能は、Extentionポイントだ。
こえれは、普段、Eclipseプラグインを開発する人は「ActionSet」などというものをplugin.xmlに書いていると思うが、こういう追加できるものを自分のプラグインにもつけてしまおうというもの。

まずは、plugin.xmlの「Extention Points」に次のように設定する。
設定内容は、簡単でIDとNameだけです。あと、Schemaファイルが自動的に作られます。

Schemaファイルには、自作Extention Pointの形式を定義します。
ここで気をつけなくてはいけないのは、右上のところのElement Grammarで、toolsタグは、extentionの子供だと定義し忘れるとはまります。

あとは、通常通り、そのExtentionPointを使って拡張するプラグインのplugin.xmlのExtentionsにウィザードを使って設定するだけ。

あとは、


IExtensionRegistry extReg = Platform.getExtensionRegistry();
IExtensionPoint extPoint = extReg.getExtensionPoint("jp.crossfire.hyperdb.editor.dbdependent");
IExtension extArray[] = extPoint.getExtensions();
for(int i = 0; i < extArray.length; i++){
IConfigurationElement elements[] = extArray[i].getConfigurationElements();
for(int j = 0; j < elements.length; j++){
try {
// 小タグのtoolsがelements[j]にあたるので、属性をクラス化する
HyperDbActionBase action
= (HyperDbActionBase)elements[j].createExecutableExtension("action");
action.setProject(project);
action.setView(viewer);
action.setSelectedObj(selectedObj);
manager.add(action);
} catch (CoreException e) {
EditorPlugin.handleError(e.getMessage(),e);
}
}
}

のように、ExtentionPointを提供する側にコード書けばOKです。