/*
** j###t ########## #### ####
** j###t ########## #### ####
** j###T "###L J###"
** ######P' ########## #########
** ######k, ########## T######T
** ####~###L ####
** #### q###L ########## .#####
** #### \###L ########## #####"
**
** $Id$
**
** Class History
**
** Date Name Description
** ---------|------------|-----------------------------------------------
** 24Aug98 subtle start of recorded history
**
*/
package key.commands;
import java.util.Enumeration;
import java.io.IOException;
import java.util.StringTokenizer;
import key.*;
public class Commands extends Command
{
private static final long serialVersionUID = 5990785328128283650L;
public Commands()
{
setKey( "commands" );
usage = "";
}
public void run( Player p, StringTokenizer args, String fullLine, CategoryCommand caller, InteractiveConnection ic, Flags flags ) throws IOException
{
Atom context = p.getContext();
int cc = 0;
for( Enumeration e = p.getCategoryCommandsMatching( args ); e.hasMoreElements(); )
{
Object[] o = (Object[]) e.nextElement();
CommandList cl;
String t;
if( o[0] != null )
cl = ((CommandContainer) o[0]).getCommandList();
else
cl = (CommandList) o[1];
t = ((CommandList)o[1]).getTitle();
if( cl != o[1] )
t += "/" + cl.getTitle();
cc += oneCommandList( cl, ic, t );
}
if( cc == 0 )
{
ic.send( "No matching commands." );
}
else
{
StringBuffer sb = new StringBuffer();
sb.append( cc );
sb.append( " command" );
if( cc != 1 )
sb.append( 's' );
sb.append( " listed" );
ic.send( new HeadingParagraph( sb.toString(), HeadingParagraph.RIGHT ) );
}
}
public int oneCommandList( CommandList cList, InteractiveConnection ic, String prefix )
{
if( cList == null )
return 0;
int c = cList.count();
if( c > 0 )
{
StringBuffer sb = new StringBuffer();
sb.append( "^h[" );
sb.append( prefix );
sb.append( " - " );
sb.append( c );
sb.append( " command" );
if( c != 1 )
sb.append( 's' );
sb.append( "]^-" );
ic.send( new HeadingParagraph( sb.toString(), HeadingParagraph.LEFT ) );
String[] commands = new String[ c ];
int upto = 0;
for( Enumeration e = cList.elements(); e.hasMoreElements(); )
commands[upto++] = ((Command)e.nextElement()).getName();
TextParagraph tp = new TextParagraph( TextParagraph.LEFT, Grammar.commaSeperate( commands ), 4, 0, 0, 0 );
ic.send( tp );
}
return( c );
}
}