package mit.mitid.ui ;

public class Mitid
extends mit.swing.ui.LabeledTextField
implements	mit.mitid.event.MitidRaiser
	,	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 getMitid() { return super.getText() ; }
	public void setMitid( String mitid ) { super.setText( mitid ) ; }

	private mit.mitid.ASSIGN assign = new mit.mitid.ASSIGN() ;

	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.comm.event.ResultEvent )
			{
				HandleResultEvent( ( mit.comm.event.ResultEvent ) e ) ;
			}
			else if( e instanceof mit.mitid.event.ClearEvent )
			{
				HandleClearEvent( ( mit.mitid.event.ClearEvent ) e ) ;
			}
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}

	private void HandleDocumentEvent( mit.swing.event.DocumentEvent e )
	{
		new mit.mitid.event.MitidEvent( this ).raise() ;
	}
	
	private void HandleResultEvent( mit.comm.event.ResultEvent e )
	{
		mit.comm.event.ResultRaiser r = ( mit.comm.event.ResultRaiser ) e.getSource() ;
		if( ( null != r.getResult() ) && r.getResult().startsWith( mit.mitid.PROTOCOL.ASSIGNED ) )
		{
			assign.deserialize( r.getResult() ) ;
			setMitid( assign.getMitid() ) ;
		}
	}
	
	private void HandleClearEvent( mit.mitid.event.ClearEvent e )
	{
		super.setText( "" ) ;
	}
	
	public void addNotify()
	{
		super.addNotify() ;
		try
		{
			super.setText( "" ) ;
			super.setLabel( "Mitid: " ) ;

			getListenerAdapter().addHandled( mit.swing.event.DocumentEvent.class ) ;
			getListenerAdapter().addHandled( mit.comm.event.ResultEvent.class ) ;
			getListenerAdapter().addHandled( mit.mitid.event.ClearEvent.class ) ;

			getEventControlAdapter().addContained( mit.swing.event.DocumentEvent.class ) ;
			getEventControlAdapter().addExcluded( mit.swing.event.DocumentEvent.class ) ;
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}
}