From 73c38e44c75e77bede67261e9d98b2ca6e5b0225 Mon Sep 17 00:00:00 2001 From: Uwe Stieber Date: Thu, 19 Feb 2015 10:02:34 +0100 Subject: [PATCH] Terminals: Bug 443046 -- Encoding is lost if restoring terminal sessions --- .../local/launcher/LocalMementoHandler.java | 2 +- .../view/TerminalsViewMementoHandler.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalMementoHandler.java b/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalMementoHandler.java index f4cbb513e43..67f5ac618a0 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalMementoHandler.java +++ b/plugins/org.eclipse.tcf.te.ui.terminals.local/src/org/eclipse/tcf/te/ui/terminals/local/launcher/LocalMementoHandler.java @@ -16,7 +16,7 @@ import org.eclipse.tcf.te.ui.terminals.interfaces.IMementoHandler; import org.eclipse.ui.IMemento; /** - * SSH terminal connection memento handler implementation. + * Local terminal connection memento handler implementation. */ public class LocalMementoHandler implements IMementoHandler { diff --git a/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/view/TerminalsViewMementoHandler.java b/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/view/TerminalsViewMementoHandler.java index 4fcd76596ec..c4d419fb065 100644 --- a/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/view/TerminalsViewMementoHandler.java +++ b/plugins/org.eclipse.tcf.te.ui.terminals/src/org/eclipse/tcf/te/ui/terminals/view/TerminalsViewMementoHandler.java @@ -25,12 +25,14 @@ import org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate; import org.eclipse.tcf.te.ui.terminals.interfaces.IMementoHandler; import org.eclipse.tcf.te.ui.terminals.launcher.LauncherDelegateManager; import org.eclipse.tcf.te.ui.terminals.tabs.TabFolderToolbarHandler; +import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; import org.eclipse.ui.IMemento; import org.eclipse.ui.PlatformUI; /** * Take care of the persisted state handling of the "Terminals" view. */ +@SuppressWarnings("restriction") public class TerminalsViewMementoHandler { // The list of items to save. See the workbench listener implementation // in o.e.tcf.te.ui.terminals.activator.UIPlugin. @@ -100,6 +102,14 @@ public class TerminalsViewMementoHandler { connectionMemento.putBoolean(ITerminalsConnectorConstants.PROP_FORCE_NEW, ((Boolean)properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW)).booleanValue()); } + // Store the current encoding + ITerminalViewControl terminal = (ITerminalViewControl)item.getData(); + String encoding = terminal != null ? terminal.getEncoding() : null; + if (encoding == null || "".equals(encoding)) encoding = (String)properties.get(ITerminalsConnectorConstants.PROP_ENCODING); //$NON-NLS-1$ + if (encoding != null && !"".equals(encoding)) { //$NON-NLS-1$ + connectionMemento.putString(ITerminalsConnectorConstants.PROP_ENCODING, encoding); + } + // Pass on to the memento handler mementoHandler.saveState(connectionMemento, properties); } @@ -166,6 +176,11 @@ public class TerminalsViewMementoHandler { properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, connection.getBoolean(ITerminalsConnectorConstants.PROP_FORCE_NEW)); } + // Restore the encoding + if (connection.getString(ITerminalsConnectorConstants.PROP_ENCODING) != null) { + properties.put(ITerminalsConnectorConstants.PROP_ENCODING, connection.getString(ITerminalsConnectorConstants.PROP_ENCODING)); + } + // Get the terminal launcher delegate String delegateId = (String)properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID); ILauncherDelegate delegate = delegateId != null ? LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, false) : null;