読者です 読者をやめる 読者になる 読者になる

plugin.xml を書きかえてみる

どうも、おとといにやったことからして、plugin.xml がキーになるようですね。

ということで、plugin.xml を書きかえて動作がどういう風に変化するか調べてみました。

まずはメニューを増やしてみたいと思います。

         <menu
               label="Sample &amp;Menu"
               id="sampleMenu">
            <separator
                  name="sampleGroup">
            </separator>
         </menu>

の部分を

         <menu
               label="Sample &amp;Menu"
               id="sampleMenu">
            <separator
                  name="sampleGroup">
            </separator>
         </menu>
         <menu
               label="Sample M&amp;enu 2"
               id="sampleMenu2">
            <separator
                  name="sampleGroup2">
            </separator>
         </menu>

というようにして見ました。


ところで、separator って何でしょう? 普通、separator といったら、メニューとかでアイテムの間にある線のことですよね。でも、メニューバーにそんな線なかったし... まぁ、いいや。

で、実行。ありゃ、何も変わらない。

actionset タグの中には menu は 1 つしか書けないのかなぁ。対応する action がないからかなぁ。とりあえず、action を対応させちゃえ。

         <action
               label="&amp;Sample Action"
               icon="icons/sample.gif"
               class="sample.actions.SampleAction"
               tooltip="Hello, Eclipse world"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="sample.actions.SampleAction">
         </action>

そういえば、menubarPath には sampleMenu/sampleGroup とありますね。sampleMenu は menu の id ですけど、sampleGroup が separator の name で書かれたものですね。separator ってこんなところで使うのかな。でも、menu の id だけでいいような気も。でも、なんか意味があるのでしょう。

とりあえず、それはほっておいて、action を次のように書きかえて見ました。

         <action
               label="&amp;Sample Action"
               icon="icons/sample.gif"
               class="sample.actions.SampleAction"
               tooltip="Hello, Eclipse world"
               menubarPath="sampleMenu2/sampleGroup2"
               toolbarPath="sampleGroup"
               id="sample.actions.SampleAction">
         </action>

これで実行だ。

Menu

やった、ちゃんと変わりました。逆に Sample Menu はなくなってしまいました。やはり、対応する Action がないと表示されないのでしょう。もしかして、違うかもしれないけど。

だとしたら、違う Action を作ってしまいましょう。SampleAction2 クラスを作って、中はほとんど SampleAction クラスの中身をパクってみました。違うのはダイアログで出力するメッセージが違うぐらいです。

plugin.xml は次のように、action が 2 つ並んでいます。

         <action
               label="&amp;Sample Action"
               icon="icons/sample.gif"
               class="sample.actions.SampleAction"
               tooltip="Hello, Eclipse world"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="sample.actions.SampleAction">
         </action>
         <action
               label="&amp;Sample Action 2"
               icon="icons/sample.gif"
               class="sample.actions.SampleAction2"
               tooltip="Hello, Eclipse world 2"
               menubarPath="sampleMenu2/sampleGroup2"
               toolbarPath="sampleGroup"
               id="sample.actions.SampleAction2">
         </action>

これで実行したら...

Menu

ちゃんと 2 つのメニューがあります。でも、順番が逆なんですね。で、Sample Menu2 から Sample Action 2 を選んでみると...

Dialog

ちゃんと SampleAction2 クラスが呼びだされたようです。

今はメニューを 2 つ並べましたが、同じメニューに新たに項目を追加することもできるのでしょうか? さっそく、やってみました。menu タグを

         <menu
               label="Sample &amp;Menu"
               id="sampleMenu">
            <separator
                  name="sampleGroup">
            </separator>
         </menu>

と戻して、action を少し書きかえてみました。

         <action
               label="&amp;Sample Action 2"
               icon="icons/sample.gif"
               class="sample.actions.SampleAction2"
               tooltip="Hello, Eclipse world 2"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="sample.actions.SampleAction2">
         </action>

これで実行してみます。

Menu

やはり、ここでも項目の順番は逆になるんですね。