equal
deleted
inserted
replaced
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 } |