package mit.swing.event ;

public class DocumentAdapter
extends mit.event.Adapter
implements	javax.swing.event.DocumentListener
	,	mit.swing.event.DocumentRaiser
{
	private mit.event.RaiserAdapter raiserAdapter = null ;
	public mit.event.RaiserAdapter getRaiserAdapter() { return this.raiserAdapter ; }
	public void setRaiserAdapter( mit.event.RaiserAdapter raiserAdapter ) { this.raiserAdapter = raiserAdapter ; }

	private javax.swing.event.DocumentEvent documentEvent = null ;
	public javax.swing.event.DocumentEvent getDocumentEvent() { return this.documentEvent ; }
	public void setDocumentEvent( javax.swing.event.DocumentEvent documentEvent ) { this.documentEvent = documentEvent ; }

	public DocumentAdapter( Object owner )
	{
		super( owner ) ;
		setRaiserAdapter( new mit.event.RaiserAdapter( owner ) ) ;
		if( owner instanceof javax.swing.text.JTextComponent )
		{
			( ( javax.swing.text.JTextComponent ) owner ).getDocument().addDocumentListener( this ) ;
		}
		else if( owner instanceof javax.swing.text.View )
		{
			( ( javax.swing.text.View ) owner ).getDocument().addDocumentListener( this ) ;
		}
		else if( owner instanceof javax.swing.text.Element )
		{
			( ( javax.swing.text.Element ) owner ).getDocument().addDocumentListener( this ) ;
		}
		else if( owner instanceof javax.swing.text.AbstractDocument.AbstractElement )
		{
			( ( javax.swing.text.AbstractDocument.AbstractElement ) owner ).getDocument().addDocumentListener( this ) ;
		}
	}

	public void changedUpdate( javax.swing.event.DocumentEvent e ) { setEvent( e ) ; }
	public void insertUpdate( javax.swing.event.DocumentEvent e ) { setEvent( e ) ; }
	public void removeUpdate( javax.swing.event.DocumentEvent e ) { setEvent( e ) ; }

	private void setEvent( javax.swing.event.DocumentEvent e )
	{
		try
		{
			if( null != getRaiserAdapter().getOwner() )
			{
				javax.swing.text.JTextComponent tc = ( javax.swing.text.JTextComponent ) getRaiserAdapter().getOwner() ;
				if( e.getDocument().equals( tc.getDocument() ) )
				{
					setDocumentEvent( e ) ;
					new mit.swing.event.DocumentEvent( this ).raise() ;
				}
			}
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}

}