From 21d4f14a69832cfb8c61eed13b86458956f326f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Wed, 9 Jul 2025 18:04:33 +0200 Subject: [PATCH] Update to the new terminal view bundles provided by platform --- .../META-INF/MANIFEST.MF | 4 +-- .../linuxtools/docker/core/Activator.java | 14 ++++++++++ .../docker/core/DockerConnection.java | 19 +++++++------ .../launchers/DockerAllBotTest Local.launch | 28 +++++++++---------- .../launchers/DockerAllBotTest Mockito.launch | 28 +++++++++---------- .../META-INF/MANIFEST.MF | 3 +- .../linuxtools/docker/ui/Activator.java | 13 +++++++++ .../docker/ui/launch/ContainerLauncher.java | 2 +- .../RemoveContainerLogCommandHandler.java | 14 +++++----- .../linuxtools-latest.target | 2 +- .../META-INF/MANIFEST.MF | 9 +++--- .../internal/vagrant/ui/Activator.java | 13 +++++++++ .../ui/commands/SSHVMCommandHandler.java | 13 +++++---- 13 files changed, 101 insertions(+), 61 deletions(-) diff --git a/containers/org.eclipse.linuxtools.docker.core/META-INF/MANIFEST.MF b/containers/org.eclipse.linuxtools.docker.core/META-INF/MANIFEST.MF index 0ad82fccb8..db60041688 100644 --- a/containers/org.eclipse.linuxtools.docker.core/META-INF/MANIFEST.MF +++ b/containers/org.eclipse.linuxtools.docker.core/META-INF/MANIFEST.MF @@ -16,7 +16,6 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.28.0", org.glassfish.jersey.media.jersey-media-json-jackson;bundle-version="3.1.5", org.glassfish.jersey.core.jersey-common;bundle-version="3.1.5", org.glassfish.jersey.inject.jersey-hk2;bundle-version="3.1.5", - org.eclipse.tm.terminal.view.core;bundle-version="4.0.0", org.eclipse.debug.core;bundle-version="3.21.100" Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy @@ -24,7 +23,8 @@ Export-Package: org.eclipse.linuxtools.docker.core, org.eclipse.linuxtools.internal.docker.core;x-friends:="org.eclipse.linuxtools.docker.ui,org.eclipse.linuxtools.docker.ui.tests,org.eclipse.linuxtools.docker.integration.tests" Import-Package: com.fasterxml.jackson.annotation;version="2.10.3", jakarta.ws.rs;version="2.0.1", - jakarta.ws.rs.core;version="2.0.1", jakarta.ws.rs.client;version="2.0.1", + jakarta.ws.rs.core;version="2.0.1", + org.eclipse.terminal.view.core;version="[1.0.0,2.0.0)", org.glassfish.jersey.apache.connector Automatic-Module-Name: org.eclipse.linuxtools.docker.core diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/Activator.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/Activator.java index 1706a0cc7e..95735b0906 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/Activator.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/Activator.java @@ -18,7 +18,9 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Plugin; import org.eclipse.core.runtime.Status; +import org.eclipse.terminal.view.core.ITerminalService; import org.osgi.framework.BundleContext; +import org.osgi.util.tracker.ServiceTracker; public class Activator extends Plugin { @@ -82,4 +84,16 @@ public static void log(Throwable e) { log(status); } + private static ServiceTracker serviceTracker; + + public static synchronized ITerminalService getTerminalService() { + if (serviceTracker == null) { + serviceTracker = new ServiceTracker<>( + getDefault().getBundle().getBundleContext(), + ITerminalService.class, null); + serviceTracker.open(); + } + return serviceTracker.getService(); + } + } diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java index c201f1e4ae..44e7d8a3f8 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java @@ -93,10 +93,9 @@ import org.eclipse.linuxtools.docker.core.Messages; import org.eclipse.linuxtools.internal.docker.core.DockerImage.DockerImageQualifier; import org.eclipse.osgi.util.NLS; -import org.eclipse.tm.terminal.view.core.TerminalServiceFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; +import org.eclipse.terminal.view.core.ITerminalService; +import org.eclipse.terminal.view.core.ITerminalServiceOutputStreamMonitorListener; +import org.eclipse.terminal.view.core.ITerminalsConnectorConstants; import org.mandas.docker.client.DockerClient; import org.mandas.docker.client.DockerClient.AttachParameter; import org.mandas.docker.client.DockerClient.BuildParam; @@ -2352,13 +2351,13 @@ private void openTerminal(LogStream pty_stream, String name, TerminalOutputMonitorListener monitor = new TerminalOutputMonitorListener(out); - // org.eclipse.tm.terminal.connector.ssh.controls.SshWizardConfigurationPanel + // org.eclipse.terminal.connector.ssh.controls.SshWizardConfigurationPanel Map properties = new HashMap<>(); properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, - "org.eclipse.tm.terminal.connector.streams.launcher.streams"); //$NON-NLS-1$ + "org.eclipse.terminal.connector.streams.launcher.streams"); //$NON-NLS-1$ properties.put( ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, - "org.eclipse.tm.terminal.connector.streams.StreamsConnector"); //$NON-NLS-1$ + "org.eclipse.terminal.connector.streams.StreamsConnector"); //$NON-NLS-1$ properties.put(ITerminalsConnectorConstants.PROP_TITLE, name); properties.put(ITerminalsConnectorConstants.PROP_LOCAL_ECHO, false); properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, true); @@ -2381,8 +2380,10 @@ private void openTerminal(LogStream pty_stream, String name, if (out != null) { out.setTerminalProperties(properties); } - ITerminalService service = TerminalServiceFactory.getService(); - service.openConsole(properties, null); + ITerminalService service = Activator.getTerminalService(); + if (service != null) { + service.openConsole(properties, null); + } } catch (Exception e) { throw new DockerException(e); } diff --git a/containers/org.eclipse.linuxtools.docker.integration.tests/launchers/DockerAllBotTest Local.launch b/containers/org.eclipse.linuxtools.docker.integration.tests/launchers/DockerAllBotTest Local.launch index 1b4a58db12..8a56c1f1c4 100644 --- a/containers/org.eclipse.linuxtools.docker.integration.tests/launchers/DockerAllBotTest Local.launch +++ b/containers/org.eclipse.linuxtools.docker.integration.tests/launchers/DockerAllBotTest Local.launch @@ -93,12 +93,12 @@ - - - - - - + + + + + + @@ -378,14 +378,14 @@ - - - - - - - - + + + + + + + + diff --git a/containers/org.eclipse.linuxtools.docker.integration.tests/launchers/DockerAllBotTest Mockito.launch b/containers/org.eclipse.linuxtools.docker.integration.tests/launchers/DockerAllBotTest Mockito.launch index 7ccc5510f9..af7279a263 100644 --- a/containers/org.eclipse.linuxtools.docker.integration.tests/launchers/DockerAllBotTest Mockito.launch +++ b/containers/org.eclipse.linuxtools.docker.integration.tests/launchers/DockerAllBotTest Mockito.launch @@ -93,12 +93,12 @@ - - - - - - + + + + + + @@ -378,14 +378,14 @@ - - - - - - - - + + + + + + + + diff --git a/containers/org.eclipse.linuxtools.docker.ui/META-INF/MANIFEST.MF b/containers/org.eclipse.linuxtools.docker.ui/META-INF/MANIFEST.MF index feede02637..1c0e03d691 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/META-INF/MANIFEST.MF +++ b/containers/org.eclipse.linuxtools.docker.ui/META-INF/MANIFEST.MF @@ -26,8 +26,6 @@ Require-Bundle: org.eclipse.ui, org.mandas.docker-client;bundle-version="7.0.7", org.eclipse.e4.ui.workbench;bundle-version="1.4.0", org.eclipse.e4.ui.model.workbench;bundle-version="1.2.0", - org.eclipse.tm.terminal.view.ui;bundle-version="4.1.0", - org.eclipse.tm.terminal.view.core;bundle-version="4.0.0", org.apache.commons.commons-compress;bundle-version="1.23.0" Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy @@ -43,3 +41,4 @@ Export-Package: org.eclipse.linuxtools.docker.ui, org.eclipse.linuxtools.internal.docker.ui.views;x-friends:="org.eclipse.linuxtools.docker.ui.tests", org.eclipse.linuxtools.internal.docker.ui.wizards;x-friends:="org.eclipse.linuxtools.docker.ui.tests" Automatic-Module-Name: org.eclipse.linuxtools.docker.ui +Import-Package: org.eclipse.terminal.view.core;version="[1.0.0,2.0.0)" diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/docker/ui/Activator.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/docker/ui/Activator.java index 88fb7942bf..5a50f5394e 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/docker/ui/Activator.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/docker/ui/Activator.java @@ -18,10 +18,12 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.swt.widgets.Shell; +import org.eclipse.terminal.view.core.ITerminalService; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; +import org.osgi.util.tracker.ServiceTracker; /** * The activator class controls the plug-in life cycle @@ -88,5 +90,16 @@ public static Shell getActiveWorkbenchShell() { return null; } + private static ServiceTracker serviceTracker; + + public static synchronized ITerminalService getTerminalService() { + if (serviceTracker == null) { + serviceTracker = new ServiceTracker<>(getDefault().getBundle().getBundleContext(), ITerminalService.class, + null); + serviceTracker.open(); + } + return serviceTracker.getService(); + } + } diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/docker/ui/launch/ContainerLauncher.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/docker/ui/launch/ContainerLauncher.java index 049440cb8a..aee888bd53 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/docker/ui/launch/ContainerLauncher.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/docker/ui/launch/ContainerLauncher.java @@ -688,7 +688,7 @@ public void launch(String id, IContainerLaunchListener listener, IWorkbenchPage page = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getActivePage(); IViewPart terminalView = page.findView( - "org.eclipse.tm.terminal.view.ui.TerminalsView"); + "org.eclipse.terminal.view.ui.TerminalsView"); CTabFolder ctabfolder = terminalView .getAdapter(CTabFolder.class); if (ctabfolder != null) { diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveContainerLogCommandHandler.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveContainerLogCommandHandler.java index 6a886af08e..4d5c29e594 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveContainerLogCommandHandler.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveContainerLogCommandHandler.java @@ -1,6 +1,6 @@ /******************************************************************************* * Copyright (c) 2015, 2018 Red Hat. - * + * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 * which is available at https://www.eclipse.org/legal/epl-2.0/ @@ -21,11 +21,11 @@ import org.eclipse.linuxtools.docker.core.IDockerConnection; import org.eclipse.linuxtools.docker.core.IDockerContainer; import org.eclipse.linuxtools.docker.core.IDockerContainerInfo; +import org.eclipse.linuxtools.docker.ui.Activator; import org.eclipse.linuxtools.internal.docker.ui.consoles.RunConsole; import org.eclipse.linuxtools.internal.docker.ui.views.DockerContainersView; -import org.eclipse.tm.terminal.view.core.TerminalServiceFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; +import org.eclipse.terminal.view.core.ITerminalService; +import org.eclipse.terminal.view.core.ITerminalsConnectorConstants; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.handlers.HandlerUtil; @@ -49,13 +49,13 @@ public Object execute(final ExecutionEvent event) { if (info.config().tty()) { Map properties = new HashMap<>(); properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, - "org.eclipse.tm.terminal.connector.streams.launcher.streams"); + "org.eclipse.terminal.connector.streams.launcher.streams"); properties.put( ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, - "org.eclipse.tm.terminal.connector.streams.StreamsConnector"); + "org.eclipse.terminal.connector.streams.StreamsConnector"); properties.put(ITerminalsConnectorConstants.PROP_TITLE, info.name()); - ITerminalService service = TerminalServiceFactory.getService(); + ITerminalService service = Activator.getTerminalService(); service.closeConsole(properties, null); return null; } diff --git a/releng/org.eclipse.linuxtools.target/linuxtools-latest.target b/releng/org.eclipse.linuxtools.target/linuxtools-latest.target index 4b575fb147..e012f134ef 100644 --- a/releng/org.eclipse.linuxtools.target/linuxtools-latest.target +++ b/releng/org.eclipse.linuxtools.target/linuxtools-latest.target @@ -36,6 +36,7 @@ + @@ -47,7 +48,6 @@ - diff --git a/vagrant/org.eclipse.linuxtools.vagrant.ui/META-INF/MANIFEST.MF b/vagrant/org.eclipse.linuxtools.vagrant.ui/META-INF/MANIFEST.MF index ba9dd4c7e2..7e9192baed 100644 --- a/vagrant/org.eclipse.linuxtools.vagrant.ui/META-INF/MANIFEST.MF +++ b/vagrant/org.eclipse.linuxtools.vagrant.ui/META-INF/MANIFEST.MF @@ -22,10 +22,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.core.databinding.property;bundle-version="1.4.200", org.eclipse.jface.databinding;bundle-version="1.9.0", org.eclipse.debug.core;bundle-version="3.10.0", - org.eclipse.debug.ui;bundle-version="3.11.0", - org.eclipse.tm.terminal.connector.ssh;bundle-version="4.0.0", - org.eclipse.tm.terminal.view.core;bundle-version="4.0.0", - org.eclipse.tm.terminal.view.ui;bundle-version="4.0.0" + org.eclipse.debug.ui;bundle-version="3.11.0" Bundle-RequiredExecutionEnvironment: JavaSE-21 Bundle-ActivationPolicy: lazy Bundle-Localization: plugin @@ -34,5 +31,7 @@ Export-Package: org.eclipse.linuxtools.internal.vagrant.ui;x-internal:=true, org.eclipse.linuxtools.internal.vagrant.ui.propertytesters;x-internal:=true, org.eclipse.linuxtools.internal.vagrant.ui.views;x-internal:=true, org.eclipse.linuxtools.internal.vagrant.ui.wizards;x-internal:=true -Import-Package: org.eclipse.jsch.internal.core +Import-Package: org.eclipse.jsch.internal.core, + org.eclipse.terminal.view.core;version="[1.0.0,2.0.0)", + org.eclipse.terminal.view.ui.launcher;version="[1.0.0,2.0.0)" Automatic-Module-Name: org.eclipse.linuxtools.vagrant.ui diff --git a/vagrant/org.eclipse.linuxtools.vagrant.ui/src/org/eclipse/linuxtools/internal/vagrant/ui/Activator.java b/vagrant/org.eclipse.linuxtools.vagrant.ui/src/org/eclipse/linuxtools/internal/vagrant/ui/Activator.java index de3e28ecc1..502c7eb1b7 100644 --- a/vagrant/org.eclipse.linuxtools.vagrant.ui/src/org/eclipse/linuxtools/internal/vagrant/ui/Activator.java +++ b/vagrant/org.eclipse.linuxtools.vagrant.ui/src/org/eclipse/linuxtools/internal/vagrant/ui/Activator.java @@ -23,8 +23,10 @@ import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Display; +import org.eclipse.terminal.view.ui.launcher.ILauncherDelegateManager; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; +import org.osgi.util.tracker.ServiceTracker; /** * The activator class controls the plug-in life cycle @@ -100,4 +102,15 @@ public static void log(Throwable e) { log(status); } + private static ServiceTracker launchDelegateServiceTracker; + + public static synchronized ILauncherDelegateManager getLaunchDelegateManager() { + if (launchDelegateServiceTracker == null) { + launchDelegateServiceTracker = new ServiceTracker<>(getDefault().getBundle().getBundleContext(), + ILauncherDelegateManager.class, null); + launchDelegateServiceTracker.open(); + } + return launchDelegateServiceTracker.getService(); + } + } diff --git a/vagrant/org.eclipse.linuxtools.vagrant.ui/src/org/eclipse/linuxtools/internal/vagrant/ui/commands/SSHVMCommandHandler.java b/vagrant/org.eclipse.linuxtools.vagrant.ui/src/org/eclipse/linuxtools/internal/vagrant/ui/commands/SSHVMCommandHandler.java index 26340e45b4..6836bd89c6 100644 --- a/vagrant/org.eclipse.linuxtools.vagrant.ui/src/org/eclipse/linuxtools/internal/vagrant/ui/commands/SSHVMCommandHandler.java +++ b/vagrant/org.eclipse.linuxtools.vagrant.ui/src/org/eclipse/linuxtools/internal/vagrant/ui/commands/SSHVMCommandHandler.java @@ -22,11 +22,11 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jsch.internal.core.JSchCorePlugin; import org.eclipse.linuxtools.internal.vagrant.core.VagrantConnection; +import org.eclipse.linuxtools.internal.vagrant.ui.Activator; import org.eclipse.linuxtools.vagrant.core.IVagrantVM; import org.eclipse.linuxtools.vagrant.core.VagrantService; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Display; -import org.eclipse.tm.terminal.connector.ssh.launcher.SshLauncherDelegate; public class SSHVMCommandHandler extends BaseVMCommandHandler { @@ -42,12 +42,12 @@ void executeInJob(final IVagrantVM vm, IProgressMonitor monitor) { Messages.SSHVMCommandHandler_bad_credentials)); return; } - // org.eclipse.tm.terminal.connector.ssh.controls.SshWizardConfigurationPanel + // org.eclipse.terminal.connector.ssh.controls.SshWizardConfigurationPanel Map properties = new HashMap<>(); properties.put("ssh.keep_alive", 300); //$NON-NLS-1$ properties.put("ip.port", vm.port()); //$NON-NLS-1$ properties.put("delegateId", //$NON-NLS-1$ - "org.eclipse.tm.terminal.connector.ssh.launcher.ssh"); //$NON-NLS-1$ + "org.eclipse.terminal.connector.ssh.launcher.ssh"); //$NON-NLS-1$ properties.put("selection", null); //$NON-NLS-1$ properties.put("ssh.password", ""); //$NON-NLS-1$ //$NON-NLS-2$ // TODO: Do this through API later @@ -56,14 +56,15 @@ void executeInJob(final IVagrantVM vm, IProgressMonitor monitor) { && !conn.isTrackedKey(vm.identityFile())) { setupKeyPreferences(vm.identityFile()); } + String connectorId = "org.eclipse.terminal.connector.ssh.SshConnector"; properties.put("tm.terminal.connector.id", //$NON-NLS-1$ - "org.eclipse.tm.terminal.connector.ssh.SshConnector"); //$NON-NLS-1$ + connectorId); // $NON-NLS-1$ properties.put("ip.host", vm.ip()); //$NON-NLS-1$ properties.put("ssh.user", vm.user()); //$NON-NLS-1$ properties.put("encoding", null); //$NON-NLS-1$ properties.put("timeout", 0); //$NON-NLS-1$ - SshLauncherDelegate delegate = new SshLauncherDelegate(); - delegate.execute(properties, null); + Activator.getLaunchDelegateManager().findLauncherDelegate(connectorId, true) + .ifPresent(launcherDelegate -> launcherDelegate.execute(properties, null)); } private void setupKeyPreferences(String identityFile) {