1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-14 12:35:22 +02:00

[236203] Applied patch from Michael Scharf.

This commit is contained in:
Anna Dushistova 2008-07-28 15:18:12 +00:00
parent 0cf7a9093e
commit 2d6802e65f

View file

@ -13,10 +13,11 @@
* *
* Contributors: * Contributors:
* David McKnight (IBM) - [165680] "Show in Remote Shell View" does not work * David McKnight (IBM) - [165680] "Show in Remote Shell View" does not work
* Yu-Fen Kuo (MontaVista) - Adapted from CommandsViewWorkbook * Yu-Fen Kuo (MontaVista) - Adapted from CommandsViewWorkbook
* Anna Dushistova (MontaVista) - Adapted from CommandsViewWorkbook * Anna Dushistova (MontaVista) - Adapted from CommandsViewWorkbook
* Yu-Fen Kuo (MontaVista) - [227572] RSE Terminal doesn't reset the "connected" state when the shell exits * Yu-Fen Kuo (MontaVista) - [227572] RSE Terminal doesn't reset the "connected" state when the shell exits
* Martin Oberhuber (Wind River) - [227571] RSE Terminal should honor Encoding set on the IHost * Martin Oberhuber (Wind River) - [227571] RSE Terminal should honor Encoding set on the IHost
* Michael Scharf (Wind River) - [236203] [rseterminal] Potentially UI blocking code in TerminalViewTab.createTabItem
********************************************************************************/ ********************************************************************************/
package org.eclipse.rse.internal.terminals.ui.views; package org.eclipse.rse.internal.terminals.ui.views;
@ -66,7 +67,7 @@ import org.eclipse.tm.internal.terminal.provisional.api.TerminalState;
public class TerminalViewTab extends Composite implements ITerminalListener{ public class TerminalViewTab extends Composite implements ITerminalListener{
public static String DATA_KEY_CONTROL = "$_control_$"; //$NON-NLS-1$ public static String DATA_KEY_CONTROL = "$_control_$"; //$NON-NLS-1$
private CTabFolder tabFolder; private final CTabFolder tabFolder;
private Menu menu; private Menu menu;
private boolean fMenuAboutToShow; private boolean fMenuAboutToShow;
private TerminalActionCopy fActionEditCopy; private TerminalActionCopy fActionEditCopy;
@ -78,6 +79,8 @@ public class TerminalViewTab extends Composite implements ITerminalListener{
private TerminalActionClearAll fActionEditClearAll; private TerminalActionClearAll fActionEditClearAll;
private TerminalActionSelectAll fActionEditSelectAll; private TerminalActionSelectAll fActionEditSelectAll;
private String fInitialWorkingDirCmd;
private ITerminalViewControl fTerminalControl;
protected class TerminalContextMenuHandler implements MenuListener, protected class TerminalContextMenuHandler implements MenuListener,
IMenuListener { IMenuListener {
@ -178,7 +181,7 @@ public class TerminalViewTab extends Composite implements ITerminalListener{
} }
public CTabItem createTabItem(IAdaptable root, String initialWorkingDirCmd) { public CTabItem createTabItem(IAdaptable root, String initialWorkingDirCmd) {
fInitialWorkingDirCmd = initialWorkingDirCmd;
CTabItem item = new CTabItem(tabFolder, SWT.CLOSE); CTabItem item = new CTabItem(tabFolder, SWT.CLOSE);
setTabTitle(root, item); setTabTitle(root, item);
@ -191,22 +194,18 @@ public class TerminalViewTab extends Composite implements ITerminalListener{
IHost host = (IHost) root; IHost host = (IHost) root;
ITerminalConnector connector = new RSETerminalConnector(host); ITerminalConnector connector = new RSETerminalConnector(host);
ITerminalViewControl terminalControl = TerminalViewControlFactory fTerminalControl = TerminalViewControlFactory
.makeControl(this, c, .makeControl(this, c,
new ITerminalConnector[] { connector }); new ITerminalConnector[] { connector });
// Specify Encoding for Terminal // Specify Encoding for Terminal
try { try {
terminalControl.setEncoding(host.getDefaultEncoding(true)); fTerminalControl.setEncoding(host.getDefaultEncoding(true));
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
/* ignore and allow fallback to default encoding */ /* ignore and allow fallback to default encoding */
} }
terminalControl.setConnector(connector); fTerminalControl.setConnector(connector);
terminalControl.connectTerminal(); fTerminalControl.connectTerminal();
if (initialWorkingDirCmd != null) { item.setData(DATA_KEY_CONTROL, fTerminalControl);
while (!terminalControl.pasteString(initialWorkingDirCmd))
;
}
item.setData(DATA_KEY_CONTROL, terminalControl);
} }
item.setControl(c); item.setControl(c);
tabFolder.setSelection(item); tabFolder.setSelection(item);
@ -338,8 +337,15 @@ public class TerminalViewTab extends Composite implements ITerminalListener{
ISystemResourceChangeEvents.EVENT_REFRESH, terminalServiceSubSystem)); ISystemResourceChangeEvents.EVENT_REFRESH, terminalServiceSubSystem));
} }
} }
if(state == TerminalState.CONNECTED) {
if(fInitialWorkingDirCmd != null) {
fTerminalControl.pasteString(fInitialWorkingDirCmd);
fInitialWorkingDirCmd = null;
}
}
} }
}); });
} }
} }