diff options
3 files changed, 44 insertions, 6 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 d1f315a62..98272afdb 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,10 +14,20 @@ 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; @@ -144,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/console/TextConsolePage.java b/org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsolePage.java index 78634dd0c..c23bcd145 100644 --- a/org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsolePage.java +++ b/org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsolePage.java @@ -18,7 +18,6 @@ import java.util.Map; import java.util.ResourceBundle; import org.eclipse.core.runtime.IAdaptable; - import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; @@ -26,23 +25,19 @@ import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.resource.JFaceResources; - import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IFindReplaceTarget; import org.eclipse.jface.text.ITextListener; import org.eclipse.jface.text.ITextOperationTarget; import org.eclipse.jface.text.TextEvent; - import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; - import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Widget; - import org.eclipse.ui.IActionBars; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IWorkbenchActionConstants; @@ -57,7 +52,6 @@ import org.eclipse.ui.internal.console.FollowHyperlinkAction; import org.eclipse.ui.internal.console.IConsoleHelpContextIds; import org.eclipse.ui.part.IPageBookViewPage; import org.eclipse.ui.part.IPageSite; - import org.eclipse.ui.texteditor.FindReplaceAction; import org.eclipse.ui.texteditor.IUpdate; @@ -241,6 +235,7 @@ public class TextConsolePage implements IPageBookViewPage, IPropertyChangeListen public void setFocus() { if (fViewer != null) { fViewer.getTextWidget().setFocus(); + updateAction(ActionFactory.FIND.getId()); } } 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 0f68c92e7..692f10219 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 @@ -185,6 +185,9 @@ public class ConsoleView extends PageBookView implements IConsoleView, IConsoleL if (page instanceof IOConsolePage) { ((IOConsolePage) page).setWordWrap(fWordWrap); } + if (page != null) { + page.setFocus(); + } } /** |