package com.hundsun.ares.studio.ui.editor.actions; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuCreator; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; public class ActionGroup extends Action { protected IAction[] actions; private MenuManager manager; private IMenuCreator menuCreator = new IMenuCreator() { @Override public Menu getMenu(Menu parent) { return null; } @Override public Menu getMenu(Control parent) { if (manager == null) { manager = new MenuManager(); manager.setRemoveAllWhenShown(true); manager.addMenuListener(new IMenuListener() { @Override public void menuAboutToShow(IMenuManager manager) { for (IAction a : actions) { manager.add(a); } } }); manager.createContextMenu(parent); } return manager.getMenu(); } @Override public void dispose() { if (manager != null) { manager.dispose(); } } }; /** * ������Action�������� * @param actions */ public ActionGroup(IAction[] actions) { super("", AS_DROP_DOWN_MENU); this.actions = actions; if (actions != null && actions.length > 0) { setText(actions[0].getText()); setToolTipText(actions[0].getText()); setImageDescriptor(actions[0].getImageDescriptor()); } } @Override public IMenuCreator getMenuCreator() { return menuCreator; } @Override public void run() { if (actions != null && actions.length > 0) { actions[0].run(); } } }