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);
}
// .............
}


这种方式没有通过扩展点来添加菜单,操作起来也比较方便。