001 package stringtransformers; 002 003 import cs101.io.connection.*; 004 import cs101.io.Console; 005 import java.awt.*; 006 import java.awt.event.*; 007 008 /** */ 009 public class TransformerVisualizer extends SimpleFrame 010 { 011 012 private TextField inputText, outputText; 013 014 public TransformerVisualizer ( StringTransformer transformer ) 015 { 016 super( new Panel() ); 017 018 this.setTitle( transformer.toString() ); 019 020 this.inputText = new TextField(40); // 40 = # columns 021 this.inputText.setEditable( false ); 022 023 this.outputText = new TextField(40); 024 this.outputText.setEditable( false ); 025 026 Panel p = (Panel) super.c; 027 p.add( this.inputText ); 028 p.add( this.outputText ); 029 030 MouseListener ml = TVConnectManager.getListener( transformer ); 031 this.addMouseListener( ml ); 032 this.inputText.addMouseListener( ml ); 033 this.outputText.addMouseListener( ml ); 034 035 Console.println( "Created TV" ); 036 037 } 038 039 protected InputConnection interceptInput( final InputConnection inCon ) 040 { 041 // the code below is lovely but blocks....oops! 042 // really want just if input, readinput and hold it.... 043 // /** field is next String to be read from this object */ 044 // private String nextStr = inCon.readInput(); 045 // /** initializer */ 046 // { 047 // TransformerVisualizer.this.displayInput( this.nextStr ); 048 // } 049 // /** produce Strings one at a time */ 050 // public String readInput() 051 // { 052 // String inStr = this.nextStr; 053 // TransformerVisualizer.this.displayInput( inStr ); 054 // this.nextStr = inCon.readInput(); 055 // return inStr; 056 // }}; 057 058 if (inCon == null) 059 { 060 System.err.println( this + " Uh oh, no inputconnection!"); 061 } 062 063 return new InputConnection() { 064 public String readInput() 065 { 066 String inStr = inCon.readInput(); 067 TransformerVisualizer.this.displayInput( inStr ); 068 return inStr; 069 }}; 070 } 071 072 protected OutputConnection interceptOutput( final OutputConnection outCon ) 073 { 074 return new OutputConnection() { 075 public void writeOutput( String outStr ) 076 { 077 TransformerVisualizer.this.displayOutput( outStr ); 078 outCon.writeOutput( outStr ); 079 }}; 080 } 081 082 private void displayInput( String input ) 083 { 084 this.inputText.setText( input ); 085 Console.println("TV: displaying input " + input ); 086 } 087 088 private void displayOutput( String output ) 089 { 090 this.outputText.setText( output ); 091 Console.println("TV: displaying output " + output ); 092 } 093 } 094