diff options
Diffstat (limited to 'org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDropDownAction.java')
-rw-r--r-- | org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDropDownAction.java | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDropDownAction.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDropDownAction.java index 3d34f1a73..f3b3d9359 100644 --- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDropDownAction.java +++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDropDownAction.java @@ -18,8 +18,13 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IMenuCreator; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.ToolItem; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; @@ -44,12 +49,11 @@ class ConsoleDropDownAction extends Action implements IMenuCreator, IConsoleList } public ConsoleDropDownAction(IConsoleView view) { + super(ConsoleMessages.ConsoleDropDownAction_0, AS_DROP_DOWN_MENU); fView= view; - setText(ConsoleMessages.ConsoleDropDownAction_0); setToolTipText(ConsoleMessages.ConsoleDropDownAction_1); setImageDescriptor(ConsolePluginImages.getImageDescriptor(IConsoleConstants.IMG_VIEW_CONSOLE)); PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IConsoleHelpContextIds.CONSOLE_DISPLAY_CONSOLE_ACTION); - setMenuCreator(this); ConsolePlugin.getDefault().getConsoleManager().addConsoleListener(this); update(); } @@ -132,6 +136,23 @@ class ConsoleDropDownAction extends Action implements IMenuCreator, IConsoleList } @Override + public void runWithEvent(Event event) { + // Show menu on drop-down button, run action otherwise + if (event.detail == SWT.ARROW && event.widget instanceof ToolItem) { + ToolItem toolItem = (ToolItem) event.widget; + Control control = toolItem.getParent(); + Menu menu = getMenu(control); + + Rectangle bounds = toolItem.getBounds(); + Point topLeft = new Point(bounds.x, bounds.y + bounds.height); + menu.setLocation(control.toDisplay(topLeft)); + menu.setVisible(true); + } else { + run(); + } + } + + @Override public void consolesAdded(IConsole[] consoles) { UIJob job = new UIJob(ConsoleMessages.UpdatingConsoleState) { @Override |