src/Pure/General/event_bus.scala
changeset 29191 de56edf88514
parent 29190 89217ccfd130
child 29200 787ba47201c7
equal deleted inserted replaced
29190:89217ccfd130 29191:de56edf88514
     4 Generic event bus.
     4 Generic event bus.
     5 */
     5 */
     6 
     6 
     7 package isabelle
     7 package isabelle
     8 
     8 
     9 import scala.collection.jcl.LinkedList
     9 import scala.collection.mutable.ListBuffer
    10 
    10 
    11 
    11 
    12 class EventBus[Event] {
    12 class EventBus[Event] {
    13   type Handler = Event => Unit
    13   type Handler = Event => Unit
    14   private val handlers = new LinkedList[Handler]
    14   private val handlers = new ListBuffer[Handler]
    15 
    15 
    16   def += (h: Handler) = synchronized { handlers -= h; handlers += h }
    16   def += (h: Handler) = synchronized { handlers += h }
       
    17   def + (h: Handler) = { this += h; this }
       
    18 
    17   def -= (h: Handler) = synchronized { handlers -= h }
    19   def -= (h: Handler) = synchronized { handlers -= h }
       
    20   def - (h: Handler) = { this -= h; this }
    18 
    21 
    19   def event(e: Event) = synchronized { for(h <- handlers) h(e) }
    22   def event(e: Event) = synchronized { handlers.toList } foreach (h => h(e))
    20 }
    23 }