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