Toolbarを表示したい その3

Urumaが自動生成するplugin.xmlとEclipsePDEが自動生成するplugin.xmlの見比べ

Urumaでメニューを作成するとこんな感じ。

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
 <extension point="org.eclipse.ui.contexts" >
  <context id="org.seasar.uruma.example.rss.context" name="Uruma allication local context" />
 </extension>
 <extension point="org.eclipse.ui.commands" >
  <category id="org.seasar.uruma.example.rss.command.category" name="org.seasar.uruma.example.rss" />
  <command id="org.seasar.uruma.example.rss.command.fileDelete" name="削除(D)" categoryId="org.seasar.uruma.example.rss.command.category" />
 </extension>
 <extension point="org.eclipse.ui.handlers" >
 </extension>
 <extension point="org.eclipse.ui.bindings" >
  <scheme id="org.seasar.uruma.keyConfiguration" name="UrumaApplication" />
  <key sequence="DELETE" schemeId="org.seasar.uruma.keyConfiguration" commandId="org.seasar.uruma.example.rss.command.fileDelete" />
 </extension>
 <extension point="org.eclipse.ui.menus" >
  <menuContribution locationURI="menu:org.eclipse.ui.main.menu?after=additions" >
   <menu mnemonic="E" label="編集(E)" >
    <command commandId="org.seasar.uruma.example.rss.command.fileDelete" mnemonic="D" icon="target/main-classes/images/rss.png" >
    </command>
   </menu>
  </menuContribution>
 </extension>
 <extension point="org.eclipse.ui.views" >
  <view id="org.seasar.uruma.example.rss.urumaDebugView" name="デバッグ・ビュー" class="org.seasar.uruma.rcp.ui.GenericViewPart" allowMultiple="false" />
  <view id="org.seasar.uruma.example.rss.urumaBundleManagerView" name="バンドルマネージャ・ビュー" class="org.seasar.uruma.rcp.ui.GenericViewPart" allowMultiple="false" />
  <view id="org.seasar.uruma.example.rss.feedTreeView" name="フィードツリー・ビュー" class="org.seasar.uruma.rcp.ui.GenericViewPart" allowMultiple="false" />
  <view id="org.seasar.uruma.example.rss.feedListView" name="フィード・ビュー" class="org.seasar.uruma.rcp.ui.GenericViewPart" allowMultiple="false" />
  <view id="org.seasar.uruma.example.rss.feedBrowserView" name="ブラウザ・ビュー" class="org.seasar.uruma.rcp.ui.GenericViewPart" allowMultiple="false" />
 </extension>
 <extension point="org.eclipse.ui.perspectives" >
  <perspective id="org.seasar.uruma.example.rss.defaultPerspective" name="RSS" class="org.seasar.uruma.rcp.ui.GenericPerspectiveFactory" icon="uruma" fixed="false" />
 </extension>
</plugin>

EclipsePDEでアクション(メニューとツールバーボタン)を作るとこんな感じ。

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
   <extension point="org.eclipse.ui.actionSets">
      <actionSet
           id="org.eclipse.contribution.hello.actionSet"
           label="Sample Action Set"
           visible="true">
        <menu
              id="sampleMenu"
              label="Sample &amp;Menu">
           <separator
                 name="sampleGroup">
           </separator>
        </menu>
        <action
              class="org.eclipse.contribution.hello.actions.SampleAction"
              icon="icons/sample.gif"
              id="org.eclipse.contribution.hello.actions.SampleAction"
              label="&amp;Sample Action"
              menubarPath="sampleMenu/sampleGroup"
              toolbarPath="sampleGroup"
              tooltip="Hello, Eclipse world">
        </action>
     </actionSet>
   </extension>
</plugin>


メニューの部分を比べてみると構造が全然違うなぁ。

PDEでは、メニューもツールバーボタンも区別はなくて、actionがmenubarPathとtoolbarPathをもっているだけ。

うーむ。
Urumaのツールバーボタンは、XML

ツールバーボタンとして内部で扱えばよいかな。

あとは、Urumaの生成するplugin.xmlの方言に合わせたツールバーボタンの記載ができれうまく作れそうだけど、方言がさっぱりわかんないww


extension point="org.eclipse.ui.menus" ← plugin.xmlの書き方のため、ここから追いかけてみる。
まず、EclipseCSVリポジトリからorg.eclipse.uiのPJをcheckout。

plugin.xmlを見てみると、

<extension-point id="menus" name="%ExtPoint.menus" schema="schema/menus.exsd"/>

で、さらにmenus.exsdを見てみると、サンプルがあった。

<p>
A basic extension looks like this.
</p>
<pre>
   <extension
         id="add.item"
         point="org.eclipse.ui.menus">
      <menuContribution
         locationURI="menu:someorg.somemenu.id?after=additions">
         <command
               commandId="someorg.someid.someCommand"
               icon="icons/anything.gif"
               id="someorg.someid.BasicCmdItem"
               label="Simple Item"
               mnemonic="S">
         </command>
      </menuContribution>
   </extension>
</pre>
<p>
This is the simplest example; adding a command contribution after an existing menu's additions group.
</p>

Urumaのplugin.xmlに記載しているメニューと似ている。

<p>
This extension point allows the plug-in developer to add (contribute) a variety of custom additions to the eclipse framework:
<ul>
  <li>Main Menu</li>
  <li>Main Toolbars</li>
  <li>View Menus/Toolbars:
  <ul>
    <li>View Dropdown Menu</li>
    <li>View Toolbar</li>
    <li>Context Menu(s)</li>
  </ul>
  </li>
  <li>Trim</li>
</ul>
</p>
<p>
It provides a common implementation for and acts as a replacement of the following (legacy) eclipse extension points:
<ul>
<li>org.eclipse.ui.ActionSets</li>
<li>org.eclipse.ui.EditorActions</li>
<li>org.eclipse.ui.popupMenus (including 'objectContributions')</li>
<li>org.eclipse.ui.viewActions</li>
</ul>
</p>

Extenstionがreplacementされている。
しかも、since 3.3 って明記があって道理でNETで調べても情報がすくないわけだ。
っていうか、APIころころ変わりすぎ>Eclipse。 ついていけんw。
手元のEclipsePlugin本も全滅だー。

まとめ

  • ツールバーのためにUrumaがplugin.xmlに出力すべき構文がわかった。
  • ツールバー用にXMLスキーマはいじらないで、の情報を元にする。
  • 次はUrumaがplugin.xmlをどうやって出力しているか調査する。

id:y-komoriさんはよく調査したなぁー。