Skip to content

Commit a52dfaf

Browse files
authored
Merge branch 'eclipse-platform:master' into master
2 parents 151e27c + 731e745 commit a52dfaf

File tree

638 files changed

+47313
-3899
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

638 files changed

+47313
-3899
lines changed

debug/org.eclipse.debug.terminal/META-INF/MANIFEST.MF

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@ Bundle-Version: 1.0.0.qualifier
77
Require-Bundle: org.eclipse.core.runtime,
88
org.eclipse.debug.core;bundle-version="3.23.0",
99
org.eclipse.tm.terminal.control;bundle-version="5.6.0",
10-
org.eclipse.cdt.core.native;bundle-version="6.4.0",
10+
org.eclipse.cdt.core.native;bundle-version="[6.4.0,7.0.0)",
1111
org.eclipse.swt;bundle-version="3.130.0",
12-
org.eclipse.ui;bundle-version="3.207.100"
12+
org.eclipse.ui;bundle-version="3.207.100",
13+
org.eclipse.ui.console,
14+
org.eclipse.core.expressions
1315
Bundle-RequiredExecutionEnvironment: JavaSE-21
16+
Bundle-Localization: plugin
1417
Automatic-Module-Name: org.eclipse.debug.terminal
1518
Bundle-ActivationPolicy: lazy
1619
Service-Component: OSGI-INF/org.eclipse.debug.terminal.ui.PageBookAdapter.xml
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
requires.1.namespace = org.eclipse.equinox.p2.iu
2+
requires.1.name = org.eclipse.cdt.core.linux
3+
requires.1.filter = (osgi.os=linux)
4+
5+
requires.2.namespace = org.eclipse.equinox.p2.iu
6+
requires.2.name = org.eclipse.cdt.core.linux.x86_64
7+
requires.2.filter = (&(osgi.os=linux)(osgi.arch=x86_64))
8+
9+
requires.3.namespace = org.eclipse.equinox.p2.iu
10+
requires.3.name = org.eclipse.cdt.core.linux.ppc64le
11+
requires.3.filter = (&(osgi.os=linux)(osgi.arch=ppc64le))
12+
13+
requires.4.namespace = org.eclipse.equinox.p2.iu
14+
requires.4.name = org.eclipse.cdt.core.linux.aarch64
15+
requires.4.filter = (&(osgi.os=linux)(osgi.arch=aarch64))
16+
17+
requires.5.namespace = org.eclipse.equinox.p2.iu
18+
requires.5.name = org.eclipse.cdt.core.macosx
19+
requires.5.filter = (osgi.os=macosx)
20+
21+
requires.6.namespace = org.eclipse.equinox.p2.iu
22+
requires.6.name = org.eclipse.cdt.core.win32
23+
requires.6.filter = (osgi.os=win32)
24+
25+
requires.7.namespace = org.eclipse.equinox.p2.iu
26+
requires.7.name = org.eclipse.cdt.core.win32.x86_64
27+
requires.7.filter = (&(osgi.os=win32)(osgi.arch=x86_64))
28+
29+
requires.8.namespace = org.eclipse.equinox.p2.iu
30+
requires.8.name = org.eclipse.cdt.core.win32.aarch64
31+
requires.8.filter = (&(osgi.os=win32)(osgi.arch=aarch64))

debug/org.eclipse.debug.terminal/build.properties

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@ bin.includes = META-INF/,\
44
.,\
55
plugin.xml,\
66
OSGI-INF/,\
7-
about.html
8-
src.includes = about.html
7+
about.html,\
8+
plugin.properties
9+
src.includes = about.html,\
10+
icons/
452 Bytes
Loading
729 Bytes
Loading

debug/org.eclipse.debug.terminal/plugin.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,13 @@
1616
id="org.eclipse.debug.terminal.processFactory">
1717
</processFactory>
1818
</extension>
19+
<extension
20+
point="org.eclipse.ui.console.consoleFactories">
21+
<consoleFactory
22+
class="org.eclipse.debug.terminal.ui.TerminalConsoleFactory"
23+
icon="icons/console_view.png"
24+
label="Terminal">
25+
</consoleFactory>
26+
</extension>
1927

2028
</plugin>

debug/org.eclipse.debug.terminal/src/org/eclipse/debug/terminal/ui/ConsoleConnector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
class ConsoleConnector implements ITerminalConnector {
2626

27-
private Spawner process;
27+
private final Spawner process;
2828
private ITerminalControl control;
2929

3030
public ConsoleConnector(Spawner process) {

debug/org.eclipse.debug.terminal/src/org/eclipse/debug/terminal/ui/PageBookAdapter.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,14 @@
1313
*******************************************************************************/
1414
package org.eclipse.debug.terminal.ui;
1515

16+
import java.io.IOException;
17+
import java.io.OutputStream;
18+
1619
import org.eclipse.cdt.utils.spawner.Spawner;
1720
import org.eclipse.core.runtime.AdapterTypes;
1821
import org.eclipse.core.runtime.IAdapterFactory;
22+
import org.eclipse.debug.core.model.IBinaryStreamMonitor;
23+
import org.eclipse.debug.core.model.IStreamMonitor;
1924
import org.eclipse.debug.terminal.PtyRuntimeProcess;
2025
import org.eclipse.ui.part.IPageBookViewPage;
2126
import org.osgi.service.component.annotations.Component;
@@ -29,7 +34,19 @@ public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
2934
if (adaptableObject instanceof PtyRuntimeProcess rt) {
3035
Spawner spawner = rt.getSpawner();
3136
if (spawner != null) {
32-
return adapterType.cast(new TerminalConsolePage(spawner, rt.getStreamsProxy()));
37+
return adapterType.cast(new TerminalConsolePage(new ConsoleConnector(spawner), terminal -> {
38+
IStreamMonitor streamMonitor = rt.getStreamsProxy().getOutputStreamMonitor();
39+
if (streamMonitor instanceof IBinaryStreamMonitor bin) {
40+
OutputStream outputStream = terminal.getRemoteToTerminalOutputStream();
41+
bin.addBinaryListener((data, monitor) -> {
42+
try {
43+
outputStream.write(data);
44+
} catch (IOException e1) {
45+
e1.printStackTrace();
46+
}
47+
});
48+
}
49+
}));
3350
}
3451
}
3552
return null;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2025 Christoph Läubrich and others.
3+
*
4+
* This program and the accompanying materials
5+
* are made available under the terms of the Eclipse Public License 2.0
6+
* which accompanies this distribution, and is available at
7+
* https://www.eclipse.org/legal/epl-2.0/
8+
*
9+
* SPDX-License-Identifier: EPL-2.0
10+
*
11+
* Contributors:
12+
* Christoph Läubrich - initial API and implementation
13+
*******************************************************************************/
14+
package org.eclipse.debug.terminal.ui;
15+
16+
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
17+
import org.eclipse.ui.console.AbstractConsole;
18+
import org.eclipse.ui.console.IConsoleView;
19+
import org.eclipse.ui.part.IPageBookViewPage;
20+
21+
class TerminalConsole extends AbstractConsole {
22+
23+
public final static String TYPE = "terminalConsole"; //$NON-NLS-1$
24+
private final ITerminalConnector terminalConnector;
25+
26+
TerminalConsole(ITerminalConnector terminalConnector) {
27+
super("Terminal", TYPE, null, true);
28+
this.terminalConnector = terminalConnector;
29+
}
30+
31+
@Override
32+
public IPageBookViewPage createPage(IConsoleView view) {
33+
return new TerminalConsolePage(terminalConnector, null);
34+
}
35+
36+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2025 Christoph Läubrich and others.
3+
*
4+
* This program and the accompanying materials
5+
* are made available under the terms of the Eclipse Public License 2.0
6+
* which accompanies this distribution, and is available at
7+
* https://www.eclipse.org/legal/epl-2.0/
8+
*
9+
* SPDX-License-Identifier: EPL-2.0
10+
*
11+
* Contributors:
12+
* Christoph Läubrich - initial API and implementation
13+
*******************************************************************************/
14+
package org.eclipse.debug.terminal.ui;
15+
16+
import java.util.Map;
17+
18+
import org.eclipse.core.commands.Command;
19+
import org.eclipse.core.commands.ParameterizedCommand;
20+
import org.eclipse.core.runtime.ILog;
21+
import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector;
22+
import org.eclipse.ui.PlatformUI;
23+
import org.eclipse.ui.commands.ICommandService;
24+
import org.eclipse.ui.console.ConsolePlugin;
25+
import org.eclipse.ui.console.IConsole;
26+
import org.eclipse.ui.console.IConsoleFactory;
27+
import org.eclipse.ui.handlers.IHandlerService;
28+
29+
/**
30+
* A Factory that supports open new Terminal Console.
31+
*/
32+
public class TerminalConsoleFactory implements IConsoleFactory {
33+
34+
@Override
35+
public void openConsole() {
36+
ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
37+
IHandlerService handlerService = PlatformUI.getWorkbench().getService(IHandlerService.class);
38+
if (commandService == null || handlerService == null) {
39+
return;
40+
}
41+
Command command = commandService.getCommand("org.eclipse.tm.terminal.view.ui.command.launchConsole");
42+
if (command == null) {
43+
return;
44+
}
45+
ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(command, Map.of());
46+
try {
47+
Object result = handlerService.executeCommandInContext(parameterizedCommand, null,
48+
handlerService.getCurrentState());
49+
if (result instanceof ITerminalConnector terminalConnector) {
50+
TerminalConsole console = new TerminalConsole(terminalConnector);
51+
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { console });
52+
}
53+
} catch (Exception e) {
54+
ILog.get().error("Can't launch terminal console", e);
55+
}
56+
}
57+
58+
}

0 commit comments

Comments
 (0)