package mit.rmi.ui ;

public class Port
extends mit.swing.ui.LabeledTextField
implements	mit.rmi.event.PortRaiser
	,	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 Integer getPort() { try { return new Integer( super.getText() ) ; } catch( Exception ex ) { return null ; } }
	public void setPort( Integer port ) { try { super.setText( port.toString() ) ; } catch( Exception ex ) { ; } }

	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.PortEvent( this ).raise() ;
	}
	
	private void HandleClearEvent( mit.util.event.ClearEvent e )
	{
		super.setText( "" ) ;
	}
	
	public void addNotify()
	{
		super.addNotify() ;
		try
		{
			super.setText( "" ) ;
			super.setLabel( "Port: " ) ;

			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() ;
		}
	}
}