5

Eclipse プラグインを開発する際に、ID crtc_v4.session でデフォルト ハンドラー crtc_v4.handlers.StartSession を使用してマニフェスト拡張機能にコマンドを作成しました。このコマンドのマニフェストにハンドラーを追加しました。このハンドラーは、変数 crtc_v4.sessionvar に従ってコマンドを有効にします。 .

コンソールに表示される問題は次のとおりです。

!MESSAGE Conflicting handlers for crtc_v4.session:  {crtc_v4.handlers.StartSession@98bc5c} vs {crtc_v4.handlers.StartSession@1265d09}

ただし、プラグインの実行はブロックされません。この問題の解決策と、それがプラグインのパフォーマンス全般に影響するかどうかについて質問しています。

編集 :

コマンドを定義するスニペット:

 <extension
     point="org.eclipse.ui.menus">
  <menuContribution
        allPopups="false"
        locationURI="toolbar:org.eclipse.ui.main.toolbar">
     <toolbar
           id="crtc_v5.crtctoolbar">
        <command
              commandId="crtc_v5.session"
              icon="icons/neutral.png"
              label="Start Session"
              style="push">
        </command>
     </toolbar>
  </menuContribution>

handler を定義するスニペット:

 </extension>
      <command
        defaultHandler="crtc_v5.handlers.StartSession"
        id="crtc_v5.session"
        name="session">
  </command>
 </extension>

そして、これが sessionvar に対する有効化です:

  <extension
     point="org.eclipse.ui.handlers">
  <handler
        class="crtc_v5.handlers.StartSession"
        commandId="crtc_v5.session">
     <enabledWhen>
        <with
              variable="crtc_v5.sessionvar">
           <equals
                 value="LOGGEDIN">
           </equals>
        </with>
     </enabledWhen>
  </handler>

4

1 に答える 1

9

コマンドでデフォルトのハンドラーを定義し、 org.eclipse.ui.handlers拡張機能で別のハンドラーを定義しました。enabledWhenを使用する場合は、単にdefaultHandler属性を削除します (両方のインスタンスが同じハンドラーcrtc_v5.handlers.StartSessionを提供するため)。

アプリケーションの状態に応じて異なるハンドラーがコマンドの動作を提供するようにしたい場合は、org.eclipse.ui.handlers定義でactiveWhenを使用しますが、ここではそうではないようです。

于 2013-06-21T14:28:14.000 に答える