src/Tools/Graphview/mutator_event.scala
author wenzelm
Wed, 29 May 2024 16:06:07 +0200
changeset 80211 2ec1b11f1f93
parent 78616 9acd819db33a
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
59202
711c2446dc9d clarified source location;
wenzelm
parents: 57612
diff changeset
     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
e411afcfaa29 tuned headers;
wenzelm
parents: 59221
diff changeset
     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
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73340
diff changeset
    14
object Mutator_Event {
78616
9acd819db33a clarified signature: prefer enum types;
wenzelm
parents: 78615
diff changeset
    15
  enum Message {
9acd819db33a clarified signature: prefer enum types;
wenzelm
parents: 78615
diff changeset
    16
    case Add(m: Mutator.Info) extends Message
9acd819db33a clarified signature: prefer enum types;
wenzelm
parents: 78615
diff changeset
    17
    case New_List(m: List[Mutator.Info]) extends Message
9acd819db33a clarified signature: prefer enum types;
wenzelm
parents: 78615
diff changeset
    18
  }
49733
38a68e6593be prefer synchronous Mutator_Event.Bus on Swing_Thread;
wenzelm
parents: 49565
diff changeset
    19
78615
abdf38ee314a proper type, following Bus.event;
wenzelm
parents: 75393
diff changeset
    20
  type Receiver = Message => Unit
49733
38a68e6593be prefer synchronous Mutator_Event.Bus on Swing_Thread;
wenzelm
parents: 49565
diff changeset
    21
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73340
diff changeset
    22
  class Bus {
61590
wenzelm
parents: 59442
diff changeset
    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
0ffcad1f6130 tuned --- fewer warnings;
wenzelm
parents: 61590
diff changeset
    25
    def += (r: Receiver): Unit = receivers.change(Library.insert(r))
0ffcad1f6130 tuned --- fewer warnings;
wenzelm
parents: 61590
diff changeset
    26
    def -= (r: Receiver): Unit = receivers.change(Library.remove(r))
0ffcad1f6130 tuned --- fewer warnings;
wenzelm
parents: 61590
diff changeset
    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
abdf38ee314a proper type, following Bus.event;
wenzelm
parents: 75393
diff changeset
    29
}