Bug 468629 - Get "Show Terminal" menu working again, part 2

Change-Id: Ia1b81d167f65d91f10f49094ec7461eab8a39217
Signed-off-by: Greg Watson <g.watson@computer.org>
diff --git a/core/org.eclipse.ptp.remote.terminal/src/org/eclipse/ptp/internal/remote/terminal/Activator.java b/core/org.eclipse.ptp.remote.terminal/src/org/eclipse/ptp/internal/remote/terminal/Activator.java
index bdd61ab..384ef41 100644
--- a/core/org.eclipse.ptp.remote.terminal/src/org/eclipse/ptp/internal/remote/terminal/Activator.java
+++ b/core/org.eclipse.ptp.remote.terminal/src/org/eclipse/ptp/internal/remote/terminal/Activator.java
@@ -14,6 +14,7 @@
 import org.eclipse.ptp.internal.remote.terminal.messages.Messages;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 
 /**
  * The activator class controls the plug-in life cycle
@@ -108,4 +109,17 @@
 		}
 		return getDefault().getBundle().getSymbolicName();
 	}
+
+	/**
+	 * Return the OSGi service with the given service interface.
+	 *
+	 * @param service
+	 *            service interface
+	 * @return the specified service or null if it's not registered
+	 */
+	public static <T> T getService(Class<T> service) {
+		final BundleContext context = plugin.getBundle().getBundleContext();
+		final ServiceReference<T> ref = context.getServiceReference(service);
+		return ref != null ? context.getService(ref) : null;
+	}
 }
diff --git a/core/org.eclipse.ptp.remote.terminal/src/org/eclipse/ptp/internal/remote/terminal/TerminalCommandHandler.java b/core/org.eclipse.ptp.remote.terminal/src/org/eclipse/ptp/internal/remote/terminal/TerminalCommandHandler.java
index f3cb1f1..c7d5a0a 100644
--- a/core/org.eclipse.ptp.remote.terminal/src/org/eclipse/ptp/internal/remote/terminal/TerminalCommandHandler.java
+++ b/core/org.eclipse.ptp.remote.terminal/src/org/eclipse/ptp/internal/remote/terminal/TerminalCommandHandler.java
@@ -14,18 +14,15 @@
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.remote.core.IRemoteConnection;
 import org.eclipse.tm.terminal.connector.remote.IRemoteSettings;
 import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
 import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService;
-import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 public class TerminalCommandHandler extends AbstractHandler {
-
 	@Override
 	public Object execute(ExecutionEvent event) throws ExecutionException {
 		ISelection sel = HandlerUtil.getActiveMenuSelection(event);
@@ -33,36 +30,27 @@
 		Object firstElement = selection.getFirstElement();
 		if (firstElement instanceof IProject) {
 			IProject prj = ((IProject) firstElement).getProject();
-			connector(prj);
+			openTerminal(prj);
 		}
 		return null;
 	}
 
-	private void connector(IProject prj) {
+	private void openTerminal(IProject prj) {
 		IRemoteConnection irc = Util.getRemoteConnection(prj);
 		if (irc != null) {
 			// Define the terminal properties
 			Map<String, Object> properties = new HashMap<String, Object>();
-			properties.put(IRemoteSettings.REMOTE_SERVICES, irc.getConnectionType().getId());
-			properties.put(IRemoteSettings.CONNECTION_NAME, irc.getName());
 
-			properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID,
-					"org.eclipse.tm.terminal.connector.telnet.launcher.remote"); //$NON-NLS-1$
-			properties.put(ITerminalsConnectorConstants.PROP_ENCODING, "UTF-8"); //$NON-NLS-1$
-			properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, "/tmp"); //$NON-NLS-1$
+			String connTypeId = irc.getConnectionType().getId();
+			String connName = irc.getName();
 
-			// Create the done callback object
-			ITerminalService.Done done = new ITerminalService.Done() {
-				@Override
-				public void done(IStatus done) {
-					// Place any post processing here
-				}
-			};
+			properties.put(IRemoteSettings.CONNECTION_TYPE_ID, connTypeId);
+			properties.put(IRemoteSettings.CONNECTION_NAME, connName);
 
 			// Open the terminal
 			ITerminalService terminal = TerminalServiceFactory.getService();
 			if (terminal != null) {
-				terminal.openConsole(properties, done);
+				terminal.openConsole(properties, null);
 			}
 		}
 	}