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