src/Tools/jEdit/src/syslog_dockable.scala
author wenzelm
Thu, 03 Apr 2014 13:46:18 +0200
changeset 56385 76acce58aeab
parent 55618 995162143ef4
child 56662 f373fb77e0a4
permissions -rw-r--r--
more general prover operations;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     1
/*  Title:      Tools/jEdit/src/syslog_dockable.scala
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     3
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     4
Dockable window for syslog.
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     5
*/
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     6
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     7
package isabelle.jedit
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     8
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
     9
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    10
import isabelle._
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    11
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    12
import scala.actors.Actor._
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    13
import scala.swing.TextArea
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    14
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    15
import org.gjt.sp.jedit.View
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    16
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    17
49559
wenzelm
parents: 48021
diff changeset
    18
class Syslog_Dockable(view: View, position: String) extends Dockable(view, position)
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    19
{
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    20
  /* GUI components */
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    21
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    22
  private val syslog = new TextArea()
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    23
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    24
  private def update_syslog()
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    25
  {
53177
dcac8d837b9c more uniform treatment of Swing_Thread context switch: prefer asynchronous Swing_Thread.later from actor;
wenzelm
parents: 50205
diff changeset
    26
    Swing_Thread.require()
dcac8d837b9c more uniform treatment of Swing_Thread context switch: prefer asynchronous Swing_Thread.later from actor;
wenzelm
parents: 50205
diff changeset
    27
dcac8d837b9c more uniform treatment of Swing_Thread context switch: prefer asynchronous Swing_Thread.later from actor;
wenzelm
parents: 50205
diff changeset
    28
    val text = PIDE.session.current_syslog()
dcac8d837b9c more uniform treatment of Swing_Thread context switch: prefer asynchronous Swing_Thread.later from actor;
wenzelm
parents: 50205
diff changeset
    29
    if (text != syslog.text) syslog.text = text
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    30
  }
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    31
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    32
  set_content(syslog)
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    33
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    34
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    35
  /* main actor */
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    36
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    37
  private val main_actor = actor {
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    38
    loop {
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    39
      react {
56385
76acce58aeab more general prover operations;
wenzelm
parents: 55618
diff changeset
    40
        case output: Prover.Output =>
53177
dcac8d837b9c more uniform treatment of Swing_Thread context switch: prefer asynchronous Swing_Thread.later from actor;
wenzelm
parents: 50205
diff changeset
    41
          if (output.is_syslog) Swing_Thread.later { update_syslog() }
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    42
55618
995162143ef4 tuned imports;
wenzelm
parents: 53177
diff changeset
    43
        case bad => System.err.println("Syslog_Dockable: ignoring bad message " + bad)
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    44
      }
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    45
    }
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    46
  }
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    47
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    48
  override def init()
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    49
  {
50205
788c8263e634 renamed main plugin object to PIDE;
wenzelm
parents: 49559
diff changeset
    50
    PIDE.session.syslog_messages += main_actor
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    51
    update_syslog()
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    52
  }
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    53
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    54
  override def exit()
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    55
  {
50205
788c8263e634 renamed main plugin object to PIDE;
wenzelm
parents: 49559
diff changeset
    56
    PIDE.session.syslog_messages -= main_actor
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    57
  }
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    58
}