key0-96/
key0-96/doc/key/
key0-96/doc/key/credits/
key0-96/doc/key/developers/
key0-96/doc/key/developers/resources/
key0-96/setup/caves/
key0-96/setup/help/
key0-96/setup/ruins/
key0-96/src/
key0-96/src/commands/
key0-96/src/events/
key0-96/src/hack/
key0-96/src/sql/
key0-96/src/swing/
key0-96/src/talker/forest/
key0-96/src/talker/objects/
key0-96/src/terminals/
/*
**               j###t  ########## ####   ####
**              j###t   ########## ####   ####
**             j###T               "###L J###"
**          ######P'    ##########  #########
**          ######k,    ##########   T######T
**          ####~###L   ####
**          #### q###L  ##########   .#####
**          ####  \###L ##########   #####"
**
**  $Id$
**
**  Class History
**
**  Date        Name         Description
**  ---------|------------|-----------------------------------------------
**  19Aug98     subtle       start of recorded history
**
*/

package key;

import java.io.*;
import java.util.Stack;
import java.util.Enumeration;

/**
 */
public abstract class DumbIC
extends InteractiveConnection
{
	transient PrintStream ps;
	
	/**
	  *  The constructor must take a socket as its sole
	  *  argument
	  *
	  * @param s The socket that the connection is on
	 */
	public DumbIC()
	{
		setKey( "console" );
	}
	
	protected void setPrintStream( PrintStream p )
	{
		ps = p;
	}
	
	public void stopBeingTemporary()
	{
		//  do nothing, we always want to be temporary
	}
	
	public String getSiteName()
	{
		return( "dumb terminal" );
	}
	
	public final boolean newbiesAllowed()
	{
		return( true );
	}
	
	public final void printStackTrace( Throwable t )
	{
		t.printStackTrace();
	}
	
	public String getFullSiteName()
	{
		return( getSiteName() );
	}
	
	public void discard()
	{
	}

	public synchronized void close()
	{
		super.close();
		
		if( ps != null )
			ps = null;
	}
	
	/**
	  * return true if the socket is still open
	 */
	public boolean isConnected()
	{
		if( ps != null )
			return true;
		else
			return false;
	}
	
	public void sendLine()
	{
		if( ps != null )
			ps.println( "----------------------------------------------------------------------------" );
	}
	
	public void blankLine()
	{
		if( ps != null )
			ps.println();
	}
	
	public void send( String message )
	{
		if( ps != null )
			ps.println( message );
	}

		//  failure is always output
	public void sendFailure( String message )
	{
		System.err.println( message );
	}
	
	public void sendRaw( String message )
	{
		if( ps != null )
			ps.println( message );
	}
	
	public void send( char qual, String message )
	{
		if( ps != null )
			ps.println( message );
	}
	
	public void send( Paragraph p )
	{
		send( p, false );
	}
	
	public void send( Paragraph p, boolean j )
	{
		if( ps != null )
		{
			if( p instanceof TextParagraph )
				ps.println( ((TextParagraph)p).getText() );
			else if( p instanceof HeadingParagraph )
				ps.println( "--- " + ((HeadingParagraph)p).getText() + " ---" );
			else if( p instanceof LineParagraph )
				sendLine();
			else if( p instanceof BlankLineParagraph )
				blankLine();
			else if( p instanceof MultiParagraph )
			{
				for( Enumeration e = ((MultiParagraph)p).getParagraphs(); e.hasMoreElements(); )
				{
					Paragraph o = (Paragraph) e.nextElement();
					send( o, j );
				}
			}
			else if( p instanceof ColumnParagraph )
			{
				for( Enumeration e = ((ColumnParagraph)p).elements(); e.hasMoreElements(); )
				{
					ps.println( (String) e.nextElement() );
				}
			}
			else if( p instanceof TableParagraph )
			{
				ps.println( "--- table paragraph type sent ---" );
			}
			else
				ps.println( "--- unknown paragraph type sent ---" );
		}
	}
	
	public boolean isPaging()
		{ return( false ); }
	
	public void sendSubliminal( String message, int duration, int frequency )
	{
	}
}