Skip to content

jamie-threerings/java-signals

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a Java reinterpretation of Robert Penner's as3-signals. It keeps the simple event declaration and dispatching, while adding a dash of type-safety afforded by Java's generics.

Usage

Using a signal is a 3 step process. First, create a signal on the class that will be firing events:

public class Dispatcher { /** Dispatches the old value and the new value after it changes. */ public final Signal2<String, String> onChanged = Signals.newSignal2(); } 

Then, add listeners to that signal as appropriate:

public class InterestedParty { public void connectToDispatcher (Dispatcher d) { d.onChanged.add(new Listener1<String>() { public void apply (String oldValue) { System.out.println("Dispatcher changed from " + oldValue); }}); } } 

or

d.onChanged.add(new Listener0() { public void apply () { System.out.println("I'll only be called for one dispatch!"); } }).once(); 

if the listener only wants to receive the next dispatch.

Finally, dispatch that signal when the event occurs:

onChanged.dispatch("oldValue", "newValue); 

That'll call apply on all the added listeners.

If a listener is no longer interested in a signal, it can be removed from the signal, or disconnect can be called from the Connection returned when adding the signal. Adding, removing, and dispatching can be done in any order from a single thread, but the behavior is undefined for modifying the signal from multiple threads simultaneously.

Getting

The 0.1 release of signals is available as a jar, or you can use the http://ooo-maven.googlecode.com/hg/repository repository in Maven with a dependency on com.threerings:signals:0.1.

About

Simple, type-safe event dispatching for Java a la as3-signals

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%