Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuc Bourlier2004-03-10 23:56:49 +0000
committerLuc Bourlier2004-03-10 23:56:49 +0000
commitf5ff7e0a8edd693fe0fb5cf174d5b43ed5fd389a (patch)
tree187fc18a321c77b509d5d26547cc11f465e980db /org.eclipse.ui.console
parent35babf5f8bcd47e90d04bfd5b8df5cf43a6a629a (diff)
downloadeclipse.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.java8
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java53
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

Back to the top