package com.dragome.forms.bindings.client.command;
/**
* Created by IntelliJ IDEA.
* User: andrew
* Date: Apr 1, 2010
* Time: 4:11:04 PM
* To change this template use File | Settings | File Templates.
*/
public class EventSupport
{
private EventsImpl alwaysEvents;
private EventsImpl onNextCallEvents;
public Events onNextCall()
{
if (onNextCallEvents == null)
{
onNextCallEvents= new EventsImpl();
}
return onNextCallEvents;
}
public Events always()
{
if (alwaysEvents == null)
{
alwaysEvents= new EventsImpl();
}
return alwaysEvents;
}
public Trigger prepareEvents()
{
Trigger trigger= new Trigger(alwaysEvents, onNextCallEvents);
// our one time events need to be cleared...
onNextCallEvents= null;
return trigger;
}
public class Trigger
{
EventsImpl[] events;
public Trigger(EventsImpl... events)
{
this.events= events;
}
public void fireStarted()
{
for (EventsImpl event : events)
{
if (event != null)
{
event.fireStart();
}
}
}
public void fireFinished()
{
for (EventsImpl event : events)
{
if (event != null)
{
event.fireFinish();
}
}
}
public LifeCycleCallback asLifeCycleCallback()
{
return new LifeCycleCallback()
{
public void onStart()
{
fireStarted();
}
public void onFinish()
{
fireFinished();
}
};
}
}
}