minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

アクションセットを作成する方法です。
アクションセットとは、メニューやツールバーに登録するアクション一覧のことです。
plugin.xmlにエクステンションとして登録します。

<extension point="org.eclipse.ui.actionSets">
  <actionSet ...>
    <menu ... />
    <action ... />
  </actionSet>
</extension>

参考ページ : menu

actionSet

アクションセットを定義します。

<actionSet
      label="Sample Action Set"
      visible="true"
      id="org.limy.eclipse.core.actionSet">
id

アクションセットに付けるID

label

アクションセットの表示名

visible

アクションセットのデフォルト可視性を true / false で指定します。
デフォルトは false です。

description

アクションセットの説明文

action

アクションを定義します。

<action
     label="&amp;Sample Action"
     class="org.limy.eclipse.TestAction"
     tooltip="Hello, Eclipse world"
     icon="icons/sample.gif"
     toolbarPath="additions"
     id="org.limy.eclipse.core.actions.SampleAction"/>
id

アクションに付けるID

label

アクションの表示名

definitionId

アクションに結びつけるコマンドID
参考ページ : コマンドの作成

menubarPath

アクションを表示する場所のメニューID

toolbarPath

アクションを表示する場所のツールバーID

icon

アクションを表示するアイコン

disableIcon

アクションが無効のときに表示するアイコン

hoverIcon

アクションの上にカーソルが乗っているときに表示するアイコン

tooltip

アクションのツールチップ文字列を定義します。

helpContentId

アクションのヘルプコンテキストID

style

アクションスタイルを定義します。

  • push

    デフォルトスタイルです。

  • radio

    ラジオボタンスタイルにします。

  • toggle

    トグルボタンスタイルにします。

  • pulldown

    プルダウンスタイルにします。

state

ラジオボタンまたはトグルボタンのデフォルト値を true / false で指定します。
デフォルトはfalseです。

class

アクションクラス名を指定します。
クラスは org.eclipse.ui.IWorkbenchWindowActionDelegate
または org.eclipse.ui.IWorkbenchWindowActionDelegate を実装している必要があります。
retargettrue のとき、この属性は無視されます。

retarget

動的にアクションクラスを変更するときに true にします。
このとき、class 属性は無視されます。
retargetを使う を参考して下さい。

allowLabelUpdate

retargettrue の場合のみ有効です。
アクションの表示文字列やツールチップ文字列を動的に変更したい場合には true を指定します。

enablesFor

選択しているオブジェクト数によって、アクションの有効/無効を制御します。

  • !

    オブジェクトが全く選択されていないときにアクションを有効にします。

  • ?

    オブジェクトが0または1つだけ選択されているときにアクションを有効にします。

  • +

    オブジェクトが1つ以上選択されているときにアクションを有効にします。

  • multiple, 2+

    オブジェクトが2つ以上選択されているときにアクションを有効にします。

  • n

    オブジェクトが n 個選択されているときに限ってアクションを有効にします。

  • *

    あらゆる状態でアクションを有効にします(デフォルト)。

overrideActionId

詳細は不明です。

retargetを使う

現在アクティブなエディタやビューによって、アクションの有効/無効を切り替えたりすることが出来ます。
retarget 属性を true で定義します。

エディタの場合、contributorクラスというものを利用します。
エディタ定義の contributorClass 属性を指定します。
contributorクラスは、例えば以下のように作成します。

public class LrdEditorContributor extends EditorActionBarContributor {
    private OpenExternalBrowserAction openExternalBrowserAction;
    public LrdEditorContributor() {
        super();
        openExternalBrowserAction = new OpenExternalBrowserAction();
    }
    public void init(IActionBars bars, IWorkbenchPage page) {
        super.init(bars, page);
        
        // この項は、allowLabelUpdate属性がtrueのときに有効
        openExternalBrowserAction.setText("text");
        openExternalBrowserAction.setToolTipText(
            "tooltop : " + getPage().getActiveEditor().getTitle());
        
        bars.setGlobalActionHandler(
            "org.limy.eclipse.lrd.BrowseAction",
            openExternalBrowserAction);
    }
}

コンストラクタでアクションを生成し、
initメソッドでアクション(ツール)バーにアクションを追加します。
これによってアクションが有効になります。

allowLabelUpdatetrue で定義すると、
アクションの表示文字列やツールチップ文字列を動的に変更することが出来ます。
上の例では、ツールチップ文字列にエディタのタイトル(つまりファイル名)を埋め込んでいます。