package mit.rmi.ui ;

public class Host
extends mit.swing.ui.LabeledTextField
implements	mit.rmi.event.HostRaiser
	,	mit.event.Listener
{
	private mit.event.RaiserAdapter raiserAdapter = new mit.event.RaiserAdapter( this ) ;
	public mit.event.RaiserAdapter getRaiserAdapter() { return this.raiserAdapter ; }
	public void setRaiserAdapter( mit.event.RaiserAdapter raiserAdapter ) { this.raiserAdapter = raiserAdapter ; }

	private mit.event.ListenerAdapter listenerAdapter = new mit.event.ListenerAdapter( this ) ;
	public mit.event.ListenerAdapter getListenerAdapter() { return this.listenerAdapter ; }
	public void setListenerAdapter( mit.event.ListenerAdapter listenerAdapter ) { this.listenerAdapter = listenerAdapter ; }

	public String getHost() { return super.getText() ; }
	public void setHost( String host ) { super.setText( host ) ; }

	public void eventRaised( mit.event.Event e )
	{
		try
		{
			if( e instanceof mit.swing.event.DocumentEvent )
			{
				HandleDocumentEvent( ( mit.swing.event.DocumentEvent ) e ) ;
			}
			else if( e instanceof mit.util.event.ClearEvent )
			{
				HandleClearEvent( ( mit.util.event.ClearEvent ) e ) ;
			}
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}

	private void HandleDocumentEvent( mit.swing.event.DocumentEvent e )
	{
		new mit.rmi.event.HostEvent( this ).raise() ;
	}
	
	private void HandleClearEvent( mit.util.event.ClearEvent e )
	{
		super.setText( "" ) ;
	}
	
	public void addNotify()
	{
		super.addNotify() ;
		try
		{
			super.setText( "" ) ;
			super.setLabel( "Host: " ) ;

			getListenerAdapter().addHandled( mit.swing.event.DocumentEvent.class ) ;
			getListenerAdapter().addHandled( mit.util.event.ClearEvent.class ) ;

			getEventControlAdapter().addContained( mit.swing.event.DocumentEvent.class ) ;
			getEventControlAdapter().addExcluded( mit.swing.event.DocumentEvent.class ) ;
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}
}