diff options
-rw-r--r-- | org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleTests.java | 46 | ||||
-rw-r--r-- | org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java | 12 |
2 files changed, 54 insertions, 4 deletions
diff --git a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleTests.java b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleTests.java index 0a8413576..607f70eef 100644 --- a/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleTests.java +++ b/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleTests.java @@ -14,15 +14,23 @@ package org.eclipse.debug.tests.console; import java.io.IOException; import java.nio.charset.StandardCharsets; +import org.eclipse.core.commands.Command; +import org.eclipse.debug.tests.AbstractDebugTest; +import org.eclipse.debug.tests.TestUtil; import org.eclipse.jface.text.IDocument; - +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.commands.ICommandService; +import org.eclipse.ui.console.ConsolePlugin; +import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleConstants; +import org.eclipse.ui.console.IConsoleManager; +import org.eclipse.ui.console.IOConsole; import org.eclipse.ui.console.IOConsoleOutputStream; import org.eclipse.ui.console.MessageConsole; -import org.eclipse.debug.tests.AbstractDebugTest; -import org.eclipse.debug.tests.TestUtil; - import junit.framework.TestCase; @@ -146,4 +154,34 @@ public class ConsoleTests extends AbstractDebugTest { } } + /** + * Validate that we can use find and replace after opening a console in the + * Console View. + * + * @see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=268608">bug + * 268608</a> + */ + public void testFindReplaceIsEnabledOnConsoleOpen() throws Exception { + IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + IViewPart consoleView = activePage.showView(IConsoleConstants.ID_CONSOLE_VIEW); + + IOConsole console = new IOConsole("Test Console 7", IConsoleConstants.MESSAGE_CONSOLE_TYPE, null, true); //$NON-NLS-1$ + console.getDocument().set("some text"); //$NON-NLS-1$ + + IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager(); + IConsole[] consoles = { console }; + + try { + consoleManager.addConsoles(consoles); + consoleManager.showConsoleView(console); + TestUtil.waitForJobs(getName(), 100, 3000); + + ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class); + Command command = commandService.getCommand(IWorkbenchCommandConstants.EDIT_FIND_AND_REPLACE); + TestCase.assertTrue("expected FindReplace command to be enabled after opening console", command.isEnabled()); + } finally { + consoleManager.removeConsoles(consoles); + activePage.hideView(consoleView); + } + } } diff --git a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java index a69f1ed96..ab03b3adb 100644 --- a/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java +++ b/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java @@ -52,6 +52,8 @@ import org.eclipse.ui.console.IConsoleListener; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.IConsolePageParticipant; import org.eclipse.ui.console.IConsoleView; +import org.eclipse.ui.console.TextConsolePage; +import org.eclipse.ui.console.TextConsoleViewer; import org.eclipse.ui.contexts.IContextActivation; import org.eclipse.ui.contexts.IContextService; import org.eclipse.ui.part.IPage; @@ -185,6 +187,16 @@ public class ConsoleView extends PageBookView implements IConsoleView, IConsoleL if (page instanceof IOConsolePage) { ((IOConsolePage) page).setWordWrap(fWordWrap); } + /* + * Bug 268608: cannot invoke find/replace after opening console + * + * Global actions of TextConsolePage must be updated here, + * but they are only updated on a selection change. + */ + if (page instanceof TextConsolePage) { + TextConsoleViewer viewer = ((TextConsolePage) page).getViewer(); + viewer.setSelection(viewer.getSelection()); + } } /** |