/* ** j###t ########## #### #### ** j###t ########## #### #### ** j###T "###L J###" ** ######P' ########## ######### ** ######k, ########## T######T ** ####~###L #### ** #### q###L ########## .##### ** #### \###L ########## #####" */ package key; import key.collections.NumberedCollection; import key.primitive.DateTime; import java.util.Enumeration; import java.util.StringTokenizer; import java.io.*; /** * A messageBox is a type of specialised container for * containing letters */ public class MessageBox extends MaterialContainer { private static final long serialVersionUID = -1619021870941708968L; public static final TableParagraph.Column[] columns = { new TableParagraph.Column( "[##]", 4 ), new TableParagraph.Column( "From", Player.MAX_NAME ), new TableParagraph.Column( "Subject", Letter.MAX_SUBJECT ) }; public MessageBox() { contained = new NumberedCollection(); setConstraint( Type.LETTER ); } public MessageBox( int newLimit ) { this(); setLimit( newLimit ); } public int countUnread() { int c = 0; for( Enumeration e = elements(); e.hasMoreElements(); ) { Letter t = (Letter) e.nextElement(); if( t.readCount == 0 ) c++; } return( c ); } public void read( Player p, StringTokenizer args, InteractiveConnection ic, Flags flags, Atom th ) { if( args.hasMoreTokens() ) { String fa = args.nextToken(); int number = 0; try { number = Integer.parseInt( fa ); } catch( NumberFormatException e ) { ic.send( "'" + fa + "' is not a number" ); return; } if( number < 1 ) { ic.send( "You want to read *which* number?" ); } else { Letter t = (Letter) getElementAt( number - 1 ); if( t == null ) ic.send( "Can't find that message..." ); else { t.read( p, args, ic, flags, t ); } } return; } if( count() == 0 ) { ic.send( "There aren't any messages in " + getName() ); return; } TableParagraph.Generator tp = new TableParagraph.Generator( columns ); int i = 1; for( Enumeration e = elements(); e.hasMoreElements(); ) { Letter t = (Letter) e.nextElement(); String rowContents[] = new String[ columns.length ]; rowContents[0] = Integer.toString( i ); rowContents[1] = t.from; rowContents[2] = t.description; tp.appendRow( rowContents ); i++; } // decrement i to account for the initial 1 i--; tp.setFooter( Integer.toString( i ) + " message" + ((i==1)?"":"s") ); ic.send( tp.getParagraph() ); } }