Eclipse4上下文菜单

Eclipse4上下文菜单,eclipse,eclipse-rcp,e4,Eclipse,Eclipse Rcp,E4,我正在尝试用Eclipse4.2构建一个RCP应用程序 第一个问题;我有一个TreeViewer。在树查看器中选择项目时,我需要显示两个堆叠的mpart中的一个。如何在e4中激活零件堆栈中的零件 第二;我有一个与我的一个部件关联的上下文菜单。我需要菜单仅在右键单击某些复合材料时显示。我有一个鼠标按下处理程序,它正在将一个包含我需要的所有数据的对象添加到当前上下文中(IEclipseContext),但我不知道如何从CoreExpression(这似乎是控制菜单可见性的唯一真正方法)。鼠标向上移动

我正在尝试用Eclipse4.2构建一个RCP应用程序

第一个问题;我有一个
TreeViewer
。在树查看器中选择项目时,我需要显示两个堆叠的
mpart
中的一个。如何在e4中激活零件堆栈中的零件

第二;我有一个与我的一个部件关联的上下文菜单。我需要菜单仅在右键单击某些复合材料时显示。我有一个鼠标按下处理程序,它正在将一个包含我需要的所有数据的对象添加到当前上下文中(
IEclipseContext
),但我不知道如何从
CoreExpression
(这似乎是控制菜单可见性的唯一真正方法)。鼠标向上移动时,对象将从上下文中删除。假设我的班级是
右键单击数据
。如何编写核心表达式来测试当前上下文中是否存在
RightClickData
的实例

编辑,我的
应用程序的一部分。e4xmi

        <children xsi:type="basic:InputPart" xmi:id="_6nSEEJuhEeGpoZf9DvK6pQ" elementId="com.example.MyEditor" contributionURI="bundleclass://MyPlugin/com.example.MyEditor" label="The Editor" tooltip="My Editor">
          <menus xsi:type="menu:PopupMenu" xmi:id="_UdHPEJ4SEeGi0uxvOaa4gw" elementId="MyPlugin.rsmenu" label="Asdf" tooltip="asdf">
            <children xsi:type="menu:HandledMenuItem" xmi:id="_jwOz0J4SEeGi0uxvOaa4gw" label="Add Column" command="_fhTxwJ4REeGi0uxvOaa4gw"/>
            <children xsi:type="menu:HandledMenuItem" xmi:id="_trlpsJ4SEeGi0uxvOaa4gw" label="Delete Column" command="_iAIkoJ4REeGi0uxvOaa4gw"/>
            <children xsi:type="menu:MenuSeparator" xmi:id="_v8f8YJ4SEeGi0uxvOaa4gw"/>
            <children xsi:type="menu:HandledMenuItem" xmi:id="_wR7Z0J4SEeGi0uxvOaa4gw" label="Add Row" command="_bXrp8J4REeGi0uxvOaa4gw"/>
            <children xsi:type="menu:HandledMenuItem" xmi:id="_yf5GMJ4SEeGi0uxvOaa4gw" label="Delete Row" command="_l58HwJ4REeGi0uxvOaa4gw"/>
          </menus>
        </children>


对于第一个问题,您可以使用
org.eclipse.e4.ui.workbench.modeling.EPartService.activate(MPart)
来激活所需的部件。

对于第一个问题,您可以使用
org.eclipse.e4.ui.workbench.modeling.EPartService.activate(MPart)
以激活所需的部件。

我将我的部件显示如下:

MPart part = partService.findPart("my.part.id");
if( part != null ){
    if( part.isVisible() == false )
        part.setVisible(true);
    partService.showPart( part, PartState.VISIBLE);
}

我让我的部分可见,如下所示:

MPart part = partService.findPart("my.part.id");
if( part != null ){
    if( part.isVisible() == false )
        part.setVisible(true);
    partService.showPart( part, PartState.VISIBLE);
}

这应该标记为e4、eclipsejuno、eclipse-e4、eclipse-4.2或类似的东西,您是否已为您的
MPart
创建了
mpoppup菜单
,并使用
emonUservice
将其与上下文菜单连接?我在
应用程序中设置了一个弹出菜单,作为我的部件的子项。e4xmi
。然后我使用
EMenuService.registerContextMenu(…)
来连接它。应该用e4、eclipse juno、eclipse-e4、eclipse-4.2或类似的东西来标记它。对于第二个问题,您是否已为您的
MPart
创建了
mpoppup菜单
,并使用
emonUservice
将其与上下文菜单连接?我在
应用程序中设置了一个弹出菜单,作为我的部件的子项。e4xmi
。然后我使用
emoneuservice.registerContextMenu(…)
来连接它。这就是我所做的:
ps.showPart(ps.findPart(“my.part.id”)、PartState.VISIBLE)
PartState
枚举还有
ACTIVATE
CREATE
。变量
ps
是从当前上下文检索的
EPartService
的实例。我还必须在
Application.e4xmi
中设置部件的id(用于
findPart(String id)
)。这就是我所做的:
ps.showPart(ps.findPart(“my.part.id”)、PartState.VISIBLE)
PartState
枚举还有
ACTIVATE
CREATE
。变量
ps
是从当前上下文检索的
EPartService
的实例。我还必须在
Application.e4xmi
中设置部件的id(对于
findPart(字符串id)
)。