diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/LaunchDropDownAction.java')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/LaunchDropDownAction.java | 674 |
1 files changed, 337 insertions, 337 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/LaunchDropDownAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/LaunchDropDownAction.java index e84fe3fa1..4cdd6b7cf 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/LaunchDropDownAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/LaunchDropDownAction.java @@ -1,338 +1,338 @@ -package org.eclipse.debug.internal.ui.actions;
-
-/**********************************************************************
-Copyright (c) 2000, 2002 IBM Corp. All rights reserved.
-This file is made available under the terms of the Common Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/cpl-v10.html
-**********************************************************************/
-
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.internal.ui.DebugUIPlugin;
-import org.eclipse.debug.internal.ui.ILaunchHistoryChangedListener;
-import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationHistoryElement;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.SubContributionItem;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.window.ApplicationWindow;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MenuEvent;
-import org.eclipse.swt.events.MenuListener;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.ui.IActionDelegateWithEvent;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2;
-
-/**
- * Superclass of run & debug pulldown actions.
- */
-public abstract class LaunchDropDownAction implements IWorkbenchWindowPulldownDelegate2,
- IActionDelegateWithEvent,
- ILaunchHistoryChangedListener {
-
- private ExecutionAction fLaunchAction;
-
- private Menu fCreatedMenu;
-
- private DebugWithConfigurationAction fDebugWithAction;
- private RunWithConfigurationAction fRunWithAction;
-
- /**
- * This action delegate's proxy.
- */
- private IAction fActionProxy;
-
- /**
- * The tooltip that was specified in XML for this action.
- */
- private String fOriginalTooltip;
-
- protected void setActionProxy(IAction action) {
- fActionProxy = action;
- }
-
- protected IAction getActionProxy() {
- return fActionProxy;
- }
-
- public LaunchDropDownAction(ExecutionAction launchAction) {
- setLaunchAction(launchAction);
- }
-
- private void createMenuForAction(Menu parent, IAction action, int count) {
- if (count > 0) {
- StringBuffer label= new StringBuffer();
- if (count < 10) {
- //add the numerical accelerator
- label.append('&');
- label.append(count);
- label.append(' ');
- }
- label.append(action.getText());
- action.setText(label.toString());
- }
- ActionContributionItem item= new ActionContributionItem(action);
- item.fill(parent, -1);
- }
-
- /**
- * Initialize this action so that it can dynamically set its tooltip.
- */
- protected void initialize(IAction action) {
- DebugUIPlugin.getLaunchConfigurationManager().addLaunchHistoryListener(this);
- fOriginalTooltip = action.getToolTipText();
- setActionProxy(action);
- updateTooltip();
- }
-
- /**
- * Updates this action's tooltip to correspond to the most recent launch.
- */
- protected void updateTooltip() {
- LaunchConfigurationHistoryElement lastLaunched = getLastLaunch();
- String tooltip= fOriginalTooltip;
- if (lastLaunched != null) {
- tooltip= getLastLaunchPrefix() + lastLaunched.getLaunchConfiguration().getName();
- } else {
- tooltip= getStaticTooltip();
- }
- getActionProxy().setToolTipText(tooltip);
- }
-
- /**
- * @see ILaunchHistoryChangedListener#launchHistoryChanged()
- */
- public void launchHistoryChanged() {
- updateTooltip();
- }
-
- /**
- * @see IWorkbenchWindowActionDelegate#dispose()
- */
- public void dispose() {
- if (getCreatedMenu() != null) {
- getCreatedMenu().dispose();
- }
- DebugUIPlugin.getLaunchConfigurationManager().removeLaunchHistoryListener(this);
- }
-
- /**
- * Return the last launch that occurred in the workspace.
- */
- protected LaunchConfigurationHistoryElement getLastLaunch() {
- return DebugUIPlugin.getLaunchConfigurationManager().getLastLaunch();
- }
-
- /**
- * @see IWorkbenchWindowPulldownDelegate#getMenu(Control)
- */
- public Menu getMenu(Control parent) {
- if (getCreatedMenu() != null) {
- getCreatedMenu().dispose();
- }
- setCreatedMenu(new Menu(parent));
- return createMenu(getCreatedMenu());
- }
-
- /**
- * @see IMenuCreator#getMenu(Menu)
- */
- public Menu getMenu(Menu parent) {
- if (getCreatedMenu() != null) {
- getCreatedMenu().dispose();
- }
- setCreatedMenu(new Menu(parent));
- return createMenu(getCreatedMenu());
- }
-
- /**
- * Create the drop-down menu based on whether the config style pref is set
- */
- protected Menu createMenu(Menu menu) {
- LaunchConfigurationHistoryElement[] historyList= getHistory();
- LaunchConfigurationHistoryElement[] favoriteList = getFavorites();
-
- // Add any favorites
- int total = 0;
- for (int i = 0; i < favoriteList.length; i++) {
- LaunchConfigurationHistoryElement launch= favoriteList[i];
- RelaunchHistoryLaunchAction newAction= new RelaunchHistoryLaunchAction(launch);
- createMenuForAction(menu, newAction, total + 1);
- total++;
- }
-
- // Separator between favorites and history
- if (favoriteList.length > 0) {
- if (historyList.length > 0) {
- new MenuItem(menu, SWT.SEPARATOR);
- } else {
- createTopSeparator(menu);
- }
- }
-
- // Add history launches next
- for (int i = 0; i < historyList.length; i++) {
- LaunchConfigurationHistoryElement launch= historyList[i];
- RelaunchHistoryLaunchAction newAction= new RelaunchHistoryLaunchAction(launch);
- createMenuForAction(menu, newAction, total+1);
- total++;
- }
-
- // Separator between history and common actions
- if (historyList.length > 0) {
- createTopSeparator(menu);
- }
-
- // Add the actions to bring up the dialog
- if (getLaunchAction() != null) {
- // Cascading menu for config type 'shortcuts'
- if (getMode() == ILaunchManager.DEBUG_MODE) {
- createMenuForAction(menu, getDebugWithAction(), -1);
- } else {
- createMenuForAction(menu, getRunWithAction(), -1);
- }
-
- // Add non-shortcutted access to the launch configuration dialog
- OpenLaunchConfigurationsAction action = null;
- if (getMode() == ILaunchManager.DEBUG_MODE) {
- action = new OpenDebugConfigurations();
- } else {
- action = new OpenRunConfigurations();
- }
- createMenuForAction(menu, action, -1);
- }
- return menu;
- }
-
- /**
- * Create a separator at the top of the history/favorites area. This method may
- * be overridden to prevent a separator from being placed at the top.
- */
- protected void createTopSeparator(Menu menu) {
- new MenuItem(menu, SWT.SEPARATOR);
- }
-
- /**
- * @see runWithEvent(IAction, Event)
- * @see IActionDelegate#run(IAction)
- */
- public void run(IAction action) {
- }
-
- /**
- * @see IActionDelegateWithEvent#runWithEvent(IAction, Event)
- */
- public void runWithEvent(IAction action, Event event) {
- getLaunchAction().runWithEvent(action, event);
- }
-
- /**
- * @see IActionDelegate#selectionChanged(IAction, ISelection)
- */
- public void selectionChanged(IAction action, ISelection selection){
- if (fActionProxy == null) {
- initialize(action);
- }
- }
-
- /**
- * @see IWorkbenchWindowActionDelegate#init(IWorkbenchWindow)
- */
- public void init(IWorkbenchWindow window){
- }
-
- /**
- * Returns an array of previous launches applicable to this drop down.
- */
- public abstract LaunchConfigurationHistoryElement[] getHistory();
-
- /**
- * Returns an array of favorites applicable to this drop down.
- */
- public abstract LaunchConfigurationHistoryElement[] getFavorites();
-
- /**
- * Returns the mode (e.g., 'run' or 'debug') of this drop down.
- */
- public abstract String getMode();
-
- /**
- * Return the String to use as the first part of the tooltip for this action
- * when there is no launch history.
- */
- protected abstract String getStaticTooltip();
-
- /**
- * Return the String to use as the first part of the tooltip for this action
- * when there is a launch history.
- */
- protected abstract String getLastLaunchPrefix();
-
- protected ExecutionAction getLaunchAction() {
- return fLaunchAction;
- }
-
- protected void setLaunchAction(ExecutionAction launchAction) {
- fLaunchAction = launchAction;
- }
-
- /**
- * A menu listener that is used to constantly flag the debug
- * action set menu as dirty so that any underlying changes to the
- * contributions will be shown.
- * As well, if there are no history items, disable the action.
- */
- protected MenuListener getDebugActionSetMenuListener() {
- return new MenuListener() {
- public void menuShown(MenuEvent e) {
- getActionProxy().setEnabled(getHistory().length > 0 || getFavorites().length > 0);
- IWorkbenchWindow window= DebugUIPlugin.getActiveWorkbenchWindow();
- if (window instanceof ApplicationWindow) {
- ApplicationWindow appWindow= (ApplicationWindow)window;
- IMenuManager manager= appWindow.getMenuBarManager();
- IContributionItem actionSetItem= manager.findUsingPath("org.eclipse.ui.run"); //$NON-NLS-1$
- if (actionSetItem instanceof SubContributionItem) {
- IContributionItem item= ((SubContributionItem)actionSetItem).getInnerItem();
- if (item instanceof IMenuManager) {
- ((IMenuManager)item).markDirty();
- }
- }
- }
- }
- public void menuHidden(MenuEvent e) {
- }
- };
- }
-
- protected Menu getCreatedMenu() {
- return fCreatedMenu;
- }
-
- protected void setCreatedMenu(Menu createdMenu) {
- fCreatedMenu = createdMenu;
- }
-
- protected IAction getDebugWithAction() {
- if (fDebugWithAction == null) {
- fDebugWithAction= new DebugWithConfigurationAction();
- } else {
- fDebugWithAction.dispose();
- }
- return fDebugWithAction;
- }
-
- protected IAction getRunWithAction() {
- if (fRunWithAction == null) {
- fRunWithAction= new RunWithConfigurationAction();
- } else {
- fRunWithAction.dispose();
- }
- return fRunWithAction;
- }
+package org.eclipse.debug.internal.ui.actions; + +/********************************************************************** +Copyright (c) 2000, 2002 IBM Corp. All rights reserved. +This file is made available under the terms of the Common Public License v1.0 +which accompanies this distribution, and is available at +http://www.eclipse.org/legal/cpl-v10.html +**********************************************************************/ + +import org.eclipse.debug.core.ILaunchManager; +import org.eclipse.debug.internal.ui.DebugUIPlugin; +import org.eclipse.debug.internal.ui.ILaunchHistoryChangedListener; +import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationHistoryElement; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.SubContributionItem; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.window.ApplicationWindow; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.MenuEvent; +import org.eclipse.swt.events.MenuListener; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.MenuItem; +import org.eclipse.ui.IActionDelegateWithEvent; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.IWorkbenchWindowPulldownDelegate2; + +/** + * Superclass of run & debug pulldown actions. + */ +public abstract class LaunchDropDownAction implements IWorkbenchWindowPulldownDelegate2, + IActionDelegateWithEvent, + ILaunchHistoryChangedListener { + + private ExecutionAction fLaunchAction; + + private Menu fCreatedMenu; + + private DebugWithConfigurationAction fDebugWithAction; + private RunWithConfigurationAction fRunWithAction; + + /** + * This action delegate's proxy. + */ + private IAction fActionProxy; + + /** + * The tooltip that was specified in XML for this action. + */ + private String fOriginalTooltip; + + protected void setActionProxy(IAction action) { + fActionProxy = action; + } + + protected IAction getActionProxy() { + return fActionProxy; + } + + public LaunchDropDownAction(ExecutionAction launchAction) { + setLaunchAction(launchAction); + } + + private void createMenuForAction(Menu parent, IAction action, int count) { + if (count > 0) { + StringBuffer label= new StringBuffer(); + if (count < 10) { + //add the numerical accelerator + label.append('&'); + label.append(count); + label.append(' '); + } + label.append(action.getText()); + action.setText(label.toString()); + } + ActionContributionItem item= new ActionContributionItem(action); + item.fill(parent, -1); + } + + /** + * Initialize this action so that it can dynamically set its tooltip. + */ + protected void initialize(IAction action) { + DebugUIPlugin.getLaunchConfigurationManager().addLaunchHistoryListener(this); + fOriginalTooltip = action.getToolTipText(); + setActionProxy(action); + updateTooltip(); + } + + /** + * Updates this action's tooltip to correspond to the most recent launch. + */ + protected void updateTooltip() { + LaunchConfigurationHistoryElement lastLaunched = getLastLaunch(); + String tooltip= fOriginalTooltip; + if (lastLaunched != null) { + tooltip= getLastLaunchPrefix() + lastLaunched.getLaunchConfiguration().getName(); + } else { + tooltip= getStaticTooltip(); + } + getActionProxy().setToolTipText(tooltip); + } + + /** + * @see ILaunchHistoryChangedListener#launchHistoryChanged() + */ + public void launchHistoryChanged() { + updateTooltip(); + } + + /** + * @see IWorkbenchWindowActionDelegate#dispose() + */ + public void dispose() { + if (getCreatedMenu() != null) { + getCreatedMenu().dispose(); + } + DebugUIPlugin.getLaunchConfigurationManager().removeLaunchHistoryListener(this); + } + + /** + * Return the last launch that occurred in the workspace. + */ + protected LaunchConfigurationHistoryElement getLastLaunch() { + return DebugUIPlugin.getLaunchConfigurationManager().getLastLaunch(); + } + + /** + * @see IWorkbenchWindowPulldownDelegate#getMenu(Control) + */ + public Menu getMenu(Control parent) { + if (getCreatedMenu() != null) { + getCreatedMenu().dispose(); + } + setCreatedMenu(new Menu(parent)); + return createMenu(getCreatedMenu()); + } + + /** + * @see IMenuCreator#getMenu(Menu) + */ + public Menu getMenu(Menu parent) { + if (getCreatedMenu() != null) { + getCreatedMenu().dispose(); + } + setCreatedMenu(new Menu(parent)); + return createMenu(getCreatedMenu()); + } + + /** + * Create the drop-down menu based on whether the config style pref is set + */ + protected Menu createMenu(Menu menu) { + LaunchConfigurationHistoryElement[] historyList= getHistory(); + LaunchConfigurationHistoryElement[] favoriteList = getFavorites(); + + // Add any favorites + int total = 0; + for (int i = 0; i < favoriteList.length; i++) { + LaunchConfigurationHistoryElement launch= favoriteList[i]; + RelaunchHistoryLaunchAction newAction= new RelaunchHistoryLaunchAction(launch); + createMenuForAction(menu, newAction, total + 1); + total++; + } + + // Separator between favorites and history + if (favoriteList.length > 0) { + if (historyList.length > 0) { + new MenuItem(menu, SWT.SEPARATOR); + } else { + createTopSeparator(menu); + } + } + + // Add history launches next + for (int i = 0; i < historyList.length; i++) { + LaunchConfigurationHistoryElement launch= historyList[i]; + RelaunchHistoryLaunchAction newAction= new RelaunchHistoryLaunchAction(launch); + createMenuForAction(menu, newAction, total+1); + total++; + } + + // Separator between history and common actions + if (historyList.length > 0) { + createTopSeparator(menu); + } + + // Add the actions to bring up the dialog + if (getLaunchAction() != null) { + // Cascading menu for config type 'shortcuts' + if (getMode() == ILaunchManager.DEBUG_MODE) { + createMenuForAction(menu, getDebugWithAction(), -1); + } else { + createMenuForAction(menu, getRunWithAction(), -1); + } + + // Add non-shortcutted access to the launch configuration dialog + OpenLaunchConfigurationsAction action = null; + if (getMode() == ILaunchManager.DEBUG_MODE) { + action = new OpenDebugConfigurations(); + } else { + action = new OpenRunConfigurations(); + } + createMenuForAction(menu, action, -1); + } + return menu; + } + + /** + * Create a separator at the top of the history/favorites area. This method may + * be overridden to prevent a separator from being placed at the top. + */ + protected void createTopSeparator(Menu menu) { + new MenuItem(menu, SWT.SEPARATOR); + } + + /** + * @see runWithEvent(IAction, Event) + * @see IActionDelegate#run(IAction) + */ + public void run(IAction action) { + } + + /** + * @see IActionDelegateWithEvent#runWithEvent(IAction, Event) + */ + public void runWithEvent(IAction action, Event event) { + getLaunchAction().runWithEvent(action, event); + } + + /** + * @see IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection){ + if (fActionProxy == null) { + initialize(action); + } + } + + /** + * @see IWorkbenchWindowActionDelegate#init(IWorkbenchWindow) + */ + public void init(IWorkbenchWindow window){ + } + + /** + * Returns an array of previous launches applicable to this drop down. + */ + public abstract LaunchConfigurationHistoryElement[] getHistory(); + + /** + * Returns an array of favorites applicable to this drop down. + */ + public abstract LaunchConfigurationHistoryElement[] getFavorites(); + + /** + * Returns the mode (e.g., 'run' or 'debug') of this drop down. + */ + public abstract String getMode(); + + /** + * Return the String to use as the first part of the tooltip for this action + * when there is no launch history. + */ + protected abstract String getStaticTooltip(); + + /** + * Return the String to use as the first part of the tooltip for this action + * when there is a launch history. + */ + protected abstract String getLastLaunchPrefix(); + + protected ExecutionAction getLaunchAction() { + return fLaunchAction; + } + + protected void setLaunchAction(ExecutionAction launchAction) { + fLaunchAction = launchAction; + } + + /** + * A menu listener that is used to constantly flag the debug + * action set menu as dirty so that any underlying changes to the + * contributions will be shown. + * As well, if there are no history items, disable the action. + */ + protected MenuListener getDebugActionSetMenuListener() { + return new MenuListener() { + public void menuShown(MenuEvent e) { + getActionProxy().setEnabled(getHistory().length > 0 || getFavorites().length > 0); + IWorkbenchWindow window= DebugUIPlugin.getActiveWorkbenchWindow(); + if (window instanceof ApplicationWindow) { + ApplicationWindow appWindow= (ApplicationWindow)window; + IMenuManager manager= appWindow.getMenuBarManager(); + IContributionItem actionSetItem= manager.findUsingPath("org.eclipse.ui.run"); //$NON-NLS-1$ + if (actionSetItem instanceof SubContributionItem) { + IContributionItem item= ((SubContributionItem)actionSetItem).getInnerItem(); + if (item instanceof IMenuManager) { + ((IMenuManager)item).markDirty(); + } + } + } + } + public void menuHidden(MenuEvent e) { + } + }; + } + + protected Menu getCreatedMenu() { + return fCreatedMenu; + } + + protected void setCreatedMenu(Menu createdMenu) { + fCreatedMenu = createdMenu; + } + + protected IAction getDebugWithAction() { + if (fDebugWithAction == null) { + fDebugWithAction= new DebugWithConfigurationAction(); + } else { + fDebugWithAction.dispose(); + } + return fDebugWithAction; + } + + protected IAction getRunWithAction() { + if (fRunWithAction == null) { + fRunWithAction= new RunWithConfigurationAction(); + } else { + fRunWithAction.dispose(); + } + return fRunWithAction; + } }
\ No newline at end of file |