diff options
author | Luc Bourlier | 2004-03-10 23:56:49 +0000 |
---|---|---|
committer | Luc Bourlier | 2004-03-10 23:56:49 +0000 |
commit | f5ff7e0a8edd693fe0fb5cf174d5b43ed5fd389a (patch) | |
tree | 187fc18a321c77b509d5d26547cc11f465e980db /org.eclipse.ui.console | |
parent | 35babf5f8bcd47e90d04bfd5b8df5cf43a6a629a (diff) | |
download | eclipse.platform.debug-f5ff7e0a8edd693fe0fb5cf174d5b43ed5fd389a.tar.gz eclipse.platform.debug-f5ff7e0a8edd693fe0fb5cf174d5b43ed5fd389a.tar.xz eclipse.platform.debug-f5ff7e0a8edd693fe0fb5cf174d5b43ed5fd389a.zip |
Bug 51402 - [Generic console] need showConsoleView() method
Diffstat (limited to 'org.eclipse.ui.console')
-rw-r--r-- | org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleManager.java | 8 | ||||
-rw-r--r-- | org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java | 53 |
2 files changed, 61 insertions, 0 deletions
diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleManager.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleManager.java index 1f2b7bb39..789eecc7b 100644 --- a/org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleManager.java +++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleManager.java @@ -58,4 +58,12 @@ public interface IConsoleManager { * @return a collection of consoles registered with the console manager */ public IConsole[] getConsoles(); + + /** + * Opens the console view and displays the console. If the view is already open, + * it is brought to the front. + * + * @param console Attempts to display this IConsole + */ + public void showConsoleView(final IConsole console); } diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java index 8a5866e3d..60fa1ed03 100644 --- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java +++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java @@ -18,11 +18,17 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.jface.util.ListenerList; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleConstants; import org.eclipse.ui.console.IConsoleListener; import org.eclipse.ui.console.IConsoleManager; +import org.eclipse.ui.console.IConsoleView; /** * The singleton console manager. @@ -166,4 +172,51 @@ public class ConsoleManager implements IConsoleManager { private void fireUpdate(IConsole[] consoles, int type) { new ConsoleNotifier().notify(consoles, type); } + + /** + * Opens the console view. If the view is already open, it is brought to the front. + */ + public void showConsoleView(final IConsole console) { + ConsolePlugin.getStandardDisplay().asyncExec(new Runnable() { + public void run() { + IWorkbenchWindow window= ConsolePlugin.getDefault().getWorkbench().getActiveWorkbenchWindow(); + if (window != null) { + IWorkbenchPage page= window.getActivePage(); + if (page != null) { + IViewPart consoleView= page.findView(IConsoleConstants.ID_CONSOLE_VIEW); + if (consoleView == null) { + IWorkbenchPart activePart= page.getActivePart(); + try { + consoleView = page.showView(IConsoleConstants.ID_CONSOLE_VIEW); + } catch (PartInitException pie) { + ConsolePlugin.log(pie); + } + //restore focus stolen by the creation of the console + page.activate(activePart); + } else { + boolean bringToTop = shouldBringToTop(console, consoleView); + if (bringToTop) { + page.bringToTop(consoleView); + } + } + if (consoleView instanceof IConsoleView) { + ((IConsoleView)consoleView).display(console); + } + } + } + } + }); + } + + private boolean shouldBringToTop(IConsole console, IViewPart consoleView) { + boolean bringToTop= true; + if (consoleView instanceof IConsoleView) { + IConsoleView cView= (IConsoleView)consoleView; + if (cView.isPinned()) { + IConsole pinnedConsole= cView.getConsole(); + bringToTop = console.equals(pinnedConsole); + } + } + return bringToTop; + } }
\ No newline at end of file |