陶甄
新手
新手
  • UID380
  • 粉丝2
  • 关注2
  • 发帖数3
阅读:22894回复:0

如何给Viewer的ContextMenu设置二级菜单

楼主#
更多 发布于:2017-12-04 16:14
效果图在正文下面:
首先给已经定义好的一级菜单的Action实现一个叫做IMenuCreator的接口
我这里已经有了一级菜单对应的Action,下文会贴出此Action全部代码,这里实现接口定义的方法getMenu(Menu),getMenu(Control),createDropDownMenuMgr();
这里我从第三个方法createDropDownMenuMgr()开始说,这个方法是创建一个菜单管理者,向菜单管理者添加二级菜单的Action
createDropDownMenuMgr()
private void createDropDownMenuMgr() {
if (dropDownMenuMgr == null) {
dropDownMenuMgr = new MenuManager();


dropDownMenuMgr.add(new InnerAction("One"));
dropDownMenuMgr.add(new InnerAction("Two"));
}
}
getMenu(Control)与一级菜单绑定
public Menu getMenu(Control parent) {
createDropDownMenuMgr();    
return dropDownMenuMgr.createContextMenu(parent);
}
getMenu(Control)与一级菜单绑定
public Menu getMenu(Menu parent) {
createDropDownMenuMgr();
Menu menu = new Menu(parent);
IContributionItem[] items = dropDownMenuMgr.getItems();
for (int i = 0; i < items.length; i++) {
IContributionItem item = items;
IContributionItem newItem = item;
if (item instanceof ActionContributionItem) {
newItem = new ActionContributionItem(
((ActionContributionItem) item).getAction());
}
newItem.fill(menu, -1);
}
return menu;

} 以下是全部代码

public class RelativeDiagramAction extends Action implements IMenuCreator{
private MenuManager dropDownMenuMgr;

public RelativeDiagramAction() {
super("相关关系图");
setMenuCreator(this);
}
@Override
public String getId() {
// TODO 自动生成的方法存根
return "relative_diagram";
}
@Override
public void run() {
// TODO 自动生成的方法存根
super.run();
}
public void dispose() {
// TODO 自动生成的方法存根

}
public Menu getMenu(Control parent) {
createDropDownMenuMgr();    
return dropDownMenuMgr.createContextMenu(parent);
}
public Menu getMenu(Menu parent) {
createDropDownMenuMgr();
Menu menu = new Menu(parent);
IContributionItem[] items = dropDownMenuMgr.getItems();
for (int i = 0; i < items.length; i++) {
IContributionItem item = items;
IContributionItem newItem = item;
if (item instanceof ActionContributionItem) {
newItem = new ActionContributionItem(
((ActionContributionItem) item).getAction());
}
newItem.fill(menu, -1);
}
return menu;

}

private void createDropDownMenuMgr() {
if (dropDownMenuMgr == null) {
dropDownMenuMgr = new MenuManager();


dropDownMenuMgr.add(new InnerAction("One"));
dropDownMenuMgr.add(new InnerAction("Two"));
}
}

class InnerAction extends Action{
private String text;

public InnerAction(String text){
super(text);
this.text =text;
}

public void run(){
System.out.println(text);
}
}
}
游客

返回顶部