|
|
|
|
|
|
|
|
import org.apache.fop.events.DefaultEventBroadcaster; |
|
|
import org.apache.fop.events.DefaultEventBroadcaster; |
|
|
import org.apache.fop.events.Event; |
|
|
import org.apache.fop.events.Event; |
|
|
import org.apache.fop.events.EventBroadcaster; |
|
|
import org.apache.fop.events.EventBroadcaster; |
|
|
import org.apache.fop.events.EventProducer; |
|
|
|
|
|
|
|
|
import org.apache.fop.events.EventListener; |
|
|
import org.apache.fop.events.FOPEventListenerProxy; |
|
|
import org.apache.fop.events.FOPEventListenerProxy; |
|
|
import org.apache.fop.events.LoggingEventListener; |
|
|
import org.apache.fop.events.LoggingEventListener; |
|
|
import org.apache.fop.fo.FOEventHandler; |
|
|
import org.apache.fop.fo.FOEventHandler; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private class FOPEventBroadcaster extends DefaultEventBroadcaster { |
|
|
private class FOPEventBroadcaster extends DefaultEventBroadcaster { |
|
|
|
|
|
|
|
|
private FOPEventListenerProxy rootListener; |
|
|
|
|
|
|
|
|
private EventListener rootListener; |
|
|
|
|
|
|
|
|
public FOPEventBroadcaster() { |
|
|
public FOPEventBroadcaster() { |
|
|
this.rootListener = new FOPEventListenerProxy( |
|
|
|
|
|
this.listeners, FOUserAgent.this); |
|
|
|
|
|
|
|
|
//Install a temporary event listener that catches the first event to |
|
|
|
|
|
//do some initialization. |
|
|
|
|
|
this.rootListener = new EventListener() { |
|
|
|
|
|
public void processEvent(Event event) { |
|
|
|
|
|
if (!listeners.hasEventListeners()) { |
|
|
|
|
|
//Backwards-compatibility: Make sure at least the LoggingEventListener is |
|
|
|
|
|
//plugged in so no events are just silently swallowed. |
|
|
|
|
|
addEventListener( |
|
|
|
|
|
new LoggingEventListener(LogFactory.getLog(FOUserAgent.class))); |
|
|
|
|
|
} |
|
|
|
|
|
//Replace with final event listener |
|
|
|
|
|
rootListener = new FOPEventListenerProxy( |
|
|
|
|
|
listeners, FOUserAgent.this); |
|
|
|
|
|
rootListener.processEvent(event); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** {@inheritDoc} */ |
|
|
/** {@inheritDoc} */ |
|
|
|
|
|
|
|
|
rootListener.processEvent(event); |
|
|
rootListener.processEvent(event); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** {@inheritDoc} */ |
|
|
|
|
|
protected EventProducer createProxyFor(Class clazz) { |
|
|
|
|
|
if (!this.listeners.hasEventListeners()) { |
|
|
|
|
|
//Backwards-compatibility: Make sure at least the LoggingEventListener is plugged |
|
|
|
|
|
//in so no events are just silently swallowed. |
|
|
|
|
|
addEventListener( |
|
|
|
|
|
new LoggingEventListener(LogFactory.getLog(FOUserAgent.class))); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
return super.createProxyFor(clazz); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |