From 1a1bcf774bf3709fbbabd9ab2b50c6f1f5492b0c Mon Sep 17 00:00:00 2001 From: Uwe Stieber Date: Mon, 14 Sep 2015 08:06:44 +0200 Subject: [PATCH] Improve "New Terminal View" handling. - Add a command to open the new terminal view. Allows to associate a short cut - Open the "Open Terminal" dialog on creating a new terminal view --- .../plugin.properties | 2 ++ .../plugin.xml | 15 ++++++++ .../ui/actions/NewTerminalViewAction.java | 34 +++++++++++++++--- .../handler/NewTerminalViewHandler.java | 35 +++++++++++++++++++ 4 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java diff --git a/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties b/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties index 226931dd801..a7a1089ad4f 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties +++ b/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties @@ -42,6 +42,8 @@ command.disconnect.name=Disconnect Terminal command.disconnect.label=Disconnect command.disconnect.tooltip=Disconnect Terminal Connection +command.newview.name=New Terminal View + menu.showIn.label = Show In menu.showIn.mnemonic=I diff --git a/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml b/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml index f18f9d89eb5..6c04a8c9d0e 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml +++ b/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml @@ -239,6 +239,12 @@ id="org.eclipse.tm.terminal.view.ui.command.disconnect" name="%command.disconnect.name"> + + @@ -291,6 +297,15 @@ + + + + + + + diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java index 5cb005bab39..a9e8093e324 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java @@ -9,14 +9,21 @@ *******************************************************************************/ package org.eclipse.tm.terminal.view.ui.actions; +import org.eclipse.core.commands.Command; +import org.eclipse.core.commands.ParameterizedCommand; +import org.eclipse.core.runtime.Assert; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.IAction; import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants; import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts; -import org.eclipse.tm.terminal.view.ui.manager.ConsoleManager; import org.eclipse.tm.terminal.view.ui.nls.Messages; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.commands.ICommandService; +import org.eclipse.ui.handlers.IHandlerService; /** * Opens a new terminal view with a new secondary view ID. @@ -44,10 +51,27 @@ public class NewTerminalViewAction extends AbstractTerminalAction { /* (non-Javadoc) * @see org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction#run() */ - @Override + @SuppressWarnings("cast") + @Override public void run() { - String secondaryId = ConsoleManager.getInstance().getNextTerminalSecondaryId(IUIConstants.ID); - ConsoleManager.getInstance().showConsoleView(IUIConstants.ID, secondaryId); + ICommandService service = (ICommandService)PlatformUI.getWorkbench().getService(ICommandService.class); + Command command = service != null ? service.getCommand("org.eclipse.tm.terminal.view.ui.command.newview") : null; //$NON-NLS-1$ + if (command != null && command.isDefined() && command.isEnabled()) { + try { + ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null); + Assert.isNotNull(pCmd); + IHandlerService handlerSvc = (IHandlerService)PlatformUI.getWorkbench().getService(IHandlerService.class); + Assert.isNotNull(handlerSvc); + handlerSvc.executeCommandInContext(pCmd, null, handlerSvc.getCurrentState()); + } catch (Exception e) { + // If the platform is in debug mode, we print the exception to the log view + if (Platform.inDebugMode()) { + IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), + Messages.AbstractTriggerCommandHandler_error_executionFailed, e); + UIPlugin.getDefault().getLog().log(status); + } + } + } } } diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java new file mode 100644 index 00000000000..7cf909837f0 --- /dev/null +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2015 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.tm.terminal.view.ui.internal.handler; + +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants; +import org.eclipse.tm.terminal.view.ui.manager.ConsoleManager; + +/** + * New Terminal View handler implementation + */ +public class NewTerminalViewHandler extends AbstractTriggerCommandHandler { + + /* (non-Javadoc) + * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) + */ + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + String secondaryId = ConsoleManager.getInstance().getNextTerminalSecondaryId(IUIConstants.ID); + ConsoleManager.getInstance().showConsoleView(IUIConstants.ID, secondaryId); + + triggerCommand("org.eclipse.tm.terminal.view.ui.command.launchToolbar", null); //$NON-NLS-1$ + + return null; + } + +}