【问题标题】:RCP e4 disable menu items based on other menu itemsRCP e4 基于其他菜单项禁用菜单项
【发布时间】:2016-04-28 22:27:24
【问题描述】:

我的菜单包含菜单项“添加文件 1”、“添加文件 2”、“保存”。每个都有关联的处理程序和命令。现在我需要禁用“保存”菜单项,直到“添加文件 1”和“ Add File2" 至少运行一次。我怎样才能做到这一点?

我认为它可以使用核心表达式来完成,但我无法理解如何做到这一点,尤其是 plugin.xml 修改。对于上述案例,我需要一个非常简单的示例用法。

【问题讨论】:

    标签: handler rcp e4 menu-items


    【解决方案1】:

    在您的“保存”处理程序中使用@CanExecute 方法可能是最简单的方法来执行此操作。比如:

    public class SaveHandler
    {
      @CanExecute
      public boolean canExecute()
      {
        boolean enable;
    
        // TODO your code to test if the menus have run and set the enable flag
    
        return enable;
      }
    
      @Execute
      public void execute()
      {
        // TODO your execute code
      }
    }
    

    【讨论】:

    • 如何测试菜单是否已运行?我尝试使用以下方法查看该部件是否处于活动状态:IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();但它不起作用。我收到错误“尚未创建工作台”。有没有办法知道菜单项是否至少被点击过一次。
    • 该代码是 3.x 兼容模式,您不能在 e4 中使用该代码。没有什么可以记住菜单项已被单击,您必须自己编写代码。有四种方法可以获取活动部分,但这与菜单项无关。
    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多