001
002
003 package lrs.visitor;
004
005 import lrs.*;
006 import counter.*;
007 import javax.swing.*;
008
009 public class LRSPrintN implements IAlgo, ICounterAlgo
010 {
011 JTextArea textArea;
012 /**
013 * @param textArea
014 * @SBGen Constructor assigns textArea
015 */
016 public LRSPrintN(JTextArea textArea)
017 {
018 // SBgen: Assign variable
019 this.textArea = textArea;
020 }
021
022 public Object emptyCase(LRStruct host, Object... param)
023 {
024 return(null); // Nothing to print here.
025 }
026
027 public Object nonEmptyCase(LRStruct host, Object... param)
028 {
029 return( ((ICounter) param[0]).execute(this, host));
030 }
031
032 /**
033 * @param host
034 * @param param
035 */
036 public Object zeroCase(ICounter host, Object... param)
037 {
038 return(null);
039 }
040
041 /**
042 * @param host
043 * @param param
044 */
045 public Object nonZeroCase(ICounter host, Object... param)
046 {
047 // appends the integer value of the data as a new line onto the TextArea
048 // textArea.append("\t"+((Integer)((LRStruct) param).getFirst()).toString() +'\n');
049 textArea.append(((LRStruct) param[0]).getFirst().toString() +'\n');
050 // System.out.println("PRINT: "+((Integer)((LRStruct) param[0]).getFirst()).toString());
051 // recurse on the rest of the list
052 return (((LRStruct) param[0]).getRest()).execute(this,host.decrement());
053 }
054 }
055