| author | wenzelm | 
| Sat, 12 Apr 2025 22:10:57 +0200 | |
| changeset 82496 | 0366d0139f15 | 
| parent 78616 | 9acd819db33a | 
| permissions | -rw-r--r-- | 
| 59202 | 1  | 
/* Title: Tools/Graphview/mutator_event.scala  | 
| 
49557
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
2  | 
Author: Markus Kaiser, TU Muenchen  | 
| 59240 | 3  | 
Author: Makarius  | 
| 
49557
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
4  | 
|
| 
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
5  | 
Events for dialog synchronization.  | 
| 
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
6  | 
*/  | 
| 
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
7  | 
|
| 
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
8  | 
package isabelle.graphview  | 
| 
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
9  | 
|
| 
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
10  | 
|
| 
49733
 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 
wenzelm 
parents: 
49565 
diff
changeset
 | 
11  | 
import isabelle._  | 
| 
 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 
wenzelm 
parents: 
49565 
diff
changeset
 | 
12  | 
|
| 
49557
 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 
Markus Kaiser <markus.kaiser@in.tum.de> 
parents:  
diff
changeset
 | 
13  | 
|
| 75393 | 14  | 
object Mutator_Event {
 | 
| 78616 | 15  | 
  enum Message {
 | 
16  | 
case Add(m: Mutator.Info) extends Message  | 
|
17  | 
case New_List(m: List[Mutator.Info]) extends Message  | 
|
18  | 
}  | 
|
| 
49733
 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 
wenzelm 
parents: 
49565 
diff
changeset
 | 
19  | 
|
| 78615 | 20  | 
type Receiver = Message => Unit  | 
| 
49733
 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 
wenzelm 
parents: 
49565 
diff
changeset
 | 
21  | 
|
| 75393 | 22  | 
  class Bus {
 | 
| 61590 | 23  | 
private val receivers = Synchronized[List[Receiver]](Nil)  | 
| 
49733
 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 
wenzelm 
parents: 
49565 
diff
changeset
 | 
24  | 
|
| 73340 | 25  | 
def += (r: Receiver): Unit = receivers.change(Library.insert(r))  | 
26  | 
def -= (r: Receiver): Unit = receivers.change(Library.remove(r))  | 
|
27  | 
def event(x: Message): Unit = receivers.value.reverse.foreach(r => r(x))  | 
|
| 
49733
 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 
wenzelm 
parents: 
49565 
diff
changeset
 | 
28  | 
}  | 
| 78615 | 29  | 
}  |