001 package org.codehaus.groovy.sandbox.ui; 002 003 import java.io.BufferedReader; 004 import java.io.IOException; 005 import java.io.InputStreamReader; 006 import java.io.InputStream; 007 import java.io.PrintStream; 008 009 /** 010 * Pure Java prompt using just System.in. 011 */ 012 public class JavaPrompt implements Prompt 013 { 014 private String prompt; 015 private BufferedReader input; 016 private final PrintStream out; 017 private final PrintStream err; 018 019 public JavaPrompt(InputStream in, PrintStream out, PrintStream err) 020 { 021 this.out = out; 022 this.err = err; 023 this.input = new BufferedReader(new InputStreamReader(in)); 024 } 025 026 public JavaPrompt() 027 { 028 this(System.in, System.out, System.err); 029 } 030 031 public String readLine() throws IOException 032 { 033 out.print(prompt); 034 out.flush(); 035 return input.readLine(); 036 } 037 038 public String getPrompt() 039 { 040 return prompt; 041 } 042 043 public void setPrompt(String prompt) 044 { 045 this.prompt = prompt; 046 } 047 048 public void setCompleter(Completer completer) 049 { 050 // completer not supported 051 } 052 053 public void close() 054 { 055 try 056 { 057 input.close(); 058 } 059 catch (IOException e) 060 { 061 e.printStackTrace(err); 062 } 063 } 064 }