Java 如何通过actionSet扩展点将菜单贡献给Workbenchwindow?
在我的RCP程序中,我在工作台窗口中添加了一个菜单“Demo”,在“Demo”下面添加了一个单独的“addition”。代码如下:Java 如何通过actionSet扩展点将菜单贡献给Workbenchwindow?,java,eclipse,rcp,Java,Eclipse,Rcp,在我的RCP程序中,我在工作台窗口中添加了一个菜单“Demo”,在“Demo”下面添加了一个单独的“addition”。代码如下: public class ApplicationActionBarAdvisor extends ActionBarAdvisor { private ExampleAction exampleAction; @Override protected void makeActions(IWorkbenchWindow window) { // TODO A
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
private ExampleAction exampleAction;
@Override
protected void makeActions(IWorkbenchWindow window) {
// TODO Auto-generated method stub
super.makeActions(window);
exampleAction = new ExampleAction(window);
}
@Override
protected void fillMenuBar(IMenuManager menuBar) {
// TODO Auto-generated method stub
super.fillMenuBar(menuBar);
MenuManager demoMenu = new MenuManager("&Demo", "demo");
demoMenu.add(exampleAction);
demoMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
menuBar.add(demoMenu);
}
..............
}
现在,我想为“演示/添加”位置提供一个子菜单。我声明一个actionSet扩展点,如下所示
<extension
point="org.eclipse.ui.actionSets">
<actionSet
id="RCP-View-Example.actionSet"
label="actionSet">
<menu
id="RCP-View-Example.menu"
label="ActionSetMenu"
path="demo/additions">
<groupMarker
name="menuItem">
</groupMarker>
</menu>
<action
class="Action1"
id="RCP-View-Example.action"
label="Action"
menubarPath="RCP-View-Example.menu/menuItem"
style="push"
toolbarPath="main/additions">
</action>
</actionSet>
</extension>
<extension
point="org.eclipse.ui.actionSetPartAssociations">
<actionSetPartAssociation
targetID="RCP-View-Example.actionSet">
<part
id="my.view">
</part>
</actionSetPartAssociation>
</extension>
我看不出菜单是在“演示”菜单下提供和显示的。
我将菜单路径从“path=“demo/additions”修改为“path=“org.eclipse.ui.main.menu/demo/additions”,但仍然没有看到它
有人能帮我看看我的程序出了什么问题吗
我将菜单路径从path=“demo/additions”修改为path=“additions”。打开视图时,我会在“demo”之后看到菜单。但是,在actionSetPartAssociations扩展点中指定的视图关闭后,菜单仍然存在。
我希望菜单在与之关联的视图关闭时消失。
我的程序出了什么问题?我认为来自的注释可能适合这里: 当前存在影响操作集的实现限制。定义操作集中要引用的整个菜单结构非常重要。因此,例如,如果另一个操作集定义了名为“示例”的菜单,则无法依赖现有的“示例”。有必要重新定义“示例”“每个希望使用它的操作集中的菜单 因此,问题可能出在子菜单path=“demo/additions”中,它应该包括子菜单的完整路径。如果您已经有了该子菜单,您可以尝试在该菜单内的某个操作上使用Alt+Shift+F2来查找该菜单的Id,然后从该菜单开始工作
但是,如果您刚刚开始使用菜单,我建议您立即使用命令框架。即使您使用的是一个已经建立的富客户机,您也可以轻松地将命令放在任何您喜欢的地方,并且EclipseJuno和更新版本中不推荐使用actionSets扩展点。可以找到一个很好的命令教程 我想这封信可能适合这里: 目前存在影响操作集的实现限制。定义动作集中要引用的整个菜单结构非常重要。因此,例如,如果另一个动作集定义了一个名为“示例”的菜单,则不可能依赖现有的“示例”。有必要在每个希望使用“示例”菜单的操作集中重新定义“示例”菜单 因此,问题可能出在子菜单path=“demo/additions”中,它应该包括子菜单的完整路径。如果您已经有了该子菜单,您可以尝试在该菜单内的某个操作上使用Alt+Shift+F2来查找该菜单的Id,然后从该菜单开始工作
但是,如果您刚刚开始使用菜单,我建议您立即使用命令框架。即使您使用的是一个已经建立的富客户机,您也可以轻松地将命令放在任何您喜欢的地方,并且EclipseJuno和更新版本中不推荐使用actionSets扩展点。可以找到一个很好的命令教程 请参阅org.eclipse.ui.internal.navigator.resources.actions.NewActionProvider.java
请参见fillContextMenu()方法。他们在那里创建了一个子菜单。它将帮助您理解。请参阅org.eclipse.ui.internal.navigator.resources.actions.NewActionProvider.java
请参见fillContextMenu()方法。他们在那里创建了一个子菜单。这将帮助您理解。谢谢您的反馈。它回答了我的第一个问题。我的第二个问题呢?我认为扩展点org.eclipse.ui.actionSetPartAssociations将一个actionSet与一个视图链接起来。关闭视图后,我认为相应的菜单应该消失,我的期望是否正确?谢谢您的反馈。它回答了我的第一个问题。我的第二个问题呢?我认为扩展点org.eclipse.ui.actionSetPartAssociations将一个actionSet与一个视图链接起来。关闭视图后,我认为相应的菜单应该消失,我的预期正确吗?