diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/clear_co.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/clear_co.png new file mode 100644 index 00000000000..d5b5764bcbb Binary files /dev/null and b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/clear_co.png differ diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/copy_edit_co.gif b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/copy_edit_co.gif new file mode 100644 index 00000000000..98626a819b9 Binary files /dev/null and b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/copy_edit_co.gif differ diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/lock_co.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/lock_co.png new file mode 100644 index 00000000000..6f061961726 Binary files /dev/null and b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/dlcl16/lock_co.png differ diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/clear_co.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/clear_co.png new file mode 100644 index 00000000000..559471b8921 Binary files /dev/null and b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/clear_co.png differ diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/copy_edit_co.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/copy_edit_co.png new file mode 100644 index 00000000000..41efe451edb Binary files /dev/null and b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/copy_edit_co.png differ diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/lock_co.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/lock_co.png new file mode 100644 index 00000000000..df111d48fb3 Binary files /dev/null and b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/elcl16/lock_co.png differ diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/paste_edit.png b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/paste_edit.png new file mode 100644 index 00000000000..dd078d45684 Binary files /dev/null and b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/icons/full/obj16/paste_edit.png differ diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/ConsoleMessages.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/ConsoleMessages.java index ec30d8ec3e3..a3d71971002 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/ConsoleMessages.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/ConsoleMessages.java @@ -31,6 +31,21 @@ public class ConsoleMessages extends NLS { public static String ConsoleTerminateLaunchAction_name; public static String ConsoleTerminateLaunchAction_description; + public static String ConsoleClearAction_name; + public static String ConsoleClearAction_description; + + public static String ConsoleScrollLockAction_name; + public static String ConsoleScrollLockAction_description; + + public static String ConsoleCopyAction_name; + public static String ConsoleCopyAction_description; + + public static String ConsolePasteAction_name; + public static String ConsolePasteAction_description; + + public static String ConsoleSelectAllAction_name; + public static String ConsoleSelectAllAction_description; + static { // initialize resource bundle NLS.initializeMessages(ConsoleMessages.class.getName(), ConsoleMessages.class); diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/ConsoleMessages.properties b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/ConsoleMessages.properties index 9c313936d0b..d89c2e189db 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/ConsoleMessages.properties +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/ConsoleMessages.properties @@ -21,5 +21,20 @@ ConsoleMessages_save_info_io_error_desc=Error during save console content. Task ConsoleInvertColorsAction_name=Invert Colors ConsoleInvertColorsAction_description=Invert the colors for the gdb consoles -ConsoleTerminateLaunchAction_name=Terminate Launch +ConsoleTerminateLaunchAction_name=Termi&nate Launch ConsoleTerminateLaunchAction_description=Terminate the launch associated to this GDB console + +ConsoleClearAction_name=Clea&r +ConsoleClearAction_description=Clear console contents + +ConsoleScrollLockAction_name=&Scroll Lock +ConsoleScrollLockAction_description=Lock the scrolling of the associated console + +ConsoleCopyAction_name=&Copy +ConsoleCopyAction_description=Copy selection to clip-board + +ConsolePasteAction_name=&Paste +ConsolePasteAction_description=Paste contents of clip-board to console + +ConsoleSelectAllAction_name=Select &All +ConsoleSelectAllAction_description=Select All available text in the associated console \ No newline at end of file diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleClearAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleClearAction.java new file mode 100644 index 00000000000..e6cd6417baf --- /dev/null +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleClearAction.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.cdt.dsf.gdb.internal.ui.console; + +import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin; +import org.eclipse.jface.action.Action; +import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; + +/** + * Action to clear the contents of the associated GDB terminal + */ +public class GdbConsoleClearAction extends Action { + + private final ITerminalViewControl fTerminalCtrl; + public GdbConsoleClearAction(ITerminalViewControl terminalControl) { + fTerminalCtrl = terminalControl; + if (fTerminalCtrl == null || fTerminalCtrl.isDisposed()) { + setEnabled(false); + } + + setText(ConsoleMessages.ConsoleClearAction_name); + setToolTipText(ConsoleMessages.ConsoleClearAction_description); + setImageDescriptor(GdbUIPlugin.getImageDescriptor(IConsoleImagesConst.IMG_CONSOLE_CLEAR_ACTIVE_COLOR)); + setDisabledImageDescriptor(GdbUIPlugin.getImageDescriptor(IConsoleImagesConst.IMG_CONSOLE_CLEAR_DISABLED_COLOR)); + } + + @Override + public void run() { + if (fTerminalCtrl != null) { + fTerminalCtrl.clearTerminal(); + } + } +} diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleCopyAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleCopyAction.java new file mode 100644 index 00000000000..33a494a6aaf --- /dev/null +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleCopyAction.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.cdt.dsf.gdb.internal.ui.console; + +import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin; +import org.eclipse.jface.action.Action; +import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; + +/** + * Action to copy the selected text from the associated terminal + */ +public class GdbConsoleCopyAction extends Action { + + private final ITerminalViewControl fTerminalCtrl; + + public GdbConsoleCopyAction(ITerminalViewControl terminalControl) { + fTerminalCtrl = terminalControl; + if (fTerminalCtrl == null || fTerminalCtrl.isDisposed()) { + setEnabled(false); + } + setText(ConsoleMessages.ConsoleCopyAction_name); + setToolTipText(ConsoleMessages.ConsoleCopyAction_description); + setImageDescriptor(GdbUIPlugin.getImageDescriptor(IConsoleImagesConst.IMG_CONSOLE_COPY_ACTIVE_COLOR)); + setDisabledImageDescriptor(GdbUIPlugin.getImageDescriptor(IConsoleImagesConst.IMG_CONSOLE_COPY_DISABLED_COLOR)); + } + + @Override + public void run() { + if (fTerminalCtrl != null) { + fTerminalCtrl.copy(); + } + } +} diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsolePasteAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsolePasteAction.java new file mode 100644 index 00000000000..d98bed26cc0 --- /dev/null +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsolePasteAction.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.cdt.dsf.gdb.internal.ui.console; + +import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin; +import org.eclipse.jface.action.Action; +import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; + +/** + * Action to paste from the clip-board to the associated terminal + */ +public class GdbConsolePasteAction extends Action { + + private final ITerminalViewControl fTerminalCtrl; + public GdbConsolePasteAction(ITerminalViewControl terminalControl) { + fTerminalCtrl = terminalControl; + if (fTerminalCtrl == null || fTerminalCtrl.isDisposed()) { + setEnabled(false); + } + setText(ConsoleMessages.ConsolePasteAction_name); + setToolTipText(ConsoleMessages.ConsolePasteAction_description); + setImageDescriptor(GdbUIPlugin.getImageDescriptor(IConsoleImagesConst.IMG_CONSOLE_PASTE_ACTIVE_COLOR)); + setDisabledImageDescriptor(GdbUIPlugin.getImageDescriptor(IConsoleImagesConst.IMG_CONSOLE_PASTE_ACTIVE_COLOR)); + } + + @Override + public void run() { + if (fTerminalCtrl != null) { + fTerminalCtrl.paste(); + } + } +} \ No newline at end of file diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleScrollLockAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleScrollLockAction.java new file mode 100644 index 00000000000..06bda5911ac --- /dev/null +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleScrollLockAction.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.cdt.dsf.gdb.internal.ui.console; + +import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; + +/** + * Action to lock the scrolling of the associated terminal + */ +public class GdbConsoleScrollLockAction extends Action { + + private final ITerminalViewControl fTerminalCtrl; + private Boolean fScrollLocked = false; + + public GdbConsoleScrollLockAction(ITerminalViewControl terminalControl) { + super(ConsoleMessages.ConsoleScrollLockAction_name, IAction.AS_CHECK_BOX); + + fTerminalCtrl = terminalControl; + if (fTerminalCtrl == null || fTerminalCtrl.isDisposed()) { + setEnabled(false); + } else { + fTerminalCtrl.setScrollLock(fScrollLocked); + } + + setToolTipText(ConsoleMessages.ConsoleScrollLockAction_description); + setImageDescriptor(GdbUIPlugin.getImageDescriptor(IConsoleImagesConst.IMG_CONSOLE_SCROLL_LOCK_ACTIVE_COLOR)); + setDisabledImageDescriptor(GdbUIPlugin.getImageDescriptor(IConsoleImagesConst.IMG_CONSOLE_SCROLL_LOCK_DISABLED_COLOR)); + } + + @Override + public void run() { + if (fTerminalCtrl != null) { + fScrollLocked = !fScrollLocked; + fTerminalCtrl.setScrollLock(fScrollLocked); + } + } +} diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleSelectAllAction.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleSelectAllAction.java new file mode 100644 index 00000000000..f385561fa6c --- /dev/null +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbConsoleSelectAllAction.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.cdt.dsf.gdb.internal.ui.console; + +import org.eclipse.jface.action.Action; +import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; + +/** + * Action to Select-All the available text from the associated terminal + */ +public class GdbConsoleSelectAllAction extends Action { + + private final ITerminalViewControl fTerminalCtrl; + + public GdbConsoleSelectAllAction(ITerminalViewControl terminalControl) { + fTerminalCtrl = terminalControl; + if (fTerminalCtrl == null || fTerminalCtrl.isDisposed()) { + setEnabled(false); + } + setText(ConsoleMessages.ConsoleSelectAllAction_name); + setToolTipText(ConsoleMessages.ConsoleSelectAllAction_description); + } + + @Override + public void run() { + if (fTerminalCtrl != null) { + fTerminalCtrl.selectAll(); + } + } +} diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbFullCliConsolePage.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbFullCliConsolePage.java index 99439de3532..5d8261e9cc7 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbFullCliConsolePage.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/GdbFullCliConsolePage.java @@ -31,6 +31,7 @@ import org.eclipse.debug.ui.contexts.IDebugContextListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; @@ -65,6 +66,11 @@ public class GdbFullCliConsolePage extends Page implements IDebugContextListener /** The control for the terminal widget embedded in the console */ private ITerminalViewControl fTerminalControl; + private GdbConsoleClearAction fClearAction; + private GdbConsoleCopyAction fCopyAction; + private GdbConsolePasteAction fPasteAction; + private GdbConsoleScrollLockAction fScrollLockAction; + private GdbConsoleSelectAllAction fSelectAllAction; public GdbFullCliConsolePage(GdbFullCliConsole gdbConsole, IDebuggerConsoleView view) { fConsole = gdbConsole; @@ -140,13 +146,31 @@ public class GdbFullCliConsolePage extends Page implements IDebugContextListener protected void createActions() { fInvertColorsAction = new GdbConsoleInvertColorsAction(); fTerminateLaunchAction = new GdbConsoleTerminateLaunchAction(fLaunch); - } + fClearAction = new GdbConsoleClearAction(fTerminalControl); + fCopyAction = new GdbConsoleCopyAction(fTerminalControl); + fPasteAction = new GdbConsolePasteAction(fTerminalControl); + fScrollLockAction = new GdbConsoleScrollLockAction(fTerminalControl); + fSelectAllAction = new GdbConsoleSelectAllAction(fTerminalControl); + } protected void configureToolBar(IToolBarManager mgr) { mgr.insertBefore(DebuggerConsoleView.DROP_DOWN_ACTION_ID, fTerminateLaunchAction); + mgr.insertBefore(DebuggerConsoleView.DROP_DOWN_ACTION_ID, fClearAction); + mgr.insertBefore(DebuggerConsoleView.DROP_DOWN_ACTION_ID, fScrollLockAction); } protected void contextMenuAboutToShow(IMenuManager menuManager) { + menuManager.add(fCopyAction); + menuManager.add(fPasteAction); + menuManager.add(fSelectAllAction); + menuManager.add(new Separator()); + + menuManager.add(fClearAction); + menuManager.add(new Separator()); + + menuManager.add(fScrollLockAction); + menuManager.add(new Separator()); + menuManager.add(fTerminateLaunchAction); menuManager.add(fInvertColorsAction); } diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/IConsoleImagesConst.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/IConsoleImagesConst.java index d33f9539210..c9e8853c274 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/IConsoleImagesConst.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/console/IConsoleImagesConst.java @@ -18,4 +18,15 @@ public interface IConsoleImagesConst { public static final String IMG_CONSOLE_INVERT_COLORS = "icons/full/obj16/console_invert_colors.gif"; //$NON-NLS-1$ public static final String IMG_CONSOLE_TERMINATE_ACTIVE_COLOR = "icons/full/elcl16/stop.gif"; //$NON-NLS-1$ public static final String IMG_CONSOLE_TERMINATE_DISABLED_COLOR = "icons/full/dlcl16/stop.gif"; //$NON-NLS-1$ + + public static final String IMG_CONSOLE_CLEAR_ACTIVE_COLOR = "icons/full/elcl16/clear_co.png"; //$NON-NLS-1$ + public static final String IMG_CONSOLE_CLEAR_DISABLED_COLOR = "icons/full/dlcl16/clear_co.png"; //$NON-NLS-1$ + + public static final String IMG_CONSOLE_COPY_ACTIVE_COLOR = "icons/full/elcl16/copy_edit_co.png"; //$NON-NLS-1$ + public static final String IMG_CONSOLE_COPY_DISABLED_COLOR = "icons/full/dlcl16/copy_edit_co.gif"; //$NON-NLS-1$ + + public static final String IMG_CONSOLE_PASTE_ACTIVE_COLOR = "icons/full/obj16/paste_edit.png"; //$NON-NLS-1$ + + public static final String IMG_CONSOLE_SCROLL_LOCK_ACTIVE_COLOR = "icons/full/elcl16/lock_co.png"; //$NON-NLS-1$ + public static final String IMG_CONSOLE_SCROLL_LOCK_DISABLED_COLOR = "icons/full/dlcl16/lock_co.png"; //$NON-NLS-1$ }