Gridarta Editor
net.sf.gridarta.utils.DelayedChangeManager Class Reference
+ Collaboration diagram for net.sf.gridarta.utils.DelayedChangeManager:

Classes

interface  State
 
class  TimeoutTimerTask
 

Public Member Functions

void change ()
 
 DelayedChangeManager (final int initialDelay, final int notificationDelay, @NotNull final DelayedChangeListener delayedChangeListener)
 
void finish ()
 

Private Attributes

final DelayedChangeListener delayedChangeListener
 
final State idle
 
final int initialDelay
 
final int notificationDelay
 
final State pending
 
State state = idle
 
final Timer timer = new Timer()
 
final State wait
 

Detailed Description

Helper for reducing the number of change events: calls to change() will be forwarded to DelayedChangeListener#change(). Forwarded calls are dropped if they would happen very quickly.

Author
Andreas Kirschbaum

Definition at line 32 of file DelayedChangeManager.java.

Constructor & Destructor Documentation

◆ DelayedChangeManager()

net.sf.gridarta.utils.DelayedChangeManager.DelayedChangeManager ( final int  initialDelay,
final int  notificationDelay,
@NotNull final DelayedChangeListener  delayedChangeListener 
)

Creates a new instance.

Parameters
initialDelaythe initial delay for a series of events in milliseconds
notificationDelaythe delay for following events in a series of events; in milliseconds
delayedChangeListenerthe delayed change listener to forward events to

Definition at line 199 of file DelayedChangeManager.java.

References net.sf.gridarta.utils.DelayedChangeManager.delayedChangeListener, net.sf.gridarta.utils.DelayedChangeManager.initialDelay, and net.sf.gridarta.utils.DelayedChangeManager.notificationDelay.

Member Function Documentation

◆ change()

void net.sf.gridarta.utils.DelayedChangeManager.change ( )

Delivers a change event to the associated DelayedChangeListener.

Definition at line 208 of file DelayedChangeManager.java.

References net.sf.gridarta.utils.DelayedChangeManager.State.change(), and net.sf.gridarta.utils.DelayedChangeManager.state.

+ Here is the call graph for this function:

◆ finish()

void net.sf.gridarta.utils.DelayedChangeManager.finish ( )

Finishes a series of change events. Calling this function is optional: if it is called, a pending change event is immediately forwarded; otherwise when the notification timeout has expired.

Definition at line 218 of file DelayedChangeManager.java.

References net.sf.gridarta.utils.DelayedChangeManager.State.finish(), and net.sf.gridarta.utils.DelayedChangeManager.state.

+ Here is the call graph for this function:

Member Data Documentation

◆ delayedChangeListener

final DelayedChangeListener net.sf.gridarta.utils.DelayedChangeManager.delayedChangeListener
private

The DelayedChangeListener events are forwarded to.

Definition at line 51 of file DelayedChangeManager.java.

Referenced by net.sf.gridarta.utils.DelayedChangeManager.DelayedChangeManager().

◆ idle

final State net.sf.gridarta.utils.DelayedChangeManager.idle
private
Initial value:
= new State() {
@NotNull
@Override
public State change() {
timer.schedule(new TimeoutTimerTask(), initialDelay);
return pending;
}
@NotNull
@Override
public State finish() {
return idle;
}
@NotNull
@Override
public State timeout() {
assert false;
return idle;
}
}

The state "idle" of the FSM.

Definition at line 104 of file DelayedChangeManager.java.

◆ initialDelay

final int net.sf.gridarta.utils.DelayedChangeManager.initialDelay
private

The delay in millisecond the first forwarded event is delayed. This allows combining the first few events of a long series of events without delaying the delivery for a long time (notificationDelay).

Definition at line 39 of file DelayedChangeManager.java.

Referenced by net.sf.gridarta.utils.DelayedChangeManager.DelayedChangeManager().

◆ notificationDelay

final int net.sf.gridarta.utils.DelayedChangeManager.notificationDelay
private

The interval in milliseconds events are forwarded during a long series of events.

Definition at line 45 of file DelayedChangeManager.java.

Referenced by net.sf.gridarta.utils.DelayedChangeManager.DelayedChangeManager().

◆ pending

final State net.sf.gridarta.utils.DelayedChangeManager.pending
private
Initial value:
= new State() {
@NotNull
@Override
public State change() {
return pending;
}
@NotNull
@Override
public State finish() {
return wait;
}
@NotNull
@Override
public State timeout() {
timer.schedule(new TimeoutTimerTask(), notificationDelay);
return wait;
}
}

The state "pending" of the FSM.

Definition at line 132 of file DelayedChangeManager.java.

◆ state

State net.sf.gridarta.utils.DelayedChangeManager.state = idle
private

◆ timer

final Timer net.sf.gridarta.utils.DelayedChangeManager.timer = new Timer()
private

The Timer for delaying events.

Definition at line 57 of file DelayedChangeManager.java.

◆ wait

final State net.sf.gridarta.utils.DelayedChangeManager.wait
private
Initial value:
= new State() {
@NotNull
@Override
public State change() {
return pending;
}
@NotNull
@Override
public State finish() {
return wait;
}
@NotNull
@Override
public State timeout() {
return idle;
}
}

The state "wait" of the FSM.

Definition at line 161 of file DelayedChangeManager.java.


The documentation for this class was generated from the following file:
net.sf.gridarta.utils.DelayedChangeManager.notificationDelay
final int notificationDelay
Definition: DelayedChangeManager.java:45
net.sf.gridarta.utils.DelayedChangeManager.initialDelay
final int initialDelay
Definition: DelayedChangeManager.java:39
net.sf.gridarta.utils.DelayedChangeListener.change
void change()
net.sf.gridarta.utils.DelayedChangeManager.delayedChangeListener
final DelayedChangeListener delayedChangeListener
Definition: DelayedChangeManager.java:51
net.sf.gridarta.utils.DelayedChangeManager.idle
final State idle
Definition: DelayedChangeManager.java:104
net.sf.gridarta.utils.DelayedChangeManager.pending
final State pending
Definition: DelayedChangeManager.java:132
net.sf.gridarta.utils.DelayedChangeManager.timer
final Timer timer
Definition: DelayedChangeManager.java:57
net.sf.gridarta.utils.DelayedChangeManager.change
void change()
Definition: DelayedChangeManager.java:208
net.sf.gridarta.utils.DelayedChangeManager.finish
void finish()
Definition: DelayedChangeManager.java:218
net.sf.gridarta.utils.DelayedChangeManager.wait
final State wait
Definition: DelayedChangeManager.java:161