diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteSettings.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteSettings.java
index 9436f26f65b..e4094515b64 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteSettings.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteSettings.java
@@ -9,19 +9,19 @@ package org.eclipse.tm.terminal.connector.remote;
public interface IRemoteSettings {
public static final String CONNECTION_NAME = "ConnectionName"; //$NON-NLS-1$
- public static final String REMOTE_SERVICES = "RemoteServices"; //$NON-NLS-1$
+ public static final String CONNECTION_TYPE_ID = "ConnectionTypeId"; //$NON-NLS-1$
/**
- * Get the host name or IP address of remote system to connect.
+ * Get the connection type ID for the connection (e.g. local, ssh, etc.)
*
- * @return host name or IP address of the remote system.
+ * @return connection type ID.
*/
- String getRemoteServices();
+ String getConnectionTypeId();
/**
- * Get the login name for connecting to the remote system.
+ * Get the connection name for the target system.
*
- * @return remote login name
+ * @return connection name
*/
String getConnectionName();
}
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalConstants.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalConstants.java
index 512248c6162..ed8317c427d 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalConstants.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/IRemoteTerminalConstants.java
@@ -9,4 +9,5 @@ package org.eclipse.tm.terminal.connector.remote;
public interface IRemoteTerminalConstants {
public static final String PREF_TERMINAL_SHELL_COMMAND = "TERMINAL_SHELL_COMMAND"; //$NON-NLS-1$
+ public static final String PREF_TERMINAL_TYPE = "TERMINAL_TYPE"; //$NON-NLS-1$
}
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/controls/RemoteWizardConfigurationPanel.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/controls/RemoteWizardConfigurationPanel.java
index 0ee8e44f5a0..508191946a7 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/controls/RemoteWizardConfigurationPanel.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/controls/RemoteWizardConfigurationPanel.java
@@ -33,19 +33,22 @@ import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel
@SuppressWarnings("restriction")
public class RemoteWizardConfigurationPanel extends AbstractExtendedConfigurationPanel {
- public RemoteSettings remoteSettings;
+ private RemoteSettings remoteSettings;
private ISettingsPage remoteSettingsPage;
/**
* Constructor.
*
- * @param container The configuration panel container or null
.
+ * @param container
+ * The configuration panel container or null
.
*/
public RemoteWizardConfigurationPanel(IConfigurationPanelContainer container) {
- super(container);
- }
+ super(container);
+ }
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel#setupPanel(org.eclipse.swt.widgets.Composite)
*/
@Override
@@ -60,7 +63,7 @@ public class RemoteWizardConfigurationPanel extends AbstractExtendedConfiguratio
remoteSettingsPage = new RemoteSettingsPage(remoteSettings);
if (remoteSettingsPage instanceof AbstractSettingsPage) {
- ((AbstractSettingsPage)remoteSettingsPage).setHasControlDecoration(true);
+ ((AbstractSettingsPage) remoteSettingsPage).setHasControlDecoration(true);
}
remoteSettingsPage.createControl(panel);
@@ -69,7 +72,9 @@ public class RemoteWizardConfigurationPanel extends AbstractExtendedConfiguratio
@Override
public void onSettingsPageChanged(Control control) {
- if (getContainer() != null) getContainer().validate();
+ if (getContainer() != null) {
+ getContainer().validate();
+ }
}
});
@@ -79,79 +84,107 @@ public class RemoteWizardConfigurationPanel extends AbstractExtendedConfiguratio
setControl(panel);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#setupData(java.util.Map)
*/
@Override
public void setupData(Map data) {
- if (data == null || remoteSettings == null || remoteSettingsPage == null) return;
+ if (data == null || remoteSettings == null || remoteSettingsPage == null) {
+ return;
+ }
- String value = (String)data.get(IRemoteSettings.REMOTE_SERVICES);
- if (value != null) remoteSettings.setRemoteServices(value);
+ String value = (String) data.get(IRemoteSettings.CONNECTION_TYPE_ID);
+ if (value != null) {
+ remoteSettings.setConnectionTypeId(value);
+ }
- value = (String)data.get(IRemoteSettings.CONNECTION_NAME);
- if (value != null) remoteSettings.setConnectionName(value);
+ value = (String) data.get(IRemoteSettings.CONNECTION_NAME);
+ if (value != null) {
+ remoteSettings.setConnectionName(value);
+ }
- value = (String)data.get(ITerminalsConnectorConstants.PROP_ENCODING);
- if (value != null) setEncoding(value);
+ value = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING);
+ if (value != null) {
+ setEncoding(value);
+ }
remoteSettingsPage.loadSettings();
- }
+ }
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#extractData(java.util.Map)
*/
@Override
public void extractData(Map data) {
- if (data == null) return;
+ if (data == null) {
+ return;
+ }
- // set the terminal connector id for remote
- data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, "org.eclipse.tm.terminal.connector.remote.RemoteConnector"); //$NON-NLS-1$
+ // set the terminal connector id for remote
+ data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID,
+ "org.eclipse.tm.terminal.connector.remote.RemoteConnector"); //$NON-NLS-1$
- remoteSettingsPage.saveSettings();
-
- data.put(IRemoteSettings.REMOTE_SERVICES, remoteSettings.getRemoteServices());
- data.put(IRemoteSettings.CONNECTION_NAME, remoteSettings.getConnectionName());
- data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
- }
+ remoteSettingsPage.saveSettings();
- /* (non-Javadoc)
+ data.put(IRemoteSettings.CONNECTION_TYPE_ID, remoteSettings.getConnectionTypeId());
+ data.put(IRemoteSettings.CONNECTION_NAME, remoteSettings.getConnectionName());
+ if (getEncoding() != null) {
+ data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding());
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#fillSettingsForHost(java.lang.String)
*/
@Override
- protected void fillSettingsForHost(String host){
+ protected void fillSettingsForHost(String host) {
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#saveSettingsForHost(boolean)
*/
@Override
- protected void saveSettingsForHost(boolean add){
+ protected void saveSettingsForHost(boolean add) {
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#isValid()
*/
@Override
- public boolean isValid(){
+ public boolean isValid() {
return isEncodingValid() && remoteSettingsPage.validateSettings();
}
- /* (non-Javadoc)
- * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#doSaveWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#doSaveWidgetValues(org.eclipse.jface.dialogs.
+ * IDialogSettings, java.lang.String)
*/
@Override
- public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
- saveSettingsForHost(true);
- super.doSaveWidgetValues(settings, idPrefix);
- }
+ public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) {
+ saveSettingsForHost(true);
+ super.doSaveWidgetValues(settings, idPrefix);
+ }
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#getHostFromSettings()
*/
@Override
- protected String getHostFromSettings() {
+ protected String getHostFromSettings() {
remoteSettingsPage.saveSettings();
- return null;
- }
+ return null;
+ }
}
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnectionManager.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnectionManager.java
index 7615ac3ba1b..95c9a9f947e 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnectionManager.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnectionManager.java
@@ -28,6 +28,7 @@ import org.eclipse.remote.core.IRemoteConnectionType;
import org.eclipse.remote.core.IRemoteProcess;
import org.eclipse.remote.core.IRemoteProcessBuilder;
import org.eclipse.remote.core.IRemoteProcessService;
+import org.eclipse.remote.core.IRemoteProcessTerminalService;
import org.eclipse.remote.core.IRemoteServicesManager;
import org.eclipse.remote.core.exception.RemoteConnectionException;
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl;
@@ -40,12 +41,14 @@ import org.eclipse.tm.terminal.connector.remote.nls.Messages;
public class RemoteConnectionManager extends Job {
private final static String PARSERS_EXTENSION_POINT = "parsers"; //$NON-NLS-1$
private final static String PARSER_ELEMENT = "parser"; //$NON-NLS-1$
+
private static int fgNo;
private final ITerminalControl control;
private final RemoteConnector connector;
private IRemoteTerminalParser parser;
+ private IRemoteProcess remoteProcess;
protected RemoteConnectionManager(RemoteConnector conn, ITerminalControl control) {
super("Remote Terminal-" + fgNo++); //$NON-NLS-1$
@@ -62,31 +65,32 @@ public class RemoteConnectionManager extends Job {
*/
@Override
protected IStatus run(IProgressMonitor monitor) {
- IRemoteProcess remoteProcess = null;
IRemoteConnection remoteConnection = null;
try {
IRemoteServicesManager svcMgr = Activator.getService(IRemoteServicesManager.class);
- String connTypeId = connector.getRemoteSettings().getRemoteServices();
+ String connTypeId = connector.getRemoteSettings().getConnectionTypeId();
IRemoteConnectionType connType = svcMgr.getConnectionType(connTypeId);
if (connType != null) {
remoteConnection = connType.getConnection(connector.getRemoteSettings().getConnectionName());
}
if (remoteConnection == null) {
- throw new RemoteConnectionException(NLS.bind(Messages.RemoteConnectionManager_0, connector.getRemoteSettings()
- .getConnectionName()));
+ throw new RemoteConnectionException(
+ NLS.bind(Messages.RemoteConnectionManager_0, connector.getRemoteSettings().getConnectionName()));
}
if (!remoteConnection.isOpen()) {
remoteConnection.open(monitor);
if (!remoteConnection.isOpen()) {
- throw new RemoteConnectionException(NLS.bind(Messages.RemoteConnectionManager_1, connector.getRemoteSettings()
- .getConnectionName()));
+ throw new RemoteConnectionException(
+ NLS.bind(Messages.RemoteConnectionManager_1, connector.getRemoteSettings().getConnectionName()));
}
}
if (parser != null) {
- remoteProcess = parser.initialize(remoteConnection);
+ synchronized (this) {
+ remoteProcess = parser.initialize(remoteConnection);
+ }
} else {
/*
* Check the terminal shell command preference. If the preference is empty and we support a command shell,
@@ -97,18 +101,23 @@ public class RemoteConnectionManager extends Job {
if (!("".equals(terminalShellCommand)) //$NON-NLS-1$
&& remoteConnection.hasService(IRemoteCommandShellService.class)) {
IRemoteCommandShellService cmdShellSvc = remoteConnection.getService(IRemoteCommandShellService.class);
- remoteProcess = cmdShellSvc.getCommandShell(IRemoteProcessBuilder.ALLOCATE_PTY);
+ synchronized (this) {
+ remoteProcess = cmdShellSvc.getCommandShell(IRemoteProcessBuilder.ALLOCATE_PTY);
+ }
} else {
if ("".equals(terminalShellCommand)) { //$NON-NLS-1$
terminalShellCommand = "/bin/bash -l"; //$NON-NLS-1$
}
IRemoteProcessService procSvc = remoteConnection.getService(IRemoteProcessService.class);
- IRemoteProcessBuilder processBuilder = procSvc.getProcessBuilder(new ArgumentParser(terminalShellCommand)
- .getTokenList());
- remoteProcess = processBuilder.start(IRemoteProcessBuilder.ALLOCATE_PTY);
+ IRemoteProcessBuilder processBuilder = procSvc
+ .getProcessBuilder(new ArgumentParser(terminalShellCommand).getTokenList());
+ synchronized (this) {
+ remoteProcess = processBuilder.start(IRemoteProcessBuilder.ALLOCATE_PTY);
+ }
}
}
+ control.setVT100LineWrapping(true);
connector.setInputStream(remoteProcess.getInputStream());
control.setState(TerminalState.CONNECTED);
control.setTerminalTitle(remoteConnection.getName());
@@ -123,20 +132,27 @@ public class RemoteConnectionManager extends Job {
} finally {
// make sure the terminal is disconnected when the thread ends
connector.disconnect();
- synchronized (this) {
- if (remoteProcess != null && !remoteProcess.isCompleted()) {
- remoteProcess.destroy();
- }
- }
}
return Status.OK_STATUS;
}
+ @Override
+ protected void canceling() {
+ super.canceling();
+ synchronized (this) {
+ if (remoteProcess != null && !remoteProcess.isCompleted()) {
+ remoteProcess.destroy();
+ }
+ }
+ }
+
public void setTerminalSize(int cols, int rows, int width, int height) {
- // Enable for org.eclipse.remote v1.2
- // if (remoteProcess instanceof IRemoteTerminal) {
- // ((IRemoteTerminal) remoteProcess).setTerminalSize(cols, rows, width, height);
- // }
+ if (remoteProcess != null) {
+ IRemoteProcessTerminalService termSvc = remoteProcess.getService(IRemoteProcessTerminalService.class);
+ if (termSvc != null) {
+ termSvc.setTerminalSize(cols, rows, width, height);
+ }
+ }
}
/**
@@ -147,11 +163,8 @@ public class RemoteConnectionManager extends Job {
*/
private void readData(InputStream in) throws IOException {
byte[] buf = new byte[32 * 1024];
- while (getState() == Job.RUNNING) {
- int n = in.read(buf, 0, buf.length);
- if (n <= 0) {
- break;
- }
+ int n;
+ while ((n = in.read(buf, 0, buf.length)) > 0) {
if (parser == null || parser.parse(buf)) {
control.getRemoteToTerminalOutputStream().write(buf, 0, n);
}
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java
index 592422d17cc..a1f4d97a926 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java
@@ -56,22 +56,6 @@ public class RemoteConnector extends TerminalConnectorImpl {
*/
@Override
public synchronized void doDisconnect() {
- if (getInputStream() != null) {
- try {
- getInputStream().close();
- } catch (Exception exception) {
- Activator.log(exception);
- }
- }
-
- if (getTerminalToRemoteStream() != null) {
- try {
- getTerminalToRemoteStream().close();
- } catch (Exception exception) {
- Activator.log(exception);
- }
- }
-
fConnection.cancel();
}
@@ -117,7 +101,7 @@ public class RemoteConnector extends TerminalConnectorImpl {
public void setDefaultSettings() {
fSettings.load(new NullSettingsStore());
}
-
+
@Override
public void save(ISettingsStore store) {
fSettings.save(store);
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettings.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettings.java
index 74b6c8f80f2..e3fd933588f 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettings.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettings.java
@@ -12,22 +12,24 @@ import org.eclipse.tm.terminal.connector.remote.IRemoteSettings;
@SuppressWarnings("restriction")
public class RemoteSettings implements IRemoteSettings {
- protected String fRemoteServices;
- protected String fConnectionName;
+ protected String connectionTypeId;
+ protected String connectionName;
public RemoteSettings() {
}
+ @Override
public String getConnectionName() {
- return fConnectionName;
+ return connectionName;
}
- public String getRemoteServices() {
- return fRemoteServices;
+ @Override
+ public String getConnectionTypeId() {
+ return connectionTypeId;
}
public String getSummary() {
- return "Remote:" + getRemoteServices() + '_' + getConnectionName(); //$NON-NLS-1$
+ return "Remote:" + getConnectionTypeId() + '_' + getConnectionName(); //$NON-NLS-1$
}
@Override
@@ -39,23 +41,23 @@ public class RemoteSettings implements IRemoteSettings {
* Load information into the RemoteSettings object.
*/
public void load(ISettingsStore store) {
- fRemoteServices = store.get(REMOTE_SERVICES, ""); //$NON-NLS-1$
- fConnectionName = store.get(CONNECTION_NAME, ""); //$NON-NLS-1$
+ connectionTypeId = store.get(CONNECTION_TYPE_ID, ""); //$NON-NLS-1$
+ connectionName = store.get(CONNECTION_NAME, ""); //$NON-NLS-1$
}
/**
* Extract information from the RemoteSettings object.
*/
public void save(ISettingsStore store) {
- store.put(REMOTE_SERVICES, fRemoteServices);
- store.put(CONNECTION_NAME, fConnectionName);
+ store.put(CONNECTION_TYPE_ID, connectionTypeId);
+ store.put(CONNECTION_NAME, connectionName);
}
public void setConnectionName(String name) {
- fConnectionName = name;
+ connectionName = name;
}
- public void setRemoteServices(String remoteServices) {
- fRemoteServices = remoteServices;
+ public void setConnectionTypeId(String id) {
+ connectionTypeId = id;
}
}
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettingsPage.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettingsPage.java
index d5ee56a17de..2ea7ecdb0f2 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettingsPage.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteSettingsPage.java
@@ -30,7 +30,7 @@ public class RemoteSettingsPage extends AbstractSettingsPage {
if (fTerminalSettings != null && fRemoteConnectionWidget != null && !fRemoteConnectionWidget.isDisposed()) {
if (fRemoteConnectionWidget.getConnection() != null) {
if (fRemoteConnectionWidget.getConnection().getConnectionType() != null) {
- fTerminalSettings.setRemoteServices(fRemoteConnectionWidget.getConnection().getConnectionType().getId());
+ fTerminalSettings.setConnectionTypeId(fRemoteConnectionWidget.getConnection().getConnectionType().getId());
}
fTerminalSettings.setConnectionName(fRemoteConnectionWidget.getConnection().getName());
}
@@ -40,7 +40,7 @@ public class RemoteSettingsPage extends AbstractSettingsPage {
@Override
public void loadSettings() {
if (fTerminalSettings != null && fRemoteConnectionWidget != null && !fRemoteConnectionWidget.isDisposed()) {
- fRemoteConnectionWidget.setConnection(fTerminalSettings.getRemoteServices(), fTerminalSettings.getConnectionName());
+ fRemoteConnectionWidget.setConnection(fTerminalSettings.getConnectionTypeId(), fTerminalSettings.getConnectionName());
}
}
@@ -53,7 +53,8 @@ public class RemoteSettingsPage extends AbstractSettingsPage {
@Override
public boolean validateSettings() {
- if (fRemoteConnectionWidget == null || fRemoteConnectionWidget.isDisposed() || fRemoteConnectionWidget.getConnection() == null) {
+ if (fRemoteConnectionWidget == null || fRemoteConnectionWidget.isDisposed()
+ || fRemoteConnectionWidget.getConnection() == null) {
return false;
}
return true;
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferencePage.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferencePage.java
index 595b4d4e6cc..87175435d82 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferencePage.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/preferences/RemoteTerminalPreferencePage.java
@@ -20,8 +20,10 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
public class RemoteTerminalPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+ @Override
protected void createFieldEditors() {
Composite parent = getFieldEditorParent();
+ addField(new StringFieldEditor(IRemoteTerminalConstants.PREF_TERMINAL_TYPE, "Terminal Type", parent));
addField(new StringFieldEditor(IRemoteTerminalConstants.PREF_TERMINAL_SHELL_COMMAND,
Messages.RemoteTerminalPreferencePage_0, parent));
}
@@ -31,6 +33,7 @@ public class RemoteTerminalPreferencePage extends FieldEditorPreferencePage impl
return new ScopedPreferenceStore(InstanceScope.INSTANCE, Activator.getUniqueIdentifier());
}
+ @Override
public void init(IWorkbench workbench) {
// Nothing
}
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteLauncherDelegate.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteLauncherDelegate.java
index 8d36ea5c197..72c4f424f08 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteLauncherDelegate.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteLauncherDelegate.java
@@ -15,11 +15,15 @@ import java.util.Map;
import org.eclipse.core.runtime.Assert;
import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteConnectionType;
+import org.eclipse.remote.core.IRemoteServicesManager;
import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore;
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension;
import org.eclipse.tm.terminal.connector.remote.IRemoteSettings;
import org.eclipse.tm.terminal.connector.remote.controls.RemoteWizardConfigurationPanel;
+import org.eclipse.tm.terminal.connector.remote.internal.Activator;
import org.eclipse.tm.terminal.connector.remote.internal.RemoteSettings;
import org.eclipse.tm.terminal.connector.remote.nls.Messages;
import org.eclipse.tm.terminal.view.core.TerminalServiceFactory;
@@ -39,7 +43,9 @@ public class RemoteLauncherDelegate extends AbstractLauncherDelegate {
// The Remote terminal connection memento handler
private final IMementoHandler mementoHandler = new RemoteMementoHandler();
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#needsUserConfiguration()
*/
@Override
@@ -47,33 +53,27 @@ public class RemoteLauncherDelegate extends AbstractLauncherDelegate {
return true;
}
- /* (non-Javadoc)
- * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#getPanel(org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#getPanel(org.eclipse.tm.terminal.view.ui.interfaces.
+ * IConfigurationPanelContainer)
*/
@Override
public IConfigurationPanel getPanel(IConfigurationPanelContainer container) {
return new RemoteWizardConfigurationPanel(container);
}
- /* (non-Javadoc)
- * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#execute(java.util.Map, org.eclipse.tm.terminal.view.core.interfaces.ITerminalService.Done)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#execute(java.util.Map,
+ * org.eclipse.tm.terminal.view.core.interfaces.ITerminalService.Done)
*/
@Override
public void execute(Map properties, ITerminalService.Done done) {
Assert.isNotNull(properties);
- // Set the terminal tab title
- String terminalTitle = getTerminalTitle(properties);
- if (terminalTitle != null) {
- properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle);
- }
-
- // For Telnet terminals, force a new terminal tab each time it is launched,
- // if not set otherwise from outside
- if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) {
- properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE);
- }
-
// Get the terminal service
ITerminalService terminal = TerminalServiceFactory.getService();
// If not available, we cannot fulfill this request
@@ -90,50 +90,56 @@ public class RemoteLauncherDelegate extends AbstractLauncherDelegate {
* @return The terminal title string or null
.
*/
private String getTerminalTitle(Map properties) {
- String connection = (String)properties.get(IRemoteSettings.CONNECTION_NAME);
+ String connection = (String) properties.get(IRemoteSettings.CONNECTION_NAME);
if (connection != null) {
DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
String date = format.format(new Date(System.currentTimeMillis()));
- return NLS.bind(Messages.RemoteLauncherDelegate_terminalTitle, new String[]{connection, date});
+ return NLS.bind(Messages.RemoteLauncherDelegate_terminalTitle, new String[] { connection, date });
}
return Messages.RemoteLauncherDelegate_terminalTitle_default;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
*/
- @SuppressWarnings("rawtypes")
+ @SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public Object getAdapter(Class adapter) {
if (IMementoHandler.class.equals(adapter)) {
return mementoHandler;
}
- return super.getAdapter(adapter);
+ return super.getAdapter(adapter);
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#createTerminalConnector(java.util.Map)
*/
- @Override
+ @Override
public ITerminalConnector createTerminalConnector(Map properties) {
- Assert.isNotNull(properties);
+ Assert.isNotNull(properties);
- // Check for the terminal connector id
- String connectorId = (String)properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
- if (connectorId == null) connectorId = "org.eclipse.tm.terminal.connector.remote.RemoteConnector"; //$NON-NLS-1$
+ // Check for the terminal connector id
+ String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID);
+ if (connectorId == null) {
+ connectorId = "org.eclipse.tm.terminal.connector.remote.RemoteConnector"; //$NON-NLS-1$
+ }
// Extract the remote properties
- String services = (String)properties.get(IRemoteSettings.REMOTE_SERVICES);
- String connection = (String)properties.get(IRemoteSettings.CONNECTION_NAME);
+ String connTypeId = (String) properties.get(IRemoteSettings.CONNECTION_TYPE_ID);
+ String connName = (String) properties.get(IRemoteSettings.CONNECTION_NAME);
// Construct the terminal settings store
ISettingsStore store = new SettingsStore();
// Construct the remote settings
RemoteSettings remoteSettings = new RemoteSettings();
- remoteSettings.setRemoteServices(services);
- remoteSettings.setConnectionName(connection);
+ remoteSettings.setConnectionTypeId(connTypeId);
+ remoteSettings.setConnectionName(connName);
// And save the settings to the store
remoteSettings.save(store);
@@ -146,6 +152,33 @@ public class RemoteLauncherDelegate extends AbstractLauncherDelegate {
connector.load(store);
}
+ // Set the terminal tab title
+ String terminalTitle = getTerminalTitle(properties);
+ if (terminalTitle != null) {
+ properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle);
+ }
+
+ // For Telnet terminals, force a new terminal tab each time it is launched,
+ // if not set otherwise from outside
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) {
+ properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE);
+ }
+
+ if (!properties.containsKey(ITerminalsConnectorConstants.PROP_ENCODING)) {
+ IRemoteServicesManager svcMgr = Activator.getService(IRemoteServicesManager.class);
+
+ IRemoteConnectionType connType = svcMgr.getConnectionType(connTypeId);
+ if (connType != null) {
+ IRemoteConnection remoteConnection = connType.getConnection(connName);
+ if (remoteConnection != null && remoteConnection.isOpen()) {
+ properties.put(ITerminalsConnectorConstants.PROP_ENCODING,
+ remoteConnection.getProperty(IRemoteConnection.LOCALE_CHARMAP_PROPERTY));
+ }
+ }
+ }
+
+ properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, "/tmp"); //$NON-NLS-1$
+
return connector;
}
}
diff --git a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteMementoHandler.java b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteMementoHandler.java
index 92db0a543d1..a114c033b9f 100644
--- a/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteMementoHandler.java
+++ b/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/launcher/RemoteMementoHandler.java
@@ -22,7 +22,9 @@ import org.eclipse.ui.IMemento;
*/
public class RemoteMementoHandler implements IMementoHandler {
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler#saveState(org.eclipse.ui.IMemento, java.util.Map)
*/
@Override
@@ -32,12 +34,15 @@ public class RemoteMementoHandler implements IMementoHandler {
// Do not write the terminal title to the memento -> needs to
// be recreated at the time of restoration.
- memento.putString(IRemoteSettings.CONNECTION_NAME, (String)properties.get(IRemoteSettings.CONNECTION_NAME));
- memento.putString(IRemoteSettings.REMOTE_SERVICES, (String)properties.get(IRemoteSettings.REMOTE_SERVICES));
- memento.putString(ITerminalsConnectorConstants.PROP_ENCODING, (String)properties.get(ITerminalsConnectorConstants.PROP_ENCODING));
+ memento.putString(IRemoteSettings.CONNECTION_NAME, (String) properties.get(IRemoteSettings.CONNECTION_NAME));
+ memento.putString(IRemoteSettings.CONNECTION_TYPE_ID, (String) properties.get(IRemoteSettings.CONNECTION_TYPE_ID));
+ memento.putString(ITerminalsConnectorConstants.PROP_ENCODING,
+ (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING));
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler#restoreState(org.eclipse.ui.IMemento, java.util.Map)
*/
@Override
@@ -47,7 +52,7 @@ public class RemoteMementoHandler implements IMementoHandler {
// Restore the terminal properties from the memento
properties.put(IRemoteSettings.CONNECTION_NAME, memento.getString(IRemoteSettings.CONNECTION_NAME));
- properties.put(IRemoteSettings.REMOTE_SERVICES, memento.getString(IRemoteSettings.REMOTE_SERVICES));
+ properties.put(IRemoteSettings.CONNECTION_TYPE_ID, memento.getString(IRemoteSettings.CONNECTION_TYPE_ID));
properties.put(ITerminalsConnectorConstants.PROP_ENCODING, memento.getString(ITerminalsConnectorConstants.PROP_ENCODING));
}
}