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;
+ }
+
+}