Eclipse 插件开发在打开和关闭透视图时显示和隐藏 menuContribution
Eclipse Plugin development showing and hiding menuContribution when opening and closing perspective
我正在使用 E4 2020-09 版本开发我的 Eclipse 插件。我使用模型片段创建了一个 Perspective 和一个 menuContribution。我已经搜索了几个教程,但我没有看到任何显示如何在开发期间在 E4 中创建一个 menuContribution appear/disappear when opening/closing a Perspective 的教程。我发现的是这些例子:https://github.com/vogellacompany/codeexamples-eclipse 但是这个函数是为 E3 实现的,我想在 E4 中实现它。
你能告诉我一些关于这项技术的信息吗?hints/advices 它是如何被调用的,或者从哪里开始使用它?
谢谢并致以最诚挚的问候。
您可以在 'Visible-When Expression' 菜单项中执行此操作。
设置表达式为'ImperativeExpression'。并创建一个 class 来处理表达式。这个 class 只有一个用 @Evaluate
注释的方法,每次显示菜单项时都会调用该方法:
@Evaluate
public boolean evaluate(EModelService modelService, .... other parameters)
{
// TODO determine if menu item should be visible
}
此 class 然后可以使用 EModelService
的 getActivePerspective
方法来检查菜单项是否应该可见。
449,
谢谢你的回答,我终于按照你的指导做了。我会在这里留下我的参考代码,以防有人问这个:
- 创建 MenuContributionsHandler class
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;
}
}
- 将此 class 添加到 MenuContribution Class URI 的命令表达式中。
此致。
我正在使用 E4 2020-09 版本开发我的 Eclipse 插件。我使用模型片段创建了一个 Perspective 和一个 menuContribution。我已经搜索了几个教程,但我没有看到任何显示如何在开发期间在 E4 中创建一个 menuContribution appear/disappear when opening/closing a Perspective 的教程。我发现的是这些例子:https://github.com/vogellacompany/codeexamples-eclipse 但是这个函数是为 E3 实现的,我想在 E4 中实现它。 你能告诉我一些关于这项技术的信息吗?hints/advices 它是如何被调用的,或者从哪里开始使用它?
谢谢并致以最诚挚的问候。
您可以在 'Visible-When Expression' 菜单项中执行此操作。
设置表达式为'ImperativeExpression'。并创建一个 class 来处理表达式。这个 class 只有一个用 @Evaluate
注释的方法,每次显示菜单项时都会调用该方法:
@Evaluate
public boolean evaluate(EModelService modelService, .... other parameters)
{
// TODO determine if menu item should be visible
}
此 class 然后可以使用 EModelService
的 getActivePerspective
方法来检查菜单项是否应该可见。
449,
谢谢你的回答,我终于按照你的指导做了。我会在这里留下我的参考代码,以防有人问这个:
- 创建 MenuContributionsHandler class
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;
}
}
- 将此 class 添加到 MenuContribution Class URI 的命令表达式中。
此致。