GROOVY-9101: Add context menus to Console's input & output areas (closes #918)
diff --git a/subprojects/groovy-console/src/main/groovy/groovy/ui/Console.groovy b/subprojects/groovy-console/src/main/groovy/groovy/ui/Console.groovy
index d18fc3f..1dfc15e 100644
--- a/subprojects/groovy-console/src/main/groovy/groovy/ui/Console.groovy
+++ b/subprojects/groovy-console/src/main/groovy/groovy/ui/Console.groovy
@@ -1269,7 +1269,7 @@
     }
 
     void selectAll(EventObject evt = null) {
-        invokeTextAction(evt, { source -> source.selectAll() })
+        invokeTextAction(evt, { source -> source.selectAll() }, copyFromComponent ?: inputEditor.textEditor)
     }
 
     void setRowNumAndColNum() {
diff --git a/subprojects/groovy-console/src/main/groovy/groovy/ui/ConsoleView.groovy b/subprojects/groovy-console/src/main/groovy/groovy/ui/ConsoleView.groovy
index 8463c3e..5a1ddb1 100644
--- a/subprojects/groovy-console/src/main/groovy/groovy/ui/ConsoleView.groovy
+++ b/subprojects/groovy-console/src/main/groovy/groovy/ui/ConsoleView.groovy
@@ -68,6 +68,24 @@
     build(statusBarClass)
 }
 
+inputEditor.textEditor.componentPopupMenu = popupMenu {
+    menuItem(cutAction)
+    menuItem(copyAction)
+    menuItem(pasteAction)
+    menuItem(selectAllAction)
+    separator()
+    menuItem(undoAction)
+    menuItem(redoAction)
+    separator()
+    menuItem(runAction)
+    menuItem(runSelectionAction)
+}
+
+outputArea.componentPopupMenu = popupMenu {
+    menuItem(copyAction)
+    menuItem(selectAllAction)
+    menuItem(clearOutputAction)
+}
 
 controller.promptStyle = promptStyle
 controller.commandStyle = commandStyle