3

簡単なEclipseプラグインを作成したいのですが、Javaプロジェクトを右クリックすると、「このプロジェクトで見つかったN個のJavaファイル」というラベルの付いたポップアップメニューが表示されます。「N」はファイル数です。 。

「selectionChanged」でラベルを更新できると思います。

public class CountAction implements IObjectActionDelegate {
    public void selectionChanged(IAction action, ISelection selection) {
        action.setText(countJavaFiles());
    }
}

ただし、そのメニュー項目をクリックしないと機能しません。これは、CountActionがロードされていないselectionChangedため、プロジェクトを右クリックしても呼び出されないためです。

私はこれに多くの時間を費やしましたが、解決していません。私を助けてください。

4

2 に答える 2

2

@kett_chupによって提案された記事の代わりに、を使用することもできますIElementUpdater。単に

  • 実装するhandler必要がありますIElementUpdater
  • を使用して必要なhandler.updateElement((UIElement element, Map parameters)テキストを設定する必要がありますelement.setText("new text")-この新しいテキストはメニューとツールバーに表示されます
  • ICommandService.refreshElements(String commandId, Map filter)特定のコマンドIDを使用してコマンドテキストの使用を更新する必要がある/必要な場合はいつでも-グローバルコマンドサービスは通常は問題ありません

このIElementUpdaterインターフェイスを使用して、チェック状態(コマンドの場合style=toggle)、アイコン、ツールチップを変更することもできます。

于 2011-07-09T20:38:58.327 に答える
0

ついに、これを実装する非常に簡単な方法を見つけました。

コード(問題のサンプルコード)を変更する必要はありませんが、小さなstartupクラスを追加する必要があります。

import org.eclipse.ui.IStartup;

public class MyStartUp implements IStartup {

    @Override
    public void earlyStartup() {
        // Initial the action
        new CountAction();
    }
}

そして、以下を追加しますplugin.xml

<extension
     point="org.eclipse.ui.startup">
  <startup
        class="myplugin.MyStartUp">
  </startup>

これMyStartUpにより、起動時にそのアクションのインスタンスが読み込まれselectionChanged、プロジェクトまたはファイルを右クリックするたびに呼び出されます。

于 2011-07-15T04:41:21.913 に答える