S-JIS[2013-10-22] 変更履歴

Eclipse GEF ActionBarContributor

Eclipseプラグイン開発GEFでツールバーのボタンを定義する方法。


概要

GEFでは、ActionBarContributorでツールバーのボタンを定義する。


ActionBarContributorを継承したクラスを作る。

import org.eclipse.gef.ui.actions.ActionBarContributor;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.RetargetAction;

import org.eclipse.gef.ui.actions.DeleteRetargetAction;
import org.eclipse.gef.ui.actions.RedoRetargetAction;
import org.eclipse.gef.ui.actions.UndoRetargetAction;
import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
import org.eclipse.gef.ui.actions.ZoomInRetargetAction;
import org.eclipse.gef.ui.actions.ZoomOutRetargetAction;
public class MyActionBarContributor extends ActionBarContributor {
	@Override
	protected void buildActions() {
		// DELETE
		addRetargetAction(new DeleteRetargetAction());

		// UNDO/REDO
		addRetargetAction(new UndoRetargetAction());
		addRetargetAction(new RedoRetargetAction());

		// 全選択
		addRetargetAction(new RetargetAction(ActionFactory.SELECT_ALL.getId(), null));

		// ズーム
		addRetargetAction(new ZoomInRetargetAction());
		addRetargetAction(new ZoomOutRetargetAction());
	}
	@Override
	public void contributeToToolBar(IToolBarManager toolBarManager) {
		// DELETE
		toolBarManager.add(getAction(ActionFactory.DELETE.getId()));

		// UNDO/REDO
		toolBarManager.add(getAction(ActionFactory.UNDO.getId()));
		toolBarManager.add(getAction(ActionFactory.REDO.getId()));

		toolBarManager.add(new Separator());

		// ズーム
		toolBarManager.add(getAction(GEFActionConstants.ZOOM_IN));
		toolBarManager.add(getAction(GEFActionConstants.ZOOM_OUT));
		toolBarManager.add(new ZoomComboContributionItem(getPage()));
	}
	@Override
	protected void declareGlobalActionKeys() {
		// TODO 自動生成されたメソッド・スタブ
	}
}

buildActions()でRetargetActionのインスタンスを登録しておき、
contributeToToolBar()でツールバーのボタンを定義する。

(RetargetActionというのが何なのかはよく分からないが、)実体となるActionはGraphicalEditor#createActions()でregistryに登録されている。
あるいは、デフォルトで登録されていないActionは、自分で登録しておく。


plugin.xml

作成したActionBarContributorは、plugin.xmlの拡張のorg.eclipse.ui.editorsのcontributorClassで指定する。

   <extension
         point="org.eclipse.ui.editors">
      <editor
            class="com.example.MyEditor"
            contributorClass="com.example.MyActionBarContributor"
            default="false"
            filenames="*.mygui"
            id="plugin.my-gui-editor"
            name="My GUI Editor">
      </editor>
   </extension>

GEFへ戻る / Eclipseプラグインへ戻る / Eclipseへ戻る / 技術メモへ戻る
メールの送信先:ひしだま