/*******************************************************************************
* Copyright (c) 2007, 2008 Edgar Espina.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
*******************************************************************************/
package org.deved.antlride.ui.action;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuCreator;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
public class DropDownMenu extends Action implements IMenuCreator {
private Menu fMenu;
private Action[] delegates;
public DropDownMenu(Action... delegates) {
super("", delegates.length > 1 ? IAction.AS_DROP_DOWN_MENU
: IAction.AS_PUSH_BUTTON);
setMenuCreator(this);
this.delegates = delegates;
setImageDescriptor(delegates[0].getImageDescriptor());
setToolTipText(delegates[0].getToolTipText());
}
public void dispose() {
if (fMenu != null)
fMenu.dispose();
delegates = null;
}
public Menu getMenu(Control parent) {
fMenu = new Menu(parent);
for (int i = 0; i < delegates.length; i++) {
ActionContributionItem item = new ActionContributionItem(
delegates[i]);
item.fill(fMenu, -1);
}
return fMenu;
}
public Menu getMenu(Menu parent) {
return null;
}
@Override
public void run() {
// fMenu.setVisible(true);
delegates[0].run();
}
@Override
public void setEnabled(boolean enabled) {
for (int i = 0; i < delegates.length; i++) {
delegates[i].setEnabled(enabled);
}
super.setEnabled(enabled);
}
public void setEnabledAll(boolean enabled) {
for (int i = 0; i < delegates.length; i++) {
delegates[i].setEnabled(enabled);
}
super.setEnabled(enabled);
}
}