1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-05 07:15:39 +02:00

[244437] improved ITerminalListener implementation.

This commit is contained in:
Anna Dushistova 2008-09-02 21:38:50 +00:00
parent e3bb6c7eae
commit 0ecfca3e39

View file

@ -85,8 +85,6 @@ public class TerminalViewTab extends Composite {
private TerminalActionSelectAll fActionEditSelectAll; private TerminalActionSelectAll fActionEditSelectAll;
private ITerminalViewControl fTerminalControl;
protected class TerminalContextMenuHandler implements MenuListener, protected class TerminalContextMenuHandler implements MenuListener,
IMenuListener { IMenuListener {
public void menuHidden(MenuEvent event) { public void menuHidden(MenuEvent event) {
@ -187,7 +185,7 @@ public class TerminalViewTab extends Composite {
public CTabItem createTabItem(IAdaptable root, public CTabItem createTabItem(IAdaptable root,
final String initialWorkingDirCmd) { final String initialWorkingDirCmd) {
CTabItem item = new CTabItem(tabFolder, SWT.CLOSE); final CTabItem item = new CTabItem(tabFolder, SWT.CLOSE);
setTabTitle(root, item); setTabTitle(root, item);
item.setData(root); item.setData(root);
@ -196,46 +194,43 @@ public class TerminalViewTab extends Composite {
tabFolder.getParent().layout(true); tabFolder.getParent().layout(true);
if (root instanceof IHost) { if (root instanceof IHost) {
IHost host = (IHost) root; final IHost host = (IHost) root;
ITerminalConnector connector = new RSETerminalConnector(host); ITerminalConnector connector = new RSETerminalConnector(host);
fTerminalControl = TerminalViewControlFactory.makeControl( ITerminalViewControl terminalControl = TerminalViewControlFactory
new ITerminalListener() { .makeControl(new ITerminalListener() {
public void setState(final TerminalState state) { public void setState(final TerminalState state) {
if (state == TerminalState.CLOSED if (state == TerminalState.CLOSED
|| state == TerminalState.CONNECTED) { || state == TerminalState.CONNECTED) {
Display.getDefault().asyncExec(new Runnable() { Display.getDefault().asyncExec(new Runnable() {
public void run() { public void run() {
CTabItem item = tabFolder if (!item.isDisposed()) {
.getSelection(); final ITerminalServiceSubSystem terminalServiceSubSystem = TerminalServiceHelper
if (item != null && !item.isDisposed()) { .getTerminalSubSystem(host);
Object data = item.getData();
if (data instanceof IHost) {
IHost host = (IHost) data;
final ITerminalServiceSubSystem terminalServiceSubSystem = TerminalServiceHelper
.getTerminalSubSystem(host);
if (state == TerminalState.CONNECTED) if (state == TerminalState.CONNECTED)
TerminalServiceHelper TerminalServiceHelper
.updateTerminalShellForTerminalElement(item); .updateTerminalShellForTerminalElement(item);
setTabImage(host, item); setTabImage(host, item);
ISystemRegistry registry = RSECorePlugin ISystemRegistry registry = RSECorePlugin
.getTheSystemRegistry(); .getTheSystemRegistry();
registry registry
.fireEvent(new SystemResourceChangeEvent( .fireEvent(new SystemResourceChangeEvent(
terminalServiceSubSystem, terminalServiceSubSystem,
ISystemResourceChangeEvents.EVENT_REFRESH, ISystemResourceChangeEvents.EVENT_REFRESH,
terminalServiceSubSystem)); terminalServiceSubSystem));
}
} }
if (state == TerminalState.CONNECTED) { if (state == TerminalState.CONNECTED) {
if (initialWorkingDirCmd != null) {
fTerminalControl
.pasteString(initialWorkingDirCmd);
}
if (initialWorkingDirCmd != null) {
Object data = item
.getData(DATA_KEY_CONTROL);
if (data instanceof ITerminalViewControl)
((ITerminalViewControl) data)
.pasteString(initialWorkingDirCmd);
}
} }
} }
}); });
@ -249,13 +244,13 @@ public class TerminalViewTab extends Composite {
}, c, new ITerminalConnector[] { connector }); }, c, new ITerminalConnector[] { connector });
// Specify Encoding for Terminal // Specify Encoding for Terminal
try { try {
fTerminalControl.setEncoding(host.getDefaultEncoding(true)); terminalControl.setEncoding(host.getDefaultEncoding(true));
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
/* ignore and allow fallback to default encoding */ /* ignore and allow fallback to default encoding */
} }
fTerminalControl.setConnector(connector); terminalControl.setConnector(connector);
fTerminalControl.connectTerminal(); item.setData(DATA_KEY_CONTROL, terminalControl);
item.setData(DATA_KEY_CONTROL, fTerminalControl); terminalControl.connectTerminal();
} }
item.setControl(c); item.setControl(c);
tabFolder.setSelection(item); tabFolder.setSelection(item);