Skip to content

Commit 231c661

Browse files
committed
GROOVY-11895: Allow arguments to be set in groovyConsole
1 parent 2a7d1e9 commit 231c661

5 files changed

Lines changed: 40 additions & 1 deletion

File tree

subprojects/groovy-console/src/main/groovy/groovy/console/ui/Console.groovy

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,10 @@ class Console implements CaretListener, HyperlinkListener, ComponentListener, Fo
237237
boolean stackOverFlowError = false
238238
Action interruptAction
239239

240+
// Script arguments
241+
String scriptArgs = ''
242+
Action setScriptArgsAction
243+
240244
Action selectWordAction
241245
Action selectPreviousWordAction
242246

@@ -1200,7 +1204,7 @@ class Console implements CaretListener, HyperlinkListener, ComponentListener, Fo
12001204
@Override
12011205
Object run(String src) {
12021206
String name = ((File) Console.this.scriptFile)?.name ?: (DEFAULT_SCRIPT_NAME_START + Console.this.scriptNameCounter++)
1203-
Console.this.shell.run(src, name, [])
1207+
Console.this.shell.run(src, name, Console.this.scriptArgsArray)
12041208
}
12051209

12061210
@Override
@@ -1345,6 +1349,30 @@ class Console implements CaretListener, HyperlinkListener, ComponentListener, Fo
13451349
binding.variables._outputTransforms = OutputTransforms.loadOutputTransforms()
13461350
}
13471351

1352+
void setScriptArgs(EventObject evt = null) {
1353+
def result = JOptionPane.showInputDialog(frame, 'Enter script arguments (space-separated):',
1354+
'Set Script Arguments', JOptionPane.PLAIN_MESSAGE, null, null, scriptArgs)
1355+
if (result != null) {
1356+
scriptArgs = result.toString()
1357+
updateSetScriptArgsAction()
1358+
}
1359+
}
1360+
1361+
private void updateSetScriptArgsAction() {
1362+
if (setScriptArgsAction) {
1363+
if (scriptArgs) {
1364+
def display = scriptArgs.length() > 30 ? scriptArgs[0..29] + '...' : scriptArgs
1365+
setScriptArgsAction.putValue(Action.NAME, "Set Script Arguments [${display}]" as String)
1366+
} else {
1367+
setScriptArgsAction.putValue(Action.NAME, 'Set Script Arguments')
1368+
}
1369+
}
1370+
}
1371+
1372+
private String[] getScriptArgsArray() {
1373+
scriptArgs ? scriptArgs.split(/\s+/) : new String[0]
1374+
}
1375+
13481376
private void saveInputAreaContentHash() {
13491377
inputAreaContentHash = inputArea.getText().hashCode()
13501378
}

subprojects/groovy-console/src/main/groovy/groovy/console/ui/ConsoleActions.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,12 @@ runJavaSelectionAction = action(
235235
closure: controller.&runSelectedJava
236236
)
237237

238+
setScriptArgsAction = action(
239+
name: 'Set Script Arguments',
240+
closure: controller.&setScriptArgs,
241+
mnemonic: 'G',
242+
)
243+
238244
addClasspathJar = action(
239245
name: 'Add Jar(s) to ClassPath',
240246
closure: controller.&addClasspathJar,

subprojects/groovy-console/src/main/groovy/groovy/console/ui/ConsoleView.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ controller.hideOutputWindowAction2 = hideOutputWindowAction2
128128
controller.hideOutputWindowAction3 = hideOutputWindowAction3
129129
controller.hideOutputWindowAction4 = hideOutputWindowAction4
130130
controller.interruptAction = interruptAction
131+
controller.setScriptArgsAction = setScriptArgsAction
131132
controller.origDividerSize = origDividerSize
132133
controller.splitPane = splitPane
133134
controller.blank = blank

subprojects/groovy-console/src/main/groovy/groovy/console/ui/view/BasicMenuBar.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ menuBar {
8888
menuItem(compileAction)
8989
menuItem(compileJavaAction)
9090
separator()
91+
menuItem(setScriptArgsAction)
92+
separator()
9193
menuItem(addClasspathJar)
9294
menuItem(addClasspathDir)
9395
menuItem(listClasspath)

subprojects/groovy-console/src/main/groovy/groovy/console/ui/view/MacOSXMenuBar.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,8 @@ menuBar {
214214
menuItem(compileAction, icon:null)
215215
menuItem(compileJavaAction, icon:null)
216216
separator()
217+
menuItem(setScriptArgsAction, icon:null)
218+
separator()
217219
menuItem(addClasspathJar)
218220
menuItem(addClasspathDir)
219221
menuItem(listClasspath)

0 commit comments

Comments
 (0)