src/Tools/Graphview/mutator_event.scala
author wenzelm
Sat, 03 Jan 2015 14:54:33 +0100
changeset 59243 21ef04bd4e17
parent 59240 e411afcfaa29
child 59442 9f45b95d3543
permissions -rw-r--r--
recovered tooltip from 6e77ddb1e3fb: non-null default is required as prerequisite;

/*  Title:      Tools/Graphview/mutator_event.scala
    Author:     Markus Kaiser, TU Muenchen
    Author:     Makarius

Events for dialog synchronization.
*/

package isabelle.graphview


import isabelle._

import scala.collection.mutable

import java.awt.Color


object Mutator_Event
{
  sealed abstract class Message
  case class Add(m: Mutator.Info) extends Message
  case class New_List(m: List[Mutator.Info]) extends Message

  type Receiver = PartialFunction[Message, Unit]

  class Bus
  {
    private val receivers = new mutable.ListBuffer[Receiver]

    def += (r: Receiver) { GUI_Thread.require {}; receivers += r }
    def -= (r: Receiver) { GUI_Thread.require {}; receivers -= r }
    def event(x: Message) { GUI_Thread.require {}; receivers.foreach(r => r(x)) }
  }
}