# HG changeset patch # User sundar # Date 1440506770 -19800 # Node ID 4577d801c522390f9c5dd39c9eb7f657920138cf # Parent fa839eaa06b044ca36533a1e2eead2380de180c7 8134397: Features that require AWT, swing should handle headless mode properly Reviewed-by: hannesw, attila diff -r fa839eaa06b0 -r 4577d801c522 src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditObject.java --- a/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditObject.java Tue Aug 25 14:47:42 2015 +0530 +++ b/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/EditObject.java Tue Aug 25 18:16:10 2015 +0530 @@ -86,7 +86,7 @@ @Override public void setMember(final String name, final Object value) { if (name.equals("editor")) { - this.editor = JSType.toString(value); + this.editor = value != null && value != UNDEFINED? JSType.toString(value) : ""; } } @@ -115,8 +115,10 @@ final SaveHandler saveHandler = new SaveHandler(initText); if (editor != null && !editor.isEmpty()) { ExternalEditor.edit(editor, errorHandler, initText, saveHandler, console); + } else if (! Main.HEADLESS) { + EditPad.edit(errorHandler, initText, saveHandler); } else { - EditPad.edit(errorHandler, initText, saveHandler); + errorHandler.accept(Main.getMessage("no.editor")); } return UNDEFINED; } diff -r fa839eaa06b0 -r 4577d801c522 src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Main.java --- a/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Main.java Tue Aug 25 14:47:42 2015 +0530 +++ b/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/Main.java Tue Aug 25 18:16:10 2015 +0530 @@ -25,6 +25,7 @@ package jdk.nashorn.tools.jjs; +import java.awt.GraphicsEnvironment; import java.io.BufferedReader; import java.io.File; import java.io.InputStream; @@ -50,6 +51,7 @@ private Main() {} static final boolean DEBUG = Boolean.getBoolean("nashorn.jjs.debug"); + static final boolean HEADLESS = GraphicsEnvironment.isHeadless(); // file where history is persisted. private static final File HIST_FILE = new File(new File(System.getProperty("user.home")), ".jjs.history"); @@ -202,6 +204,10 @@ return SUCCESS; } + static String getMessage(final String id) { + return bundle.getString(id); + } + private void evalImpl(final Context context, final Global global, final String source, final PrintWriter err, final boolean doe) { try { diff -r fa839eaa06b0 -r 4577d801c522 src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/NashornCompleter.java --- a/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/NashornCompleter.java Tue Aug 25 14:47:42 2015 +0530 +++ b/src/jdk.scripting.nashorn.shell/share/classes/jdk/nashorn/tools/jjs/NashornCompleter.java Tue Aug 25 18:16:10 2015 +0530 @@ -254,6 +254,11 @@ // read file name from the user using by showing a swing file chooser diablog private static String readFileName(final PrintWriter err) { + // if running on AWT Headless mode, don't attempt swing dialog box! + if (Main.HEADLESS) { + return null; + } + final FutureTask fileChooserTask = new FutureTask(() -> { // show a file chooser dialog box final JFileChooser chooser = new JFileChooser(); diff -r fa839eaa06b0 -r 4577d801c522 src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/resources/Shell.properties --- a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/resources/Shell.properties Tue Aug 25 14:47:42 2015 +0530 +++ b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/tools/resources/Shell.properties Tue Aug 25 18:16:10 2015 +0530 @@ -31,3 +31,4 @@ shell.prompt2=...> +no.editor=AWT Headless mode set and no external editor is configured!