Eclipse/プラグイン開発のTIPS集/拡張ポイントをつくる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
#contents
**そもそも拡張ポイントって [#oc4dc566]
Eclipseのプラグイン作成をするときは、すでに与えられた拡張...
ビューを作るときはorg.eclipse.ui.viewsを使いながら、さら...
さて、Eclipseには既存の箇所(拡張ポイント)に登録する側では...
<extension
point="nu.mine.kino.log4j.log4jConfig">
<log4jConfig filename="lib/log4j.xml"/>
</extension>
と書いておくと
DOMConfigurator.configure(new File([Plugin_Directory],"l...
を勝手にやってくれる、なんて事をすることができます。
これはorg.eclipse.ui.viewsに内容をを書いておくとIViewPart...
**実際にやってみる [#z1726fe9]
さて、実際に自分で拡張ポイントを作成するには
-plugin.xmlのextension-point タグで拡張ポイントのIDやスキ...
-スキーマファイルでタグのスキーマを定義する
-登録された情報を取得して、クラスをロードするなどの処理を...
-ユーザに使ってもらう
という手順になります。
まず拡張ポイントを新規に作るには、extension-pointタグを使...
***plugin.xml(抜粋) [#ffb92c67]
<plugin
id="nu.mine.kino.log4j"
.........
</requires>
↓ 拡張ポイントの作成
<extension-point id="log4jConfig" name="Log4j"
schema="schema/log4jConfig.exsd"/>
↓ 作った拡張ポイントに登録
<extension
point="nu.mine.kino.log4j.log4jConfig">
<log4jConfig filename="lib/log4j.xml"/>
</extension>
</plugin>
実際に定義している箇所は
<extension-point id="log4jConfig" name="Log4j"
schema="schema/log4jConfig.exsd"/>
ですが、これで定義した拡張ポイントIDはnu.mine.kino.log4j....
拡張ポイントの定義は以上です。次に登録された情報(ここでは...
public void start(BundleContext context);
にしました((ここが適切かどうかはよくわからんです))。
***実際の処理を記述する [#ib348ef8]
実際の処理は以下のようにしてみました。
public void start(BundleContext context) throws Exceptio...
super.start(context);
// プラグインのレジストリを取得
IPluginRegistry registry = Platform.getPluginRegistry();
// レジストリから拡張ポイントをIDを使って取得
IExtensionPoint point = registry
.getExtensionPoint("nu.mine.kino.log4j.log4jCo...
// 拡張ポイントをつかって、拡張クラス(の配列)を取得
IExtension[] extensions = point.getExtensions();
// ↑ これはこのプラグインの記述だけでなく、
// 他のプラグインが書いてくれた nu.mine.kino.log4j.log...
// 拡張ポイントも含まれている。
for (int i = 0; i < extensions.length; i++) {
// ↓このなかでそれぞれのクラスローダを取得し、それ...
// Log4jを初期化している。
loadExtension(extensions[i]);
}
}
長々とやって、ようやく IExtension[] extensions = point.ge...
<extension point="nu.mine.kino.log4j.log4jConfig">
に対する処理を記述しました。
***extension pointタグごとの処理 [#de0c253a]
前述通りあとは
<extension point="nu.mine.kino.log4j.log4jConfig">
<log4jConfig filename="lib/log4j.xml"/>
</extension>
に対する処理を書けば終わりです。
----
***TIPS [#yec4b91d]
たとえば拡張ポイントへ登録を
<extension
point="kino.plugin.samples.dictionary">
<dictionary name="stock.dat"/>
<dictionary name="stock2.dat"/>
</extension>
<extension
point="kino.plugin.samples.dictionary">
<dictionary name="stock3.dat"/>
</extension>
と書くことができるとき、
IPluginRegistry registry = Platform.getPluginRegistry();
IExtensionPoint point = registry.getExtensionPoint("kino...
IExtension[] extensions = point.getExtensions();
<-ここですでに他のプラグインの分も勘定されてる。
// このforは extensionタグ の繰り返し
for (int i = 0; i < extensions.length; i++) {
IConfigurationElement[] elements = extensions[i]
.getConfigurationElements();
// このforは dictionary の繰り返し
for (int j = 0; j < elements.length; j++) {
System.out.println(elements[j].getAttribute("nam...
}
}
----
この記事は
#vote(おもしろかった[12],そうでもない[0])
-このやり方でやれば、各プラグインのクラスローダでDOMConfi...
-参考~ http://www.atmarkit.co.jp/fjava/rensai2/eclipse02_...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
#contents
**そもそも拡張ポイントって [#oc4dc566]
Eclipseのプラグイン作成をするときは、すでに与えられた拡張...
ビューを作るときはorg.eclipse.ui.viewsを使いながら、さら...
さて、Eclipseには既存の箇所(拡張ポイント)に登録する側では...
<extension
point="nu.mine.kino.log4j.log4jConfig">
<log4jConfig filename="lib/log4j.xml"/>
</extension>
と書いておくと
DOMConfigurator.configure(new File([Plugin_Directory],"l...
を勝手にやってくれる、なんて事をすることができます。
これはorg.eclipse.ui.viewsに内容をを書いておくとIViewPart...
**実際にやってみる [#z1726fe9]
さて、実際に自分で拡張ポイントを作成するには
-plugin.xmlのextension-point タグで拡張ポイントのIDやスキ...
-スキーマファイルでタグのスキーマを定義する
-登録された情報を取得して、クラスをロードするなどの処理を...
-ユーザに使ってもらう
という手順になります。
まず拡張ポイントを新規に作るには、extension-pointタグを使...
***plugin.xml(抜粋) [#ffb92c67]
<plugin
id="nu.mine.kino.log4j"
.........
</requires>
↓ 拡張ポイントの作成
<extension-point id="log4jConfig" name="Log4j"
schema="schema/log4jConfig.exsd"/>
↓ 作った拡張ポイントに登録
<extension
point="nu.mine.kino.log4j.log4jConfig">
<log4jConfig filename="lib/log4j.xml"/>
</extension>
</plugin>
実際に定義している箇所は
<extension-point id="log4jConfig" name="Log4j"
schema="schema/log4jConfig.exsd"/>
ですが、これで定義した拡張ポイントIDはnu.mine.kino.log4j....
拡張ポイントの定義は以上です。次に登録された情報(ここでは...
public void start(BundleContext context);
にしました((ここが適切かどうかはよくわからんです))。
***実際の処理を記述する [#ib348ef8]
実際の処理は以下のようにしてみました。
public void start(BundleContext context) throws Exceptio...
super.start(context);
// プラグインのレジストリを取得
IPluginRegistry registry = Platform.getPluginRegistry();
// レジストリから拡張ポイントをIDを使って取得
IExtensionPoint point = registry
.getExtensionPoint("nu.mine.kino.log4j.log4jCo...
// 拡張ポイントをつかって、拡張クラス(の配列)を取得
IExtension[] extensions = point.getExtensions();
// ↑ これはこのプラグインの記述だけでなく、
// 他のプラグインが書いてくれた nu.mine.kino.log4j.log...
// 拡張ポイントも含まれている。
for (int i = 0; i < extensions.length; i++) {
// ↓このなかでそれぞれのクラスローダを取得し、それ...
// Log4jを初期化している。
loadExtension(extensions[i]);
}
}
長々とやって、ようやく IExtension[] extensions = point.ge...
<extension point="nu.mine.kino.log4j.log4jConfig">
に対する処理を記述しました。
***extension pointタグごとの処理 [#de0c253a]
前述通りあとは
<extension point="nu.mine.kino.log4j.log4jConfig">
<log4jConfig filename="lib/log4j.xml"/>
</extension>
に対する処理を書けば終わりです。
----
***TIPS [#yec4b91d]
たとえば拡張ポイントへ登録を
<extension
point="kino.plugin.samples.dictionary">
<dictionary name="stock.dat"/>
<dictionary name="stock2.dat"/>
</extension>
<extension
point="kino.plugin.samples.dictionary">
<dictionary name="stock3.dat"/>
</extension>
と書くことができるとき、
IPluginRegistry registry = Platform.getPluginRegistry();
IExtensionPoint point = registry.getExtensionPoint("kino...
IExtension[] extensions = point.getExtensions();
<-ここですでに他のプラグインの分も勘定されてる。
// このforは extensionタグ の繰り返し
for (int i = 0; i < extensions.length; i++) {
IConfigurationElement[] elements = extensions[i]
.getConfigurationElements();
// このforは dictionary の繰り返し
for (int j = 0; j < elements.length; j++) {
System.out.println(elements[j].getAttribute("nam...
}
}
----
この記事は
#vote(おもしろかった[12],そうでもない[0])
-このやり方でやれば、各プラグインのクラスローダでDOMConfi...
-参考~ http://www.atmarkit.co.jp/fjava/rensai2/eclipse02_...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: