[英]Adding a Menu Action to a view
我想在我的视图中添加一个菜单操作,例如从Eclipse Console进行的操作:
我设法做了非常类似的事情。从我要在菜单上执行的两个操作中,有一个与MenuCreator相关联,但是通过这种方式将此操作设置为顶部操作,换句话说,将操作设置为顶部箭头来打开菜单,并且,当我单击它时,而不是打开菜单,而是从该动作开始在run方法中的代码。
我想要控制台操作的确切行为,我希望菜单上的2个操作和顶部的小图标打开此菜单。.我该怎么做?
到目前为止的代码:
private void createToolBar() {
IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager();
actionNovaDespesa = new OpenNewDespesa();
actionNovaDespesa.setMenuCreator(new CustomActionMenu());
toolBar.add(actionNovaDespesa);
}
public class CustomActionMenu implements IMenuCreator {
private Menu menu;
public Menu getMenu(Control parent) {
menu = new Menu(parent);
MenuItem menuItemColaboradores = new MenuItem(menu, SWT.PUSH);
menuItemColaboradores.setText(LabelVARS.DESPESA_COLABORADOR);
menuItemColaboradores.setImage(Activator.getImageDescriptor(IconVARS.TOOLBAR_UTILIZADOR).createImage());
menuItemColaboradores.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
new OpenNewDespesaColaborador().run();
}
});
return menu;
}
public void dispose() {
if(menu != null) {
menu.dispose();
menu = null;
}
}
public Menu getMenu(Menu parent) {
return null;
}
}
您需要使菜单实现IAction
以及IMenuCreator
。 就像是:
class DropDownAction extends Action implements IMenuCreator
{
private Menu menu;
DropDownAction()
{
super("Name", IAction.AS_DROP_DOWN_MENU);
setImageDescriptor(... image descriptor for button);
setMenuCreator(this);
}
@Override
public void dispose()
{
if (menu != null) {
menu.dispose();
menu = null;
}
}
@Override
public void runWithEvent(final Event event)
{
if (event.widget instanceof ToolItem)
{
final ToolItem toolItem = (ToolItem)event.widget;
final Control control = toolItem.getParent();
final Menu menu = getMenu(control);
final Rectangle bounds = toolItem.getBounds();
final Point topLeft = new Point(bounds.x, bounds.y + bounds.height);
menu.setLocation(control.toDisplay(topLeft));
menu.setVisible(true);
}
}
@Override
public Menu getMenu(final Control parent)
{
if (menu != null) {
menu.dispose();
}
menu = new Menu(parent);
// TODO add your menu items
return menu;
}
@Override
public Menu getMenu(final Menu parent)
{
return null;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.