Menu Eclipse插件开发在打开和关闭透视图时显示和隐藏菜单分配

Menu Eclipse插件开发在打开和关闭透视图时显示和隐藏菜单分配,menu,eclipse-plugin,eclipse-rcp,e4,Menu,Eclipse Plugin,Eclipse Rcp,E4,我正在使用E4 2020-09版本开发我的Eclipse插件。我使用模型片段创建了一个透视图和一个menuContribution。我已经搜索了几个教程,但我没有看到任何说明如何在开发期间在E4中打开/关闭透视图时使menuContribution出现/消失的教程。我发现的是这些例子:但是这个函数是为E3实现的,我想在E4中实现它。 你能给我一些关于这项技术的提示/建议吗?它是如何被称为或从哪里开始的 谢谢并致以最诚挚的问候。您可以在菜单项的“显示时表达式”中执行此操作 将表达式设置为“Impe

我正在使用E4 2020-09版本开发我的Eclipse插件。我使用模型片段创建了一个透视图和一个menuContribution。我已经搜索了几个教程,但我没有看到任何说明如何在开发期间在E4中打开/关闭透视图时使menuContribution出现/消失的教程。我发现的是这些例子:但是这个函数是为E3实现的,我想在E4中实现它。 你能给我一些关于这项技术的提示/建议吗?它是如何被称为或从哪里开始的


谢谢并致以最诚挚的问候。

您可以在菜单项的“显示时表达式”中执行此操作

将表达式设置为“ImperialiveExpression”。并创建一个类来处理表达式。此类只有一个带有
@Evaluate
注释的方法,每次显示菜单项时都会调用该方法:

@Evaluate
公共布尔求值(EModelService modelService,…其他参数)
{
//TODO确定菜单项是否应可见
}
然后,此类可以使用
EModelService
getActivePerspective
方法检查菜单项是否应可见。

449

谢谢你的回答,我终于按照你的指示做了。我会将我的参考代码留在这里,以防有人询问:

  • 创建MenuContributionsHandler类
  • 将该类添加到MenuContribution类URI的命令式表达式中
  • 致以最良好的祝愿

    package com.catto.ide.dev.handlers;
    
    import javax.inject.Inject;
    
    import org.eclipse.e4.core.di.annotations.Evaluate;
    import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
    import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
    import org.eclipse.e4.ui.workbench.modeling.EModelService;
    
    public class MenuContributionsHandler 
    {
        @Inject MWindow window;
        
        @Evaluate
        public boolean evaluate(EModelService modelService)
        {
            // TODO determine if menu item should be visible (return true)
            MPerspective currentPerspective = modelService.getActivePerspective(window);
            
            if (null != currentPerspective)
            {
                return currentPerspective.getLabel().equals("SnowCatto");
            }
            
            return false;
        }
    }