diff --git a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF index 43c9be467c8..04dd5253eb9 100644 --- a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF +++ b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.cdt.ui; singleton:=true -Bundle-Version: 7.0.100.qualifier +Bundle-Version: 7.1.0.qualifier Bundle-Activator: org.eclipse.cdt.ui.CUIPlugin Bundle-Vendor: %providerName Bundle-Localization: plugin diff --git a/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build.png b/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build.png new file mode 100644 index 00000000000..6b381bf6bf1 Binary files /dev/null and b/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build.png differ diff --git a/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build@2x.png b/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build@2x.png new file mode 100644 index 00000000000..d42ee7f7b91 Binary files /dev/null and b/core/org.eclipse.cdt.ui/icons/elcl16/bring_console_to_top_on_build@2x.png differ diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BringToTopOnBuild.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BringToTopOnBuild.java new file mode 100644 index 00000000000..046d5f6f985 --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BringToTopOnBuild.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2020, Simeon Andreev and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Simeon Andreev - Initial API and implementation + *******************************************************************************/ + +package org.eclipse.cdt.internal.ui.buildconsole; + +import org.eclipse.cdt.internal.ui.preferences.BuildConsolePreferencePage; +import org.eclipse.cdt.ui.CDTSharedImages; +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.preference.IPreferenceStore; + +/** + * Set whether to show the build console on activity. + */ +public class BringToTopOnBuild extends Action { + + public BringToTopOnBuild() { + super(ConsoleMessages.BringToTopOnBuild); + propertyChange(); + setToolTipText(ConsoleMessages.BringToTopOnBuild); + setImageDescriptor(CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_BRING_CONSOLE_TO_TOP_ON_BUILD)); + } + + @Override + public void run() { + super.run(); + boolean isSet = isChecked(); + IPreferenceStore store = CUIPlugin.getDefault().getPreferenceStore(); + store.setValue(BuildConsolePreferencePage.PREF_CONSOLE_ON_TOP, isSet); + } + + public void propertyChange() { + boolean isChecked = BuildConsolePreferencePage.isConsoleOnTop(); + setChecked(isChecked); + } + +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java index c456e9f212c..5802ca1b077 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsoleManager.java @@ -158,13 +158,14 @@ public class BuildConsoleManager implements IBuildConsoleManager, IResourceChang // console page.activate(activePart); } - if (bringToTop && shouldBringToTop(consoleView)) { + boolean shouldBringToTop = shouldBringToTop(consoleView); + if (bringToTop && shouldBringToTop) { page.bringToTop(consoleView); } if (consoleView instanceof IConsoleView) { if (BuildConsole.getCurrentPage() == null) ((IConsoleView) consoleView).display(fConsole); - else + else if (shouldBringToTop) ((IConsoleView) consoleView).display(BuildConsole.getCurrentPage().getConsole()); } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java index f7de34b83dc..0b0a64191a7 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java @@ -123,6 +123,7 @@ public class BuildConsolePage extends Page private PreviousErrorAction fPreviousErrorAction; private ShowErrorAction fShowErrorAction; private WrapLinesAction fWrapAction; + private BringToTopOnBuild fBringToTopOnBuild; /** * @param view @@ -261,6 +262,8 @@ public class BuildConsolePage extends Page || property.equals(BuildConsolePreferencePage.PREF_BUILDCONSOLE_LINES) || property.equals(BuildConsolePreferencePage.PREF_BUILDCONSOLE_WRAP_LINES_MAX)) { fWrapAction.propertyChange(); + } else if (property.equals(BuildConsolePreferencePage.PREF_CONSOLE_ON_TOP)) { + fBringToTopOnBuild.propertyChange(); } } @@ -272,6 +275,7 @@ public class BuildConsolePage extends Page fNextErrorAction = new NextErrorAction(this); fPreviousErrorAction = new PreviousErrorAction(this); fShowErrorAction = new ShowErrorAction(this); + fBringToTopOnBuild = new BringToTopOnBuild(); fSaveLogAction = new CopyBuildLogAction(this); getViewer().setAutoScroll(!fIsLocked); @@ -332,6 +336,7 @@ public class BuildConsolePage extends Page mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fScrollLockAction); mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fWrapAction); mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fClearOutputAction); + mgr.appendToGroup(IConsoleConstants.OUTPUT_GROUP, fBringToTopOnBuild); } protected BuildConsoleViewer getViewer() { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java index 4d8f1570019..8fc3eaaf1ad 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.java @@ -49,6 +49,7 @@ public final class ConsoleMessages extends NLS { public static String CopyLog_UnableToAccess; public static String CopyLog_UnavailableLog; public static String WrapLinesAction_WrapLines; + public static String BringToTopOnBuild; static { NLS.initializeMessages(BUNDLE_NAME, ConsoleMessages.class); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties index 9dc8cd7c03b..d65a275b2df 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/ConsoleMessages.properties @@ -42,3 +42,4 @@ NextErrorAction_Tooltip=Next Error PreviousErrorAction_Tooltip=Previous Error\u0020 ShowErrorAction_Tooltip=Show Error In Editor WrapLinesAction_WrapLines=Wrap Lines +BringToTopOnBuild=Bring console to top when building diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java index 6bafb40db9a..4b6caa74dc0 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/BuildConsolePreferencePage.java @@ -35,7 +35,7 @@ import org.eclipse.ui.PlatformUI; public class BuildConsolePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { private static final String PREF_CLEAR_CONSOLE = "clearConsole"; //$NON-NLS-1$ - private static final String PREF_CONSOLE_ON_TOP = "consoleOnTop"; //$NON-NLS-1$ + public static final String PREF_CONSOLE_ON_TOP = "consoleOnTop"; //$NON-NLS-1$ private static final String PREF_AUTO_OPEN_CONSOLE = "autoOpenConsole"; //$NON-NLS-1$ public static final String PREF_BUILDCONSOLE_WRAP_LINES = "buildConsoleWrapLines"; //$NON-NLS-1$ /** diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java index b6f535dcaff..d309556f2db 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CDTSharedImages.java @@ -120,6 +120,8 @@ public class CDTSharedImages { public static final String IMG_OBJS_USER = "icons/obj16/person-me.gif"; //$NON-NLS-1$ /** @since 5.6 */ public static final String IMG_OBJS_WRAP_LINE = "icons/elcl16/wrap_lines.png"; //$NON-NLS-1$ + /** @since 7.1 */ + public static final String IMG_OBJS_BRING_CONSOLE_TO_TOP_ON_BUILD = "icons/elcl16/bring_console_to_top_on_build.png"; //$NON-NLS-1$ public static final String IMG_OBJS_CDT_TESTING = "icons/obj16/flask.png"; //$NON-NLS-1$ public static final String IMG_OBJS_NLS_NEVER_TRANSLATE = "icons/obj16/never_translate.gif"; //$NON-NLS-1$