From 7704fb18cc5c69f5b3c48a11b253ea0faab1a0ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20L=C3=A4ubrich?= Date: Sun, 9 Mar 2025 17:37:39 +0100 Subject: [PATCH] Support alternative PageBookViewPage for console through adapter pattern Currently one can supply alternative processes through IProcessFactory's but all of such processes must currently be a textconsole there is no way to supply an alternative or enhanced UI. This now uses the adapter pattern to support supply an alternative PageBookViewPage that is used to display the console. --- .../internal/ui/views/console/ProcessConsole.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java b/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java index 33df4701a2c..574fc096aca 100644 --- a/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java +++ b/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java @@ -44,6 +44,7 @@ import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Adapters; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; @@ -93,6 +94,7 @@ import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import org.eclipse.ui.console.ConsolePlugin; +import org.eclipse.ui.console.IConsoleView; import org.eclipse.ui.console.IHyperlink; import org.eclipse.ui.console.IOConsole; import org.eclipse.ui.console.IOConsoleInputStream; @@ -102,6 +104,7 @@ import org.eclipse.ui.console.TextConsole; import org.eclipse.ui.editors.text.EditorsUI; import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.IPageBookViewPage; import org.eclipse.ui.progress.UIJob; /** @@ -280,6 +283,15 @@ protected ImageDescriptor computeImageDescriptor() { return null; } + @Override + public IPageBookViewPage createPage(IConsoleView view) { + IPageBookViewPage adapt = Adapters.adapt(getProcess(), IPageBookViewPage.class); + if (adapt != null) { + return adapt; + } + return super.createPage(view); + } + /** * Computes and returns the current name of this console. *