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は、自分で登録しておく。
作成した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>