src/Tools/Graphview/src/mutator_event.scala
changeset 49733 38a68e6593be
parent 49565 ea4308b7ef0f
child 56662 f373fb77e0a4
equal deleted inserted replaced
49732:ad362eec19c3 49733:38a68e6593be
     5 */
     5 */
     6 
     6 
     7 package isabelle.graphview
     7 package isabelle.graphview
     8 
     8 
     9 
     9 
       
    10 import isabelle._
       
    11 
       
    12 import scala.collection.mutable
       
    13 
    10 import java.awt.Color
    14 import java.awt.Color
    11 
    15 
    12 
    16 
    13 object Mutator_Event
    17 object Mutator_Event
    14 {
    18 {
    15   type Mutator_Markup = (Boolean, Color, Mutator)
    19   type Mutator_Markup = (Boolean, Color, Mutator)
    16   
    20 
    17   sealed abstract class Message
    21   sealed abstract class Message
    18   case class Add(m: Mutator_Markup) extends Message
    22   case class Add(m: Mutator_Markup) extends Message
    19   case class NewList(m: List[Mutator_Markup]) extends Message
    23   case class NewList(m: List[Mutator_Markup]) extends Message
       
    24 
       
    25   type Receiver = PartialFunction[Message, Unit]
       
    26 
       
    27   class Bus
       
    28   {
       
    29     private val receivers = new mutable.ListBuffer[Receiver]
       
    30 
       
    31     def += (r: Receiver) { Swing_Thread.require(); receivers += r }
       
    32     def -= (r: Receiver) { Swing_Thread.require(); receivers -= r }
       
    33     def event(x: Message) { Swing_Thread.require(); receivers.foreach(r => r(x)) }
       
    34   }
    20 }
    35 }