mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-04 23:05:47 +02:00
[244437] improved ITerminalListener implementation.
This commit is contained in:
parent
e3bb6c7eae
commit
0ecfca3e39
1 changed files with 33 additions and 38 deletions
|
@ -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,23 +194,18 @@ 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();
|
|
||||||
if (item != null && !item.isDisposed()) {
|
|
||||||
Object data = item.getData();
|
|
||||||
if (data instanceof IHost) {
|
|
||||||
IHost host = (IHost) data;
|
|
||||||
final ITerminalServiceSubSystem terminalServiceSubSystem = TerminalServiceHelper
|
final ITerminalServiceSubSystem terminalServiceSubSystem = TerminalServiceHelper
|
||||||
.getTerminalSubSystem(host);
|
.getTerminalSubSystem(host);
|
||||||
|
|
||||||
|
@ -229,13 +222,15 @@ public class TerminalViewTab extends Composite {
|
||||||
ISystemResourceChangeEvents.EVENT_REFRESH,
|
ISystemResourceChangeEvents.EVENT_REFRESH,
|
||||||
terminalServiceSubSystem));
|
terminalServiceSubSystem));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (state == TerminalState.CONNECTED) {
|
if (state == TerminalState.CONNECTED) {
|
||||||
|
|
||||||
if (initialWorkingDirCmd != null) {
|
if (initialWorkingDirCmd != null) {
|
||||||
fTerminalControl
|
Object data = item
|
||||||
|
.getData(DATA_KEY_CONTROL);
|
||||||
|
if (data instanceof ITerminalViewControl)
|
||||||
|
((ITerminalViewControl) data)
|
||||||
.pasteString(initialWorkingDirCmd);
|
.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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue