001        package com.croftsoft.apps.exemplar;
002         
003        import java.awt.event.*;
004    
005        import com.croftsoft.core.gui.controller.NilController;
006        import com.croftsoft.core.lang.NullArgumentException;
007        import com.croftsoft.core.lang.lifecycle.Startable;
008    import com.croftsoft.core.util.slot.Slot;
009    
010        /***********************************************************************
011        * Exemplar controller.
012        * 
013        * Modifies the Model based on user input.
014        * 
015        * @version
016        *   $Id: ExemplarController.java,v 1.6 2008/09/20 05:01:49 croft Exp $
017        * @since
018        *   2005-03-16
019        * @author
020        *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
021        ***********************************************************************/
022    
023        public final class  ExemplarController
024          extends NilController
025          implements Startable
026        ////////////////////////////////////////////////////////////////////////
027        ////////////////////////////////////////////////////////////////////////
028        {
029           
030        private final Slot<ExemplarMessage>  requestSlot;
031         
032        //
033         
034        private boolean  mouseClicked;
035         
036        ////////////////////////////////////////////////////////////////////////
037        // constructor method
038        ////////////////////////////////////////////////////////////////////////
039         
040        public  ExemplarController ( final Slot<ExemplarMessage>  requestSlot )
041        ////////////////////////////////////////////////////////////////////////
042        {
043          NullArgumentException.checkArgs ( this.requestSlot = requestSlot );
044        }
045         
046        ////////////////////////////////////////////////////////////////////////
047        // listener methods
048        ////////////////////////////////////////////////////////////////////////     
049         
050        @Override
051        public void  mouseClicked ( final MouseEvent  mouseEvent )
052        ////////////////////////////////////////////////////////////////////////
053        {
054          mouseClicked = true;
055        }
056         
057        ////////////////////////////////////////////////////////////////////////
058        // lifecycle methods
059        ////////////////////////////////////////////////////////////////////////
060         
061        public void  start ( )
062        ////////////////////////////////////////////////////////////////////////
063        {
064          mouseClicked = false;
065        }
066         
067        @Override
068        public void  update ( )
069        ////////////////////////////////////////////////////////////////////////
070        {
071          if ( mouseClicked )
072          {
073            mouseClicked = !requestSlot.offer (
074              ExemplarMessage.INCREMENT_CLICK_COUNT_INSTANCE );
075          }
076        }
077         
078        ////////////////////////////////////////////////////////////////////////
079        ////////////////////////////////////////////////////////////////////////
080        }