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 }