src/Tools/jEdit/src/syslog_dockable.scala
author paulson <lp15@cam.ac.uk>
Mon, 22 Jul 2024 22:55:19 +0100
changeset 80611 fbc859ccdaf3
parent 76610 6e2383488a55
permissions -rw-r--r--
A massive reduction of some truly horrible proofs
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
56775
59f70b89e5fd improved syslog performance -- avoid denial-of-service e.g. with threads_trace = 5 and active Syslog dockable;
wenzelm
parents: 56715
diff changeset
    12
import scala.swing.{TextArea, ScrollPane}
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    13
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    14
import org.gjt.sp.jedit.View
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    15
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    16
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73987
diff changeset
    17
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
    18
  /* GUI components */
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
  private val syslog = new TextArea()
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    21
76610
6e2383488a55 clarified signature: proper scopes and types;
wenzelm
parents: 76488
diff changeset
    22
  private def syslog_delay =
6e2383488a55 clarified signature: proper scopes and types;
wenzelm
parents: 76488
diff changeset
    23
    Delay.first(PIDE.session.update_delay, gui = true) {
6e2383488a55 clarified signature: proper scopes and types;
wenzelm
parents: 76488
diff changeset
    24
      val text = PIDE.session.syslog.content()
6e2383488a55 clarified signature: proper scopes and types;
wenzelm
parents: 76488
diff changeset
    25
      if (text != syslog.text) syslog.text = text
6e2383488a55 clarified signature: proper scopes and types;
wenzelm
parents: 76488
diff changeset
    26
    }
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    27
56775
59f70b89e5fd improved syslog performance -- avoid denial-of-service e.g. with threads_trace = 5 and active Syslog dockable;
wenzelm
parents: 56715
diff changeset
    28
  set_content(new ScrollPane(syslog))
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    29
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    30
56715
52125652e82a clarified Session.Consumer, with Session.Outlet managed by dispatcher thread;
wenzelm
parents: 56662
diff changeset
    31
  /* main */
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    32
56715
52125652e82a clarified Session.Consumer, with Session.Outlet managed by dispatcher thread;
wenzelm
parents: 56662
diff changeset
    33
  private val main =
56775
59f70b89e5fd improved syslog performance -- avoid denial-of-service e.g. with threads_trace = 5 and active Syslog dockable;
wenzelm
parents: 56715
diff changeset
    34
    Session.Consumer[Prover.Output](getClass.getName) { case _ => syslog_delay.invoke() }
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    35
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73987
diff changeset
    36
  override def init(): Unit = {
56715
52125652e82a clarified Session.Consumer, with Session.Outlet managed by dispatcher thread;
wenzelm
parents: 56662
diff changeset
    37
    PIDE.session.syslog_messages += main
56775
59f70b89e5fd improved syslog performance -- avoid denial-of-service e.g. with threads_trace = 5 and active Syslog dockable;
wenzelm
parents: 56715
diff changeset
    38
    syslog_delay.invoke()
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    39
  }
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    40
75393
87ebf5a50283 clarified formatting, for the sake of scala3;
wenzelm
parents: 73987
diff changeset
    41
  override def exit(): Unit = {
56715
52125652e82a clarified Session.Consumer, with Session.Outlet managed by dispatcher thread;
wenzelm
parents: 56662
diff changeset
    42
    PIDE.session.syslog_messages -= main
48021
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    43
  }
d899be1cfe6d separate syslog dockable -- discontinued tendency of sub-window management via tabs;
wenzelm
parents:
diff changeset
    44
}