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>