package roboguice.event.eventListener.factory; import roboguice.event.EventListener; import roboguice.event.EventThread; import roboguice.event.eventListener.AsynchronousEventListenerDecorator; import roboguice.event.eventListener.UIThreadEventListenerDecorator; import com.google.inject.Inject; import com.google.inject.Provider; import android.os.Handler; /** * @author John Ericksen */ public class EventListenerThreadingDecorator { @Inject protected Provider<Handler> handlerProvider; public <T> EventListener<T> decorate(EventThread threadType, EventListener<T> eventListener){ switch (threadType){ case UI: return new UIThreadEventListenerDecorator<T>(eventListener, handlerProvider.get() ); case BACKGROUND: return new AsynchronousEventListenerDecorator<T>(eventListener); default: return eventListener; } } }