我已经想通了。两种方式:一种使用org.eclipse.ui.viewActions
扩展,另一种使用org.eclipse.ui.menus
使用org.eclipse.ui.viewActions
扩展 (eclipse >= 3.5)
<extension point="org.eclipse.ui.viewActions">
<viewContribution id="..." targetId="$MyViewId$">
<action id="..."
toolbarPath="action1"
class="xxx.MyAction"
style="pulldown">
</action>
</viewContribution>
</extension>
- 动作类必须实现
IViewActionDelegate
(对视图工具栏有贡献的动作是必需的)和IMenuCreator
(定义菜单行为)。
public class RetrieveViolationsViewActionDelegate implements IViewActionDelegate, IMenuCreator
{
private IAction action;
private Menu menu;
// IViewActionDelegate methods
...
// IMenuCreator methods
public void selectionChanged(IAction action, ISelection selection)
{
if (action != this.action)
{
action.setMenuCreator(this);
this.action = action;
}
}
public void dispose()
{
if (menu != null)
{
menu.dispose();
}
}
public Menu getMenu(Control parent)
{
Menu menu = new Menu(parent);
addActionToMenu(menu, new ClassImplemententingIAction());
return menu;
}
public Menu getMenu(Menu parent)
{
// Not use
return null;
}
private void addActionToMenu(Menu menu, IAction action)
{
ActionContributionItem item= new ActionContributionItem(action);
item.fill(menu, -1);
}
}
使用 org.eclipse.ui.menus (eclipse >= 3.3)
- 将新的 menucontribution 添加到
org.eclipse.ui.menus
扩展点。
- 将位置 URI 设置为
toolbar:IdOfYourView
- 向此扩展添加一个工具栏,并向此新工具栏添加一个新命令。
- 将命令样式更改为
pulldown
- 创建一个新的 menucontribution 并将 locationURI 设置为
menu:IdOfThePullDownCommand
- 向此菜单添加命令。
更多信息