1/*  Title:      Tools/jEdit/src/syslog_dockable.scala
2    Author:     Makarius
3
4Dockable window for syslog.
5*/
6
7package isabelle.jedit
8
9
10import isabelle._
11import isabelle.jedit_base.Dockable
12
13import scala.swing.{TextArea, ScrollPane}
14
15import org.gjt.sp.jedit.View
16
17
18class Syslog_Dockable(view: View, position: String) extends Dockable(view, position)
19{
20  /* GUI components */
21
22  private val syslog = new TextArea()
23
24  private def syslog_delay = GUI_Thread.delay_first(PIDE.options.seconds("editor_update_delay"))
25  {
26    val text = PIDE.session.syslog_content()
27    if (text != syslog.text) syslog.text = text
28  }
29
30  set_content(new ScrollPane(syslog))
31
32
33  /* main */
34
35  private val main =
36    Session.Consumer[Prover.Output](getClass.getName) { case _ => syslog_delay.invoke() }
37
38  override def init()
39  {
40    PIDE.session.syslog_messages += main
41    syslog_delay.invoke()
42  }
43
44  override def exit()
45  {
46    PIDE.session.syslog_messages -= main
47  }
48}
49