src/Tools/Graphview/mutator_event.scala
changeset 59442 9f45b95d3543
parent 59240 e411afcfaa29
child 61590 94ab348eaab2
equal deleted inserted replaced
59441:ab2c3597f1d3 59442:9f45b95d3543
     8 package isabelle.graphview
     8 package isabelle.graphview
     9 
     9 
    10 
    10 
    11 import isabelle._
    11 import isabelle._
    12 
    12 
    13 import scala.collection.mutable
       
    14 
       
    15 import java.awt.Color
       
    16 
       
    17 
    13 
    18 object Mutator_Event
    14 object Mutator_Event
    19 {
    15 {
    20   sealed abstract class Message
    16   sealed abstract class Message
    21   case class Add(m: Mutator.Info) extends Message
    17   case class Add(m: Mutator.Info) extends Message
    23 
    19 
    24   type Receiver = PartialFunction[Message, Unit]
    20   type Receiver = PartialFunction[Message, Unit]
    25 
    21 
    26   class Bus
    22   class Bus
    27   {
    23   {
    28     private val receivers = new mutable.ListBuffer[Receiver]
    24     private val receivers = Synchronized(List.empty[Receiver])
    29 
    25 
    30     def += (r: Receiver) { GUI_Thread.require {}; receivers += r }
    26     def += (r: Receiver) { receivers.change(Library.insert(r)) }
    31     def -= (r: Receiver) { GUI_Thread.require {}; receivers -= r }
    27     def -= (r: Receiver) { receivers.change(Library.remove(r)) }
    32     def event(x: Message) { GUI_Thread.require {}; receivers.foreach(r => r(x)) }
    28     def event(x: Message) { receivers.value.reverse.foreach(r => r(x)) }
    33   }
    29   }
    34 }
    30 }