diff options
Diffstat (limited to 'target_explorer')
7 files changed, 157 insertions, 252 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties index 4f118cf5d..cbe139c00 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties @@ -105,6 +105,9 @@ command.history.tooltip=Lists the recently executed actions. command.historyLast.label=Execute Last Action command.historyLast.mnemonic=x +command.defaultContextActions.label=Target Actions +command.defaultContextActions.tooltip=Target actions for the selected connection. + toolbar.label=System Management matchColors.toolbarWarningBackground.label=Connection Toolbar Warning Background matchColors.toolbarWarningBackground.description=The color used to render the background of the connection dropdown in a warning status.
\ No newline at end of file diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml index 4cdb7fda5..7233ee18c 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml @@ -638,10 +638,17 @@ </menuContribution> <menuContribution locationURI="toolbar:org.eclipse.tcf.te.tcf.ui.toolbar?after=group.actions"> - <control - class="org.eclipse.tcf.te.tcf.ui.handler.DefaultContextActionsToolbarContribution" - id="org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"> - </control> + <command + commandId="org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution" + style="pulldown" + icon="icons/obj16/targets_view.gif" + tooltip="%command.defaultContextActions.tooltip"> + </command> + </menuContribution> + + <menuContribution + locationURI="menu:org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution" + class="org.eclipse.tcf.te.tcf.ui.handler.DefaultContextActionsMenuContribution"> </menuContribution> <menuContribution locationURI="menu:org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution?after=group.history"> @@ -819,6 +826,12 @@ helpContextId="org.eclipse.tcf.te.tcf.ui.command_HistoryLast" name="%command.historyLast.label"> </command> + <command + id="org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution" + categoryId="org.eclipse.tcf.te.ui.commands.category" + name="%command.defaultContextActions.label" + description="%command.defaultContextActions.tooltip"> + </command> </extension> <!-- Command shortcuts --> @@ -1137,6 +1150,16 @@ </with> </enabledWhen> </handler> + + <handler + commandId="org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution" + class="org.eclipse.tcf.te.tcf.ui.handler.DefaultContextActionsCommandHandler"> + <activeWhen> + <with variable="defaultContextSelection"> + <instanceof value="org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode"/> + </with> + </activeWhen> + </handler> </extension> <!-- Tabbed properties view contributions --> diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java new file mode 100644 index 000000000..cc5ebe764 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java @@ -0,0 +1,78 @@ +/******************************************************************************* + * Copyright (c) 2016 Wind River Systems, Inc. and others. 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 + * + * Contributors: + * Wind River Systems - initial API and implementation + *******************************************************************************/ +package org.eclipse.tcf.te.tcf.ui.handler; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.action.ContributionManager; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.Separator; +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.ToolItem; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.QuickMenuCreator; +import org.eclipse.ui.menus.IMenuService; + +public class DefaultContextActionsCommandHandler extends AbstractHandler { + + protected static final String DEFAULT_CONTEXT_ACTIONS_URI = "org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"; //$NON-NLS-1$ + + protected Point menuLocation = null; + + private final QuickMenuCreator fMenuCreator = new QuickMenuCreator() { + @SuppressWarnings("cast") + @Override + protected void fillMenu(IMenuManager menu) { + if (!(menu instanceof ContributionManager)) { + return; + } + IMenuService service = (IMenuService) PlatformUI.getWorkbench() + .getService(IMenuService.class); + + menu.add(new Separator("group.connect")); //$NON-NLS-1$ + menu.add(new Separator("group.launch")); //$NON-NLS-1$ + menu.add(new Separator("group.launch.rundebug")); //$NON-NLS-1$ + menu.add(new Separator("group.history")); //$NON-NLS-1$ + menu.add(new Separator("group.additions")); //$NON-NLS-1$ + service.populateContributionManager((ContributionManager) menu, "menu:" + DEFAULT_CONTEXT_ACTIONS_URI); //$NON-NLS-1$ + for (IContributionItem item : menu.getItems()) { + item.update(); + } + } + + @Override + protected Point computeMenuLocation(Control focus) { + if (menuLocation != null) { + return menuLocation; + } + return super.computeMenuLocation(focus); + } + }; + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + // Get the position of the ToolItem + Event eventTrigger = (Event) event.getTrigger(); + ToolItem toolItem = (ToolItem) eventTrigger.widget; + Rectangle bounds = toolItem.getBounds(); + if ( bounds != null ) { + menuLocation = toolItem.getParent().toDisplay(bounds.x, bounds.y + bounds.height); + } + + fMenuCreator.createMenu(); + return null; + } + +} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java new file mode 100644 index 000000000..e16b7a1e3 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2016 Wind River Systems, Inc. and others. 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 + * + * Contributors: + * Wind River Systems - initial API and implementation + *******************************************************************************/ +package org.eclipse.tcf.te.tcf.ui.handler; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.tcf.te.runtime.utils.StatusHelper; +import org.eclipse.tcf.te.tcf.ui.activator.UIPlugin; +import org.eclipse.ui.menus.ExtensionContributionFactory; +import org.eclipse.ui.menus.IContributionRoot; +import org.eclipse.ui.menus.IMenuService; +import org.eclipse.ui.services.IServiceLocator; + +public class DefaultContextActionsMenuContribution extends ExtensionContributionFactory { + + @SuppressWarnings("cast") + @Override + public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions) { + try { + MenuManager menuMgr = new MenuManager(); + menuMgr.add(new Separator("group.connect")); //$NON-NLS-1$ + menuMgr.add(new Separator("group.launch")); //$NON-NLS-1$ + menuMgr.add(new Separator("group.launch.rundebug")); //$NON-NLS-1$ + menuMgr.add(new Separator("group.history")); //$NON-NLS-1$ + menuMgr.add(new Separator("group.additions")); //$NON-NLS-1$ + IMenuService service = (IMenuService) serviceLocator.getService(IMenuService.class); + service.populateContributionManager(menuMgr, "menu:" + getLocation()); //$NON-NLS-1$ + for (IContributionItem item : menuMgr.getItems()) { + additions.addContributionItem(item, null); + item.update(); + } + } + catch (Exception e) { + if (Platform.inDebugMode()) { + Platform.getLog(UIPlugin.getDefault().getBundle()).log(StatusHelper.getStatus(e)); + } + } + } +} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsToolbarContribution.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsToolbarContribution.java deleted file mode 100644 index bcca971da..000000000 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsToolbarContribution.java +++ /dev/null @@ -1,239 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014 Wind River Systems, Inc. and others. 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 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ - -package org.eclipse.tcf.te.tcf.ui.handler; - -import java.util.EventObject; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.action.IContributionItem; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.swt.widgets.ToolItem; -import org.eclipse.tcf.te.runtime.concurrent.util.ExecutorsUtil; -import org.eclipse.tcf.te.runtime.events.ChangeEvent; -import org.eclipse.tcf.te.runtime.events.EventManager; -import org.eclipse.tcf.te.runtime.interfaces.events.IEventListener; -import org.eclipse.tcf.te.runtime.services.ServiceManager; -import org.eclipse.tcf.te.runtime.utils.StatusHelper; -import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; -import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProperties; -import org.eclipse.tcf.te.tcf.locator.interfaces.services.IDefaultContextService; -import org.eclipse.tcf.te.tcf.ui.activator.UIPlugin; -import org.eclipse.tcf.te.tcf.ui.internal.ImageConsts; -import org.eclipse.tcf.te.tcf.ui.nls.Messages; -import org.eclipse.tcf.te.ui.views.handler.ShowInSystemManagementHandler; -import org.eclipse.tcf.te.ui.views.interfaces.IUIConstants; -import org.eclipse.ui.menus.IMenuService; -import org.eclipse.ui.menus.IWorkbenchContribution; -import org.eclipse.ui.menus.WorkbenchWindowControlContribution; -import org.eclipse.ui.services.IServiceLocator; - -/** - * DefaultContextActionsToolbarContribution - */ -public class DefaultContextActionsToolbarContribution extends WorkbenchWindowControlContribution -implements IWorkbenchContribution, IEventListener { - - ToolBar toolbar = null; - ToolItem item = null; - - IServiceLocator serviceLocator = null; - - private MenuManager menuMgr = null; - private Menu menu = null; - - private boolean clickRunning = false; - - /** - * Constructor. - */ - public DefaultContextActionsToolbarContribution() { - this("org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"); //$NON-NLS-1$ - } - - /** - * Constructor. - * - * @param id - */ - public DefaultContextActionsToolbarContribution(String id) { - super(id); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.menus.IWorkbenchContribution#initialize(org.eclipse.ui.services.IServiceLocator) - */ - @Override - public void initialize(IServiceLocator serviceLocator) { - this.serviceLocator = serviceLocator; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.action.ContributionItem#isDynamic() - */ - @Override - public boolean isDynamic() { - return true; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.action.ControlContribution#createControl(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createControl(Composite parent) { - toolbar = new ToolBar(parent, SWT.FLAT); - item = new ToolItem(toolbar, SWT.DROP_DOWN); - item.setImage(UIPlugin.getImage(ImageConsts.SYSTEM_MGNT_VIEW)); - item.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null); - if (peerNode != null && (e.stateMask & SWT.MODIFIER_MASK) != 0 && (e.stateMask & SWT.CTRL) == SWT.CTRL && (e.stateMask & SWT.SHIFT) == SWT.SHIFT) { - ShowInSystemManagementHandler.setAndCheckSelection(IUIConstants.ID_EXPLORER, peerNode); - return; - } - onButtonClick(); - } - }); - - - EventManager.getInstance().addEventListener(this, ChangeEvent.class); - - update(); - - return toolbar; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.action.ContributionItem#dispose() - */ - @Override - public void dispose() { - super.dispose(); - - EventManager.getInstance().removeEventListener(this); - - item.dispose(); - toolbar.dispose(); - - if (menu != null && !menu.isDisposed()) { - menu.setVisible(false); - menu.dispose(); - menu = null; - } - if (menuMgr != null) { - menuMgr.dispose(); - menuMgr = null; - } - } - - protected void onButtonClick() { - if (!clickRunning) { - clickRunning = true; - update(); - createContextMenu(toolbar); - if (menu != null) { - Point point = toolbar.toDisplay(toolbar.getLocation()); - menu.setLocation(point.x, point.y + toolbar.getBounds().height); - menu.setVisible(true); - } - clickRunning = false; - } - } - - /* (non-Javadoc) - * @see org.eclipse.jface.action.ContributionItem#update() - */ - @Override - public void update() { - if (menu != null && !menu.isDisposed()) { - menu.setVisible(false); - menu.dispose(); - menu = null; - } - if (menuMgr != null) { - menuMgr.dispose(); - } - - if (item != null && !item.isDisposed()) { - IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null); -// item.setEnabled(peerNode != null && peerNode.getConnectState() == IConnectable.STATE_CONNECTED); - - if (peerNode == null) { - item.setToolTipText(Messages.DefaultContextActionsToolbarContribution_tooltip_button_noContext); - item.setEnabled(false); - } - else { - item.setToolTipText(Messages.DefaultContextActionsToolbarContribution_tooltip_button); - item.setEnabled(true); - } -// else if (item.isEnabled()) { -// item.setToolTipText(Messages.DefaultContextActionsToolbarContribution_tooltip_button); -// } -// else { -// item.setToolTipText(Messages.DefaultContextActionsToolbarContribution_tooltip_button_disabled); -// } - } - } - - protected void createContextMenu(Composite panel) { - try { - menuMgr = new MenuManager(); - menuMgr.add(new Separator("group.connect")); //$NON-NLS-1$ - menuMgr.add(new Separator("group.launch")); //$NON-NLS-1$ - menuMgr.add(new Separator("group.launch.rundebug")); //$NON-NLS-1$ - menuMgr.add(new Separator("group.history")); //$NON-NLS-1$ - menuMgr.add(new Separator("group.additions")); //$NON-NLS-1$ - final IMenuService service = (IMenuService) serviceLocator.getService(IMenuService.class); - service.populateContributionManager(menuMgr, "menu:" + getId()); //$NON-NLS-1$ - for (IContributionItem item : menuMgr.getItems()) { - item.update(); - } - menu = menuMgr.createContextMenu(panel); - } - catch (Exception e) { - if (Platform.inDebugMode()) { - Platform.getLog(UIPlugin.getDefault().getBundle()).log(StatusHelper.getStatus(e)); - } - menuMgr = null; - menu = null; - } - } - - /* (non-Javadoc) - * @see org.eclipse.tcf.te.runtime.interfaces.events.IEventListener#eventFired(java.util.EventObject) - */ - @Override - public void eventFired(EventObject event) { - if (event instanceof ChangeEvent) { - ChangeEvent changeEvent = (ChangeEvent)event; - IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null); - if (changeEvent.getSource() instanceof IDefaultContextService || - (changeEvent.getSource() == peerNode && - (IPeerNodeProperties.PROPERTY_CONNECT_STATE.equals(changeEvent.getEventId()) || "properties".equals(changeEvent.getEventId())))) { //$NON-NLS-1$ - ExecutorsUtil.executeInUI(new Runnable() { - @Override - public void run() { - update(); - } - }); - } - } - } -} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java index 0fe932a7f..d28bb7812 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2015 Wind River Systems, Inc. and others. All rights reserved. + * Copyright (c) 2011, 2016 Wind River Systems, Inc. and others. 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 @@ -232,10 +232,6 @@ public class Messages extends NLS { public static String DefaultContextSelectorToolbarContribution_tooltip_button; public static String DefaultContextSelectorToolbarContribution_tooltip_warningFix; - public static String DefaultContextActionsToolbarContribution_tooltip_button; - public static String DefaultContextActionsToolbarContribution_tooltip_button_disabled; - public static String DefaultContextActionsToolbarContribution_tooltip_button_noContext; - public static String LoggingPreferencePage_label; public static String LoggingPreferencePage_enabled_label; public static String LoggingPreferencePage_monitorEnabled_label; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties index eff19ef1b..8aef9f653 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties @@ -172,10 +172,6 @@ DefaultContextSelectorToolbarContribution_label_new=New Connection... DefaultContextSelectorToolbarContribution_tooltip_button=Change the default connection or create a new connection. DefaultContextSelectorToolbarContribution_tooltip_warningFix=Fix issue -DefaultContextActionsToolbarContribution_tooltip_button=Target actions for the selected connection. -DefaultContextActionsToolbarContribution_tooltip_button_disabled=Please connect to see actions for the selected default connection. -DefaultContextActionsToolbarContribution_tooltip_button_noContext=Please create a new connection first. - # ***** Preference Pages ***** LoggingPreferencePage_label=Logging settings for agent communication: |