rcp添加菜单有多重方式。
第一种方式:在 ApplicationActionBarAdvisor类中注册之后添加菜单。首先这个类里有两个重要方法
protected void makeActions(IWorkbenchWindow window) {
action = new MyAction(window);//新建一个action
action.setText("Open");
register(action); //同时注册这个action
}
上面的方法首先创建一个action,并注册这个action。
protected void fillMenuBar(IMenuManager menuBar) {
final MenuManager menuManager = new MenuManager("File");//其实就是创建一个菜单名字为File
menuBar.add(menuManager);//把菜单加到菜单栏上。
menuManager.add(action);//给菜单添加action,其实就是给File菜单添加菜单项
}
接下来,在看看其中的MyAction 吧。
public class MyAction extends Action implements ISelectionListener,IWorkbenchAction {
private IWorkbenchWindow workbenchWindow;
public final String ID = "id";
public MyAction(IWorkbenchWindow window) {
setId(ID);//如果没有setID就会出现编译成功,但是没有界面的情况
if (window == null) {
throw new IllegalArgumentException();
}
this.workbenchWindow = window;
window.getSelectionService().addSelectionListener(this);
}
// .............
}
这种方式没有通过扩展点来添加菜单,操作起来也比较方便。