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    }