001         package com.croftsoft.core.gui.controller;
002         
003         import com.croftsoft.core.lang.NullArgumentException;
004         
005         /*********************************************************************
006         * Relays user input events and updates to a delegate Controller.
007         * 
008         * @version
009         *   $Date: 2008/04/19 21:27:13 $
010         * @since
011         *   2005-08-08
012         * @author
013         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
014         *********************************************************************/
015    
016         public class  RelayController
017           extends NilController
018         //////////////////////////////////////////////////////////////////////
019         //////////////////////////////////////////////////////////////////////
020         {
021           
022         private Controller  delegateController;
023           
024         //////////////////////////////////////////////////////////////////////
025         //////////////////////////////////////////////////////////////////////
026         
027         public  RelayController ( Controller  delegateController )
028         //////////////////////////////////////////////////////////////////////
029         {
030           setDelegateController ( delegateController );
031         }
032           
033         public  RelayController ( )
034         //////////////////////////////////////////////////////////////////////
035         {
036           this ( NilController.INSTANCE );
037         }
038           
039         //////////////////////////////////////////////////////////////////////
040         //////////////////////////////////////////////////////////////////////
041         
042         public Controller  getDelegateController ( )
043         //////////////////////////////////////////////////////////////////////
044         {
045           return delegateController;
046         }
047         
048         /*********************************************************************
049         * @return
050         * 
051         *   The old delegate Controller.
052         *********************************************************************/
053         public Controller  setDelegateController (
054           Controller  delegateController )
055         //////////////////////////////////////////////////////////////////////
056         {
057           final Controller  oldDelegateController = this.delegateController;
058           
059           NullArgumentException.check (
060             this.delegateController = delegateController );
061           
062           return oldDelegateController;
063         }
064         
065         //////////////////////////////////////////////////////////////////////
066         //////////////////////////////////////////////////////////////////////
067         
068         public void  update ( )
069         //////////////////////////////////////////////////////////////////////
070         {
071           delegateController.update ( );
072         }
073    
074         //////////////////////////////////////////////////////////////////////
075         //////////////////////////////////////////////////////////////////////
076         }