1   // joi/10/juno/JunoTerminal.java                         
2   //                                                            
3   //                                                            
4   // Copyright 2003 Bill Campbell and Ethan Bolker                         
5                                                               
6   /**
7    * A Command line interface terminal for Juno.
8    *
9    * @version 10
10   */
11  
12  public class JunoTerminal
13      implements InputInterface, OutputInterface
14  {
15      private Terminal terminal; // the delegate terminal
16      private boolean  echo;     // are we echoing input?
17  
18      /**
19       * Construct a JunoTerminal
20       *
21       * Allows for input echo, when, for example, input is redirected
22       * from a file.
23       *
24       * @param echo whether or not input should be echoed.
25       */
26  
27      public JunoTerminal( boolean echo )
28      {
29          this.echo = echo;
30          terminal = new Terminal( echo );
31      }
32  
33      // Implement InputInterface
34  
35     /**
36      * Read a line (terminated by a newline).
37      *
38      * @param promptString output string to prompt for input
39      * @return the string (without the newline character)
40      */
41  
42      public String readLine( String promptString )
43      {
44          return terminal.readLine( promptString );
45      }
46  
47      // Implement OutputInterface
48  
49     /**
50       * Write a String followed by a newline
51       * to console output location.
52       *
53       * @param str - the string to write
54       */
55  
56      public void println(String str )
57      {
58          terminal.println( str );
59      }
60  
61      /**
62       * Write a String followed by a newline
63       * to console error output location.
64       *
65       * @param str - the String to write
66       */
67  
68      public void errPrintln(String str )
69      {
70          terminal.errPrintln( str );
71      }
72  
73      /**
74       * Query what kind of console this is.
75       *
76       * @return true if and only if echoing input.
77       */
78  
79      public boolean isEchoInput() 
80      {
81          return echo;
82      }
83     
84      /**
85       * Query what kind of console this is.
86       *
87       * @return false, since it is not a GUI
88       */
89  
90      public boolean isGUI() 
91      {
92          return false;
93      }
94      
95      /**
96       * Query what kind of console this is.
97       *
98       * @return false, since it is not remote.
99       */
100 
101     public boolean isRemote() 
102     {
103         return false;
104     }
105 }
106