| author | wenzelm | 
| Sun, 18 Jan 2015 17:34:14 +0100 | |
| changeset 59392 | 02bacfc31446 | 
| parent 59240 | e411afcfaa29 | 
| child 59442 | 9f45b95d3543 | 
| 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: 
49565diff
changeset | 11 | import isabelle._ | 
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 12 | |
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 13 | import scala.collection.mutable | 
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 14 | |
| 49557 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 Markus Kaiser <markus.kaiser@in.tum.de> parents: diff
changeset | 15 | import java.awt.Color | 
| 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 Markus Kaiser <markus.kaiser@in.tum.de> parents: diff
changeset | 16 | |
| 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 Markus Kaiser <markus.kaiser@in.tum.de> parents: diff
changeset | 17 | |
| 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 Markus Kaiser <markus.kaiser@in.tum.de> parents: diff
changeset | 18 | object Mutator_Event | 
| 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 Markus Kaiser <markus.kaiser@in.tum.de> parents: diff
changeset | 19 | {
 | 
| 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 Markus Kaiser <markus.kaiser@in.tum.de> parents: diff
changeset | 20 | sealed abstract class Message | 
| 59221 | 21 | case class Add(m: Mutator.Info) extends Message | 
| 22 | case class New_List(m: List[Mutator.Info]) extends Message | |
| 49733 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 23 | |
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 24 | type Receiver = PartialFunction[Message, Unit] | 
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 25 | |
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 26 | class Bus | 
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 27 |   {
 | 
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 28 | private val receivers = new mutable.ListBuffer[Receiver] | 
| 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 29 | |
| 57612 
990ffb84489b
clarified module name: facilitate alternative GUI frameworks;
 wenzelm parents: 
56662diff
changeset | 30 |     def += (r: Receiver) { GUI_Thread.require {}; receivers += r }
 | 
| 
990ffb84489b
clarified module name: facilitate alternative GUI frameworks;
 wenzelm parents: 
56662diff
changeset | 31 |     def -= (r: Receiver) { GUI_Thread.require {}; receivers -= r }
 | 
| 
990ffb84489b
clarified module name: facilitate alternative GUI frameworks;
 wenzelm parents: 
56662diff
changeset | 32 |     def event(x: Message) { GUI_Thread.require {}; receivers.foreach(r => r(x)) }
 | 
| 49733 
38a68e6593be
prefer synchronous Mutator_Event.Bus on Swing_Thread;
 wenzelm parents: 
49565diff
changeset | 33 | } | 
| 49557 
61988f9df94d
added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
 Markus Kaiser <markus.kaiser@in.tum.de> parents: diff
changeset | 34 | } |