diff --git a/terminal/plugins/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ITerminalView.java b/terminal/plugins/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ITerminalView.java
index 7fa9d202914..f08fefba065 100644
--- a/terminal/plugins/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ITerminalView.java
+++ b/terminal/plugins/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/ITerminalView.java
@@ -10,19 +10,33 @@
  * Martin Oberhuber (Wind River) - [227537] moved actions from terminal.view to terminal plugin
  * Michael Scharf (Wind River) - [172483] switch between connections
  * Michael Scharf (Wind River) - [240023] Get rid of the terminal's "Pin" button
+ * Kris De Volder (VMWare) - [392092] Extend ITerminalView API to allow programmatically opening a UI-less connector
  *******************************************************************************/
 package org.eclipse.tm.internal.terminal.view;
 
+import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
+
 public interface ITerminalView {
 
 	/**
 	 * Create a new terminal connection within the view.
 	 */
 	void onTerminalNewTerminal();
+
 	/**
-	 * Create a new Terminal view. 
+	 * Programmatically create a new terminal connection within the view. This method
+	 * does the same thing as onTerminalNewTerminal, but instead of popping up a settings
+	 * dialog to allow the user fill in connection details, a connector is provided as
+	 * a parameter. The connector should have all of its details pre-configured so it can
+	 * be opened without requiring user input.
+	 */
+	void newTerminal(ITerminalConnector c);
+
+	/**
+	 * Create a new Terminal view.
 	 */
 	void onTerminalNewView();
+
 	void onTerminalConnect();
 	void onTerminalDisconnect();
 	void onTerminalSettings();
diff --git a/terminal/plugins/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java b/terminal/plugins/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java
index a378fe2c2a0..247d7fcad1f 100644
--- a/terminal/plugins/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java
+++ b/terminal/plugins/org.eclipse.tm.terminal.view/src/org/eclipse/tm/internal/terminal/view/TerminalView.java
@@ -22,11 +22,12 @@
  * Michael Scharf (Wind River) - [172483] switch between connections
  * Michael Scharf (Wind River) - [240023] Get rid of the terminal's "Pin" button
  * Michael Scharf (Wind River) - [196454] Initial connection settings dialog should not be blank
- * Michael Scharf (Wind River) - [241096] Secondary terminals in same view do not observe the "invert colors" Preference 
+ * Michael Scharf (Wind River) - [241096] Secondary terminals in same view do not observe the "invert colors" Preference
  * Michael Scharf (Wind River) - [262996] get rid of TerminalState.OPENED
  * Martin Oberhuber (Wind River) - [205486] Enable ScrollLock
  * Ahmet Alptekin (Tubitak) - [244405] Add a UI Control for setting the Terminal's encoding
  * Martin Oberhuber (Wind River) - [378691][api] push Preferences into the Widget
+ * Kris De Volder (VMWare) - [392092] Extend ITerminalView API to allow programmatically opening a UI-less connector
  *******************************************************************************/
 package org.eclipse.tm.internal.terminal.view;
 
@@ -46,7 +47,6 @@ import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.MenuEvent;
 import org.eclipse.swt.events.MenuListener;
-import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
@@ -93,7 +93,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 	private static final String STORE_CONNECTION_TYPE = "ConnectionType"; //$NON-NLS-1$
 
     private static final String STORE_SETTING_SUMMARY = "SettingSummary"; //$NON-NLS-1$
-    
+
 	private static final String STORE_TITLE = "Title"; //$NON-NLS-1$
 
 	public static final String  FONT_DEFINITION = ITerminalConstants.FONT_DEFINITION;
@@ -103,7 +103,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 	// TODO (scharf): this decorator is only there to deal wit the common
 	// actions. Find a better solution.
 	TerminalViewControlDecorator fCtlDecorator=new TerminalViewControlDecorator();
-	
+
 	protected TerminalAction fActionTerminalNewTerminal;
 
 	protected TerminalAction fActionTerminalConnect;
@@ -140,7 +140,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 	private PageBook fPageBook;
 
 	/**
-	 * This listener updates both, the view and the 
+	 * This listener updates both, the view and the
 	 * ITerminalViewConnection.
 	 *
 	 */
@@ -181,9 +181,9 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 				PlatformUI.getWorkbench().getDisplay().syncExec(runnable);
 			// else should not happen and we ignore it...
 		}
-		
+
 	}
-	
+
 	public TerminalView() {
 		Logger
 				.log("==============================================================="); //$NON-NLS-1$
@@ -219,6 +219,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 			uniqueTitle=title+" "+i++; //$NON-NLS-1$
 		}
 	}
+
 	/**
 	 * Display a new Terminal view.  This method is called when the user clicks the New
 	 * Terminal button in any Terminal view's toolbar.
@@ -231,6 +232,21 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 		}
 	}
 
+	/**
+	 * Programmatically create a new terminal connection within the view. This method
+	 * does the same thing as onTerminalNewTerminal, but instead of popping up a settings
+	 * dialog to allow the user fill in connection details, a connector is provided as
+	 * a parameter. The connector should have all of its details pre-configured so it can
+	 * be opened without requiring user input.
+	 */
+	public void newTerminal(ITerminalConnector c) {
+		this.setupControls();
+		if(c!=null) {
+			this.setConnector(c);
+			this.onTerminalConnect();
+		}
+	}
+
 	public void onTerminalNewView() {
 		try {
 			// The second argument to showView() is a unique String identifying the
@@ -257,7 +273,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 		}
 	}
 
-	
+
 	public void onTerminalConnect() {
 		//if (isConnected())
 		if (fCtlTerminal.getState()!=TerminalState.CLOSED)
@@ -320,7 +336,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 		// load the state from the settings
 		// first load from fStore and then from the preferences.
 		ITerminalConnector c = loadSettings(new LayeredSettingsStore(fStore,getPreferenceSettingsStore()), connectors);
-		// if we have no connector show the one from the settings 
+		// if we have no connector show the one from the settings
 		if(fCtlTerminal.getTerminalConnector()!=null)
 			c=fCtlTerminal.getTerminalConnector();
 		TerminalSettingsDlg dlgTerminalSettings = new TerminalSettingsDlg(getViewSite().getShell(),connectors,c);
@@ -347,12 +363,12 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 		setEncoding(dlgTerminalSettings.getEncoding());
 		return dlgTerminalSettings.getConnector();
 	}
-	
+
 	private void setEncoding(String encoding) {
 		getActiveConnection().setEncoding(encoding);
 		updateSummary();
 	}
-	
+
 	private void setConnector(ITerminalConnector connector) {
 		fCtlTerminal.setConnector(connector);
 	}
@@ -369,7 +385,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 		getViewSite().getActionBars().getStatusLineManager().setMessage(
 				summary);
 		setTitleToolTip(getPartName()+": "+summary); //$NON-NLS-1$
-		
+
 	}
 	public void updateSummary() {
 		setViewSummary(getActiveConnection().getFullSummary());
@@ -425,7 +441,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 		Logger.log("entered."); //$NON-NLS-1$
 
 		JFaceResources.getFontRegistry().removeListener(fPropertyChangeHandler);
-		
+
 		// dispose all connections
 		ITerminalViewConnection[] conn=fMultiConnectionManager.getConnections();
 		for (int i = 0; i < conn.length; i++) {
@@ -492,9 +508,9 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 
 	/**
 	 * The preference setting store is used to save the settings that are
-	 * shared between all views. 
+	 * shared between all views.
 	 * @return the settings store for the connection based on the preferences.
-	 * 
+	 *
 	 */
 	private PreferenceSettingStore getPreferenceSettingsStore() {
 		return new PreferenceSettingStore(TerminalViewPlugin.getDefault().getPluginPreferences(),PREF_CONNECTORS);
@@ -509,7 +525,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 			// the last saved connector becomes the default
 			store.put(STORE_CONNECTION_TYPE,connector.getId());
 		}
-		
+
 	}
 	public void init(IViewSite site, IMemento memento) throws PartInitException {
 		super.init(site, memento);
@@ -650,7 +666,7 @@ public class TerminalView extends ViewPart implements ITerminalView, ITerminalVi
 				setTerminalControl(ctrl);
 				refresh();
 			}
-		}	
+		}
 	}
 
 	/**