001 package com.croftsoft.core.util.loop; 002 003 import java.awt.EventQueue; 004 005 import com.croftsoft.core.lang.lifecycle.Updatable; 006 import com.croftsoft.core.lang.lifecycle.UpdateRunner; 007 008 /*********************************************************************** 009 * A Loopable that updates Updatables via the EventQueue. 010 * 011 * @version 012 * $Id: EventQueueUpdateLoop.java,v 1.3 2008/09/20 05:01:27 croft Exp $ 013 * @since 014 * 2006-01-03 015 * @author 016 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 017 ***********************************************************************/ 018 019 public final class EventQueueUpdateLoop 020 implements Loopable 021 //////////////////////////////////////////////////////////////////////// 022 //////////////////////////////////////////////////////////////////////// 023 { 024 025 private final Runnable updateRunner; 026 027 //////////////////////////////////////////////////////////////////////// 028 //////////////////////////////////////////////////////////////////////// 029 030 public EventQueueUpdateLoop ( final Updatable... updatables ) 031 //////////////////////////////////////////////////////////////////////// 032 { 033 updateRunner = new UpdateRunner ( updatables ); 034 } 035 036 //////////////////////////////////////////////////////////////////////// 037 //////////////////////////////////////////////////////////////////////// 038 039 public boolean loop ( ) 040 //////////////////////////////////////////////////////////////////////// 041 { 042 try 043 { 044 EventQueue.invokeAndWait ( updateRunner ); 045 046 return true; 047 } 048 catch ( InterruptedException ex ) 049 { 050 // ignore 051 } 052 catch ( Exception ex ) 053 { 054 ex.printStackTrace ( ); 055 } 056 057 return false; 058 } 059 060 //////////////////////////////////////////////////////////////////////// 061 //////////////////////////////////////////////////////////////////////// 062 }