package mit.roles.ui.authorization ;

public class Panel
extends mit.util.ui.CriteriaPanel
implements	mit.event.Listener
{
	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 ; }

	private mit.roles.ui.authorization.DoFunction doFunction = new mit.roles.ui.authorization.DoFunction() ;
	private mit.roles.ui.authorization.Grant grant = new mit.roles.ui.authorization.Grant() ;
	private mit.roles.ui.authorization.EffectiveDate effectiveDate = new mit.roles.ui.authorization.EffectiveDate() ;
	private mit.roles.ui.authorization.ExpirationDate expirationDate = new mit.roles.ui.authorization.ExpirationDate() ;

	private javax.swing.JComponent[] fields = null ;
	public javax.swing.JComponent[] getFields() { return this.fields ; }
	public void setFields( javax.swing.JComponent[] fields ) { this.fields = fields ; }

	public void eventRaised( mit.event.Event e )
	{
		try
		{
			if( e instanceof mit.comm.event.DisplayResultEvent )
			{
				HandleDisplayResultEvent( ( mit.comm.event.DisplayResultEvent ) e ) ;
			}
		}
		catch( Throwable ex )
		{
			ex.printStackTrace() ;
		}
	}

	private synchronized void HandleDisplayResultEvent( mit.comm.event.DisplayResultEvent e )
	{
		mit.comm.event.DisplayResultRaiser r = ( mit.comm.event.DisplayResultRaiser ) e.getSource() ;
		java.util.Vector fieldsV = r.getCriteriaComponents() ;
		if( null != fieldsV )
		{
			javax.swing.JComponent[] fields = new javax.swing.JComponent[ fieldsV.size() ] ;
			int i = 0 ;
			java.util.Enumeration enum = fieldsV.elements() ;
			while( enum.hasMoreElements() )
			{
				fields[ i ] = ( javax.swing.JComponent ) enum.nextElement() ;
				i ++ ;
			}
			setFields( fields ) ;
			setCriteria() ;
		}
	}

	public String getCriteriaLabel()
	{
		return "Authorization Criteria" ;
	}

	public java.awt.Dimension getMinimumSize()
	{
		return new java.awt.Dimension( 300 , 100 ) ;
	}

	public java.awt.Dimension getPreferredSize()
	{
		try
		{
			java.awt.Dimension size = getMinimumSize() ;
			javax.swing.JComponent[] fields = getFields() ;
			for( int i = 0 ; fields.length != i ; i ++ )
			{
				size.width = Math.max( size.width , 2 * fields[ i ].getPreferredSize().width ) ;
				size.height += fields[ i ].getPreferredSize().height ;
			}
			return size ;
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ; 
		}
		return getMinimumSize() ;
	}

	public void addNotify()
	{
		try
		{
			javax.swing.JComponent[] fields = new javax.swing.JComponent[ 5 ] ;
			fields[ 0 ] = doFunction ;
			fields[ 1 ] = grant ;
			fields[ 3 ] = effectiveDate ;
			fields[ 4 ] = expirationDate ;
			setFields( fields ) ;

			super.addNotify() ;

			getListenerAdapter().addHandled( mit.comm.event.DisplayResultEvent.class ) ;
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}

}