Samskivert Timer: posts commands to a Controller on the awt thread, all the
manueverability of javax.swing.Timer. git-svn-id: https://samskivert.googlecode.com/svn/trunk@886 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// $Id: Timer.java,v 1.1 2002/11/05 01:47:32 ray Exp $
|
||||
|
||||
package com.samskivert.swing;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.event.ActionEvent;
|
||||
|
||||
/**
|
||||
* A timer that posts commands to a controller.
|
||||
*/
|
||||
public class Timer extends javax.swing.Timer
|
||||
{
|
||||
/**
|
||||
* Construct a samskivert timer.
|
||||
*
|
||||
* @param delay the delay between posts.
|
||||
* @param source the source component to use for finding the
|
||||
* appropriate controller.
|
||||
* @param command the command to post.
|
||||
*/
|
||||
public Timer (int delay, Component source, String command)
|
||||
{
|
||||
super(delay, Controller.DISPATCHER);
|
||||
|
||||
_event = new RepeatingActionEvent(source, command);
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
protected void fireActionPerformed (ActionEvent e)
|
||||
{
|
||||
_event.setWhen(e.getWhen());
|
||||
super.fireActionPerformed(_event);
|
||||
}
|
||||
|
||||
/**
|
||||
* We reuse this event each time so that we don't have to create a new one.
|
||||
*/
|
||||
protected static class RepeatingActionEvent extends ActionEvent
|
||||
{
|
||||
/**
|
||||
* Construct a repeating action event.
|
||||
*/
|
||||
public RepeatingActionEvent (Object src, String cmd)
|
||||
{
|
||||
super(src, 0, cmd);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the time at which this event happened. Note that this
|
||||
* is provided for convenience but should not be depended on
|
||||
* due to the repeating nature: the event could get re-fired
|
||||
* before your controller has dealt with it.
|
||||
*/
|
||||
public long getWhen ()
|
||||
{
|
||||
return _when;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the time at which this event happened.
|
||||
*/
|
||||
public void setWhen (long when)
|
||||
{
|
||||
_when = when;
|
||||
}
|
||||
|
||||
/** The latest time that we were fired. */
|
||||
protected long _when;
|
||||
}
|
||||
|
||||
/** The event we re-use to post the command. */
|
||||
protected RepeatingActionEvent _event;
|
||||
}
|
||||
Reference in New Issue
Block a user