Eclipse/プラグイン開発のTIPS集/メニューバーを構築する(Eclipse3.3版)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
Eclipse/プラグイン開発のTIPS集/メニューバーを構築する の...
標準的な構成は元ページ Eclipse/プラグイン開発のTIPS集/メ...
**対象のRCPのワークベンチ構成 [#w804ff7c]
もともとのEclipse/RCP のメニューバーの構成は、
[ワークベンチ]
|
|-[File] - "file" <- IWorkbenchActionCons...
| -[終了]
|
|-GroupMarker - "additions"
|
|-[Help] - "help" <- IWorkbenchActionCons...
| -[検索]
| -"セパレータ" - "group01"
| -[○○について] -
となっているとします。
#ref(rcp01.png)
#ref(rcp02.png)
**拡張ポイントから宣言的に [#o26e0d60]
拡張ポイントを用いて宣言的にメニューに項目を追加するには...
では先の"セパレータ"部分にコマンドを追加します。拡張ポイ...
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:help?after=group01">
<command commandId="nu.mine.kino.plugin.samples.rcp...
label="追加アクション。"
style="push">
</command>
</menuContribution>
</extension>
ポイントは、locationURI の指定方法です。
locationURI="menu:help?after=group01"
これですが、ワークベンチトップに追加したおいたhelp(IWorkb...
ちなみにplugin.xml全体は以下の通り。
<extension point="org.eclipse.ui.handlers">
<handler commandId="nu.mine.kino.plugin.samples.rcp.co...
class="nu.mine.kino.plugin.newaction.handlers.Sample...
</handler>
</extension>
<extension point="org.eclipse.ui.commands">
<category id="nu.mine.kino.plugin.samples.rcp.category...
<command categoryId="nu.mine.kino.plugin.samples.rcp.c...
id="nu.mine.kino.plugin.samples.rcp.command" name="...
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:help?after=group01">
<command commandId="nu.mine.kino.plugin.samples.rcp....
label="追加アクション。"
style="push">
</command>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
以上で、先のセパレータ部分に、コマンドが追加されました。
#ref(rcp03.png)
*** アクションではなく、サブメニューを追加する [#hed5215b]
次に、サブメニューを追加したいと思います。具体的には次の...
[ワークベンチ]
|
|-[File] - "file" <- IWorkbench...
| -[終了]
|
|-[Help] - "help" <- IWorkbench...
| -[検索]
| -"セパレータ" - "group01"
| -[追加メニュー。] - "menu01" <- plugin.xml...
| -"セパレータ" - "sepa01" <- plugin.xml...
| -[追加アクション。] - <- plugin.xml...
| -[○○について] -
セパレータ部分に「追加メニュー。」というサブメニューを追...
plugin.xmlに以下の通り記述します。さっきのorg.eclipse.ui....
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:help?after=group01">
<menu label="追加メニュー。">
<separator name="sepa01" visible="true" />
<command
commandId="nu.mine.kino.plugin.samples.rcp.command"
label="追加アクション。"
style="push">
</command>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
いままでorg.eclipse.ui.actionSets拡張ポイントを使用してい...
#ref(rcp04.png)
**他の方法でもできる [#cb4c2025]
上記の方法でもちろん問題ないですが、別の方法として「追加...
<!-- まずはhelp/group01の箇所にメニューとセパレータを追...
<!-- セパレータのあるメニューにはhelp_group01と名前をつ...
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="menu:help?after=group01">
<menu id="help_group01" label="追加メニュー。">
<separator name="sepa01" visible="true">
</separator>
</menu>
</menuContribution>
</extension>
<!-- 次に、そのメニュー(id = help_group01) 内のsepa01と...
<!-- の後にコマンドを追加-->
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="menu:help_group01?after...
<command commandId="nu.mine.kino.plugin.samples.rcp....
label="追加アクション" style="push">
</command>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
**トップレベルのメニューにアクションを追加したい。 [#vf93...
トップレベルのメニューへメニューを追加する方法です。拡張...
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:org.eclipse.ui.main.menu?after=add...
<menu id="nu.mine.kino.plugin.newaction.menus.sample...
<command commandId="nu.mine.kino.plugin.samples.rc...
style="push">
</command>
<separator name="sepa01" visible="true">
</separator>
<command commandId="nu.mine.kino.plugin.samples.rc...
label="別名。" style="push">
</command>
<separator name="sepa02" visible="true" />
<command commandId="nu.mine.kino.plugin.samples.rc...
label="別名2。" style="push">
</command>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
このように
locationURI="menu:org.eclipse.ui.main.menu?after=additio...
とURIの指定をorg.eclipse.ui.main.menu にすればOKです。...
#ref(rcp05.png)
**ビューのメニューバーもこの拡張ポイントでできる [#n948a7...
さて、EclipseやRCPのメインのメニューバーに対してメニュー...
さて、下記のような既存のメニュー部に、拡張ポイントでコマ...
#ref(rcp06.png)
上記の部分は以下のようにセパレータが挿入されているとしま...
[△プルダウン]
|
| -[Action 1]
| -"セパレータ" - "hogehoge"
| -[Action 2]
またビューのIDは
nu.mine.kino.plugin.samples.rcp.view3
だとします。
このhogehogeの箇所に、コマンドを追加する拡張ポイントの指...
<extension point="org.eclipse.ui.menus">
<!-- view に追加する場合は、ViewのIDを指定する -->
<!-- かつては、org.eclipse.ui.viewActions 拡張ポイント
をつかって実装していた箇所 -->
<menuContribution
locationURI="menu:nu.mine.kino.plugin.samples.rcp.vi...
<menu id="nu.mine.kino.plugin.newaction.menu1"
label="他人のビューにメニュー追加">
<command commandId="nu.mine.kino.plugin.samples.rc...
label="他人のビューにコマンド追加" style="push">
</command>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
上記のように、URLにはビューのIDを指定し、パラメタに差し込...
#ref(rcp07.png)
Action 1 とAction 2の間に、コマンドが追加されました。
**あるビューがアクティブの場合のみ、あるコマンドを選択可...
あるビューでのみ使用したいコマンドがあったとき、そのビュ...
-「サンプルコマンド」が選択できない
#ref(active01.png)
~~
-View3がアクティブになったら、「サンプルコマンド」が選択...
#ref(active02.png)
この機能を利用するには、ハンドラに対して下記のように条件...
<extension point="org.eclipse.core.expressions.definitio...
<definition id="nu.mine.kino.plugin.samples.rcp.view3....
<with variable="activePartId">
<equals value="nu.mine.kino.plugin.samples.rcp.vie...
</with>
</definition>
</extension> <!--アクティブなビュー(正確にはpart)のid -->
<!-- ハンドラと、先の条件設定の関連づけ-->
<extension point="org.eclipse.ui.handlers">
<handler
commandId="nu.mine.kino.plugin.newaction.commands.sa...
class="nu.mine.kino.plugin.newaction.handlers.Sample...
</handler>
<handler commandId="nu.mine.kino.plugin.samples.rcp.co...
class="nu.mine.kino.plugin.newaction.handlers.Sample...
<activeWhen> <!--下の条件の場合だけ、選択可能にする...
<reference <!-- さきのdefinitionのidを関連づけ ...
definitionId="nu.mine.kino.plugin.samples.rcp....
</reference>
</activeWhen>
</handler>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:org.eclipse.ui.main.menu?after=add...
<menu id="nu.mine.kino.plugin.newaction.menus.sample...
label="トップのメニュー">
<command commandId="nu.mine.kino.plugin.samples.rc...
style="push">
</command>
<command commandId="nu.mine.kino.plugin.newaction....
label="アクティブ・非アクティブコマンド" style="...
</command>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
一つのハンドラに activeWhenというタグで条件設定を関連づけ...
こうすることで、あるビュー(nu.mine.kino.plugin.samples.rc...
参考。
-[[Associating a handler with a command while a part type...
**あるビューがアクティブのばあいのみ、あるメニュー構成を...
次に、あるビューがアクティブの時だけ、EclipseやRCPのメイ...
-メニューバーに表示されていない
#ref(visible01.png)
~~
-View3がアクティブになったら、メニューバーにメニューが表...
#ref(visible02.png)
先の、コマンド単位で選択可能・不可能を制御する例では、ハ...
<extension point="org.eclipse.core.expressions.definitio...
<definition id="nu.mine.kino.plugin.samples.rcp.view3....
<with variable="activePartId">
<equals value="nu.mine.kino.plugin.samples.rcp.vie...
</with>
</definition>
</extension> <!--アクティブなビュー(正確にはpart)のid -->
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:org.eclipse.ui.main.menu?after=add...
<menu id="nu.mine.kino.plugin.newaction.menus.sample...
label="トップのメニュー">
<command commandId="nu.mine.kino.plugin.samples.rc...
</command>
<separator name="sepa01" visible="true">
</separator>
<command commandId="nu.mine.kino.plugin.samples.rc...
label="別名。" style="push">
</command>
<separator name="sepa02" visible="true" />
<command commandId="nu.mine.kino.plugin.samples.rc...
label="別名2。" style="push">
</command>
<visibleWhen><!--下の条件の場合だけ、表示する。 -->
<reference
definitionId="nu.mine.kino.plugin.samples.rcp....
</reference>
</visibleWhen>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
これでさっきのキャプチャのように、あるビューがアクティブ...
**TIPS [#cc014790]
***additionsは特別視されている? [#x13590e4]
afterでよく指定されるadditionsですが、afterの後の文字列で...
**ソースコード [#h35bfa90]
-[[プラグインのソースコード(ViewVC)>http://www.masatom.in...
-[[RCPのソースコード(ViewVC)>http://www.masatom.in/viewvc...
**関連リンク [#v5811993]
-[[Eclipse/プラグイン開発のTIPS集/メニューバーを構築する]]
-[[Eclipse/プラグイン開発のTIPS集/キーバインディングを設...
-[[Eclipse/プラグイン開発のTIPS集/あるビューがアクティブ...
-[[Contribution visibility>http://help.eclipse.org/help33...
----
この記事は
#vote(おもしろかった[5],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
Eclipse/プラグイン開発のTIPS集/メニューバーを構築する の...
標準的な構成は元ページ Eclipse/プラグイン開発のTIPS集/メ...
**対象のRCPのワークベンチ構成 [#w804ff7c]
もともとのEclipse/RCP のメニューバーの構成は、
[ワークベンチ]
|
|-[File] - "file" <- IWorkbenchActionCons...
| -[終了]
|
|-GroupMarker - "additions"
|
|-[Help] - "help" <- IWorkbenchActionCons...
| -[検索]
| -"セパレータ" - "group01"
| -[○○について] -
となっているとします。
#ref(rcp01.png)
#ref(rcp02.png)
**拡張ポイントから宣言的に [#o26e0d60]
拡張ポイントを用いて宣言的にメニューに項目を追加するには...
では先の"セパレータ"部分にコマンドを追加します。拡張ポイ...
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:help?after=group01">
<command commandId="nu.mine.kino.plugin.samples.rcp...
label="追加アクション。"
style="push">
</command>
</menuContribution>
</extension>
ポイントは、locationURI の指定方法です。
locationURI="menu:help?after=group01"
これですが、ワークベンチトップに追加したおいたhelp(IWorkb...
ちなみにplugin.xml全体は以下の通り。
<extension point="org.eclipse.ui.handlers">
<handler commandId="nu.mine.kino.plugin.samples.rcp.co...
class="nu.mine.kino.plugin.newaction.handlers.Sample...
</handler>
</extension>
<extension point="org.eclipse.ui.commands">
<category id="nu.mine.kino.plugin.samples.rcp.category...
<command categoryId="nu.mine.kino.plugin.samples.rcp.c...
id="nu.mine.kino.plugin.samples.rcp.command" name="...
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:help?after=group01">
<command commandId="nu.mine.kino.plugin.samples.rcp....
label="追加アクション。"
style="push">
</command>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
以上で、先のセパレータ部分に、コマンドが追加されました。
#ref(rcp03.png)
*** アクションではなく、サブメニューを追加する [#hed5215b]
次に、サブメニューを追加したいと思います。具体的には次の...
[ワークベンチ]
|
|-[File] - "file" <- IWorkbench...
| -[終了]
|
|-[Help] - "help" <- IWorkbench...
| -[検索]
| -"セパレータ" - "group01"
| -[追加メニュー。] - "menu01" <- plugin.xml...
| -"セパレータ" - "sepa01" <- plugin.xml...
| -[追加アクション。] - <- plugin.xml...
| -[○○について] -
セパレータ部分に「追加メニュー。」というサブメニューを追...
plugin.xmlに以下の通り記述します。さっきのorg.eclipse.ui....
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:help?after=group01">
<menu label="追加メニュー。">
<separator name="sepa01" visible="true" />
<command
commandId="nu.mine.kino.plugin.samples.rcp.command"
label="追加アクション。"
style="push">
</command>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
いままでorg.eclipse.ui.actionSets拡張ポイントを使用してい...
#ref(rcp04.png)
**他の方法でもできる [#cb4c2025]
上記の方法でもちろん問題ないですが、別の方法として「追加...
<!-- まずはhelp/group01の箇所にメニューとセパレータを追...
<!-- セパレータのあるメニューにはhelp_group01と名前をつ...
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="menu:help?after=group01">
<menu id="help_group01" label="追加メニュー。">
<separator name="sepa01" visible="true">
</separator>
</menu>
</menuContribution>
</extension>
<!-- 次に、そのメニュー(id = help_group01) 内のsepa01と...
<!-- の後にコマンドを追加-->
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="menu:help_group01?after...
<command commandId="nu.mine.kino.plugin.samples.rcp....
label="追加アクション" style="push">
</command>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
**トップレベルのメニューにアクションを追加したい。 [#vf93...
トップレベルのメニューへメニューを追加する方法です。拡張...
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:org.eclipse.ui.main.menu?after=add...
<menu id="nu.mine.kino.plugin.newaction.menus.sample...
<command commandId="nu.mine.kino.plugin.samples.rc...
style="push">
</command>
<separator name="sepa01" visible="true">
</separator>
<command commandId="nu.mine.kino.plugin.samples.rc...
label="別名。" style="push">
</command>
<separator name="sepa02" visible="true" />
<command commandId="nu.mine.kino.plugin.samples.rc...
label="別名2。" style="push">
</command>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
このように
locationURI="menu:org.eclipse.ui.main.menu?after=additio...
とURIの指定をorg.eclipse.ui.main.menu にすればOKです。...
#ref(rcp05.png)
**ビューのメニューバーもこの拡張ポイントでできる [#n948a7...
さて、EclipseやRCPのメインのメニューバーに対してメニュー...
さて、下記のような既存のメニュー部に、拡張ポイントでコマ...
#ref(rcp06.png)
上記の部分は以下のようにセパレータが挿入されているとしま...
[△プルダウン]
|
| -[Action 1]
| -"セパレータ" - "hogehoge"
| -[Action 2]
またビューのIDは
nu.mine.kino.plugin.samples.rcp.view3
だとします。
このhogehogeの箇所に、コマンドを追加する拡張ポイントの指...
<extension point="org.eclipse.ui.menus">
<!-- view に追加する場合は、ViewのIDを指定する -->
<!-- かつては、org.eclipse.ui.viewActions 拡張ポイント
をつかって実装していた箇所 -->
<menuContribution
locationURI="menu:nu.mine.kino.plugin.samples.rcp.vi...
<menu id="nu.mine.kino.plugin.newaction.menu1"
label="他人のビューにメニュー追加">
<command commandId="nu.mine.kino.plugin.samples.rc...
label="他人のビューにコマンド追加" style="push">
</command>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
上記のように、URLにはビューのIDを指定し、パラメタに差し込...
#ref(rcp07.png)
Action 1 とAction 2の間に、コマンドが追加されました。
**あるビューがアクティブの場合のみ、あるコマンドを選択可...
あるビューでのみ使用したいコマンドがあったとき、そのビュ...
-「サンプルコマンド」が選択できない
#ref(active01.png)
~~
-View3がアクティブになったら、「サンプルコマンド」が選択...
#ref(active02.png)
この機能を利用するには、ハンドラに対して下記のように条件...
<extension point="org.eclipse.core.expressions.definitio...
<definition id="nu.mine.kino.plugin.samples.rcp.view3....
<with variable="activePartId">
<equals value="nu.mine.kino.plugin.samples.rcp.vie...
</with>
</definition>
</extension> <!--アクティブなビュー(正確にはpart)のid -->
<!-- ハンドラと、先の条件設定の関連づけ-->
<extension point="org.eclipse.ui.handlers">
<handler
commandId="nu.mine.kino.plugin.newaction.commands.sa...
class="nu.mine.kino.plugin.newaction.handlers.Sample...
</handler>
<handler commandId="nu.mine.kino.plugin.samples.rcp.co...
class="nu.mine.kino.plugin.newaction.handlers.Sample...
<activeWhen> <!--下の条件の場合だけ、選択可能にする...
<reference <!-- さきのdefinitionのidを関連づけ ...
definitionId="nu.mine.kino.plugin.samples.rcp....
</reference>
</activeWhen>
</handler>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:org.eclipse.ui.main.menu?after=add...
<menu id="nu.mine.kino.plugin.newaction.menus.sample...
label="トップのメニュー">
<command commandId="nu.mine.kino.plugin.samples.rc...
style="push">
</command>
<command commandId="nu.mine.kino.plugin.newaction....
label="アクティブ・非アクティブコマンド" style="...
</command>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
一つのハンドラに activeWhenというタグで条件設定を関連づけ...
こうすることで、あるビュー(nu.mine.kino.plugin.samples.rc...
参考。
-[[Associating a handler with a command while a part type...
**あるビューがアクティブのばあいのみ、あるメニュー構成を...
次に、あるビューがアクティブの時だけ、EclipseやRCPのメイ...
-メニューバーに表示されていない
#ref(visible01.png)
~~
-View3がアクティブになったら、メニューバーにメニューが表...
#ref(visible02.png)
先の、コマンド単位で選択可能・不可能を制御する例では、ハ...
<extension point="org.eclipse.core.expressions.definitio...
<definition id="nu.mine.kino.plugin.samples.rcp.view3....
<with variable="activePartId">
<equals value="nu.mine.kino.plugin.samples.rcp.vie...
</with>
</definition>
</extension> <!--アクティブなビュー(正確にはpart)のid -->
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="menu:org.eclipse.ui.main.menu?after=add...
<menu id="nu.mine.kino.plugin.newaction.menus.sample...
label="トップのメニュー">
<command commandId="nu.mine.kino.plugin.samples.rc...
</command>
<separator name="sepa01" visible="true">
</separator>
<command commandId="nu.mine.kino.plugin.samples.rc...
label="別名。" style="push">
</command>
<separator name="sepa02" visible="true" />
<command commandId="nu.mine.kino.plugin.samples.rc...
label="別名2。" style="push">
</command>
<visibleWhen><!--下の条件の場合だけ、表示する。 -->
<reference
definitionId="nu.mine.kino.plugin.samples.rcp....
</reference>
</visibleWhen>
</menu>
</menuContribution>
</extension>
ここまで作成したプラグインは以下よりダウンロードできます。
[[ソースコード(ViewVC)>http://www.masatom.in/viewvc/Examp...
これでさっきのキャプチャのように、あるビューがアクティブ...
**TIPS [#cc014790]
***additionsは特別視されている? [#x13590e4]
afterでよく指定されるadditionsですが、afterの後の文字列で...
**ソースコード [#h35bfa90]
-[[プラグインのソースコード(ViewVC)>http://www.masatom.in...
-[[RCPのソースコード(ViewVC)>http://www.masatom.in/viewvc...
**関連リンク [#v5811993]
-[[Eclipse/プラグイン開発のTIPS集/メニューバーを構築する]]
-[[Eclipse/プラグイン開発のTIPS集/キーバインディングを設...
-[[Eclipse/プラグイン開発のTIPS集/あるビューがアクティブ...
-[[Contribution visibility>http://help.eclipse.org/help33...
----
この記事は
#vote(おもしろかった[5],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: