关于Eclipse 插件添加右键菜单的三种方法

   公司项目做Eclipse 插件开发,需要添加右键菜单,其中找到了三种方法暂时归纳如下:

   第一种:注册配置文件

第二种:注册ActionGroup

       TableEditActionGroup actionGroup = new TableEditActionGroup(v,
                columnList, delColumns);
        actionGroup.fillContextMenu(new MenuManager());

// 生成菜单Menu
    public void fillContextMenu(IMenuManager mgr) {
        // 加入两个Action对象到菜单管理器
        MenuManager menuManager = (MenuManager) mgr;
        // 生成Menu并挂在表格table上。menu和table两个对象互为对方的参数
        mgr.add(new OpenAction());
        Grid grid = tv.getGrid();
        Menu menu = menuManager.createContextMenu(grid);
        grid.setMenu(menu);
        
    }
     private class OpenAction extends Action{
         public OpenAction(){
             setText("打开");
         }
         @Override
        public void run() {
            System.out.println("打开");
        }
     }

第三种方法: 直接添加鼠标事件

     v.getGrid().addMouseListener(new CreateColumnListener(columnList, v));

public void mouseDown(MouseEvent e) {
    //    GridItem[] ((Grid)e.getSource()).getItemCount()
        //鼠标左击事件
        if(e.button==1){
         
            
            }
        }else if (e.button==3) {
            //鼠标右击事件
              final GridItem[] selectItems = v.getGrid().getSelection();
                 Menu menu = new Menu(v.getGrid());
                 MenuItem copyItem = new MenuItem(menu, SWT.PUSH);  
                 copyItem.setText(“复制”);
                 MenuItem pasteItem = new MenuItem(menu, SWT.PUSH);  
                 pasteItem.setText(“粘贴”);  
                 v.getGrid().setMenu(menu);
                   //判断是否选中数据 未选中则菜单不可用
                if (selectItems.length > 0) {
                    copyItem.setEnabled(true);
                    copyItem.addListener(SWT.Selection, new Listener() {  
                        public void handleEvent(Event event) {  
                            clipboard.setContents(selectItems);
                        }  
                    });
                    //判断粘贴板是否存在数据  存在 粘贴可用 否则 不可用
                    if(clipboard.getContents()!=null){
                        pasteItem.setEnabled(true);
                        pasteItem.addListener(SWT.Selection, new Listener() {  
                            public void handleEvent(Event event) {  
                                 GridItem[] selectItems1 = (GridItem[]) clipboard
                                         .getContents();
                                 List<ColumnModel> copys = ColumnDataFactory
                                         .createCopyModel(v, selectItems1);
                                 for (int i = 0; i < copys.size(); i++) {
                                     columnList.add(copys.get(i));
                                     v.add(copys.get(i));
                                 }
                                 v.getControl().getShell().layout();
                            }  
                        });
                    }else {
                        pasteItem.setEnabled(false);
                    }
                }else {
                     copyItem.setEnabled(false);
                     pasteItem.setEnabled(false);
                }
            
        }
        
    }

             

               

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eclipse 中给文件菜单添加可展开的二级菜单,需要在件的 `plugin.xml` 文件中进行配置。 首先,在 `plugin.xml` 中定义一个菜单: ```xml <menu id="mySubMenu" label="My Sub Menu" icon="icons/sample.gif"> </menu> ``` 然后,在 `plugin.xml` 中定义一个 `popupMenu` 扩展,将菜单添加到文件的菜单中: ```xml <extension point="org.eclipse.ui.popupMenus"> <objectContribution objectClass="org.eclipse.core.resources.IFile" id="com.example.myObjectContribution"> <menu id="myPopupMenu" label="My Popup Menu"> <command commandId="org.eclipse.ui.file.refresh" label="Refresh"/> <menu id="mySubMenu" label="My Sub Menu"> <command commandId="com.example.myCommand" label="Submenu Command"/> </menu> </menu> <action label="My Action" class="com.example.MyAction" menubarPath="myPopupMenu/mySubMenu" enablesFor="1" id="com.example.myAction"> </action> </objectContribution> </extension> ``` 在上述代码中,`objectContribution` 定义了一个对象贡献,用于将菜单和操作添加到文件的菜单中。`menu` 定义了一个顶级菜单和一个子菜单,其中子菜单的 `id` 属性和上面定义的菜单的 `id` 属性相同。`command` 定义了一个刷新命令,并将其添加到顶级菜单中;`action` 定义了一个自定义操作,并将其添加到子菜单中。`menubarPath` 属性指定了操作所在的菜单路径,这里是子菜单的路径。 配置完成后,单击文件时,将显示一个名为 "My Popup Menu" 的顶级菜单,其中包含了 "Refresh" 命令和名为 "My Sub Menu" 的子菜单,子菜单中包含了 "Submenu Command" 命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值