src/Tools/jEdit/src/jedit/session_dockable.scala
author wenzelm
Wed, 22 Sep 2010 15:01:34 +0200
changeset 39589 5b81b8df1dde
parent 39516 8a70e91650a6
child 39591 a43a723753e6
permissions -rw-r--r--
Session_Dockable: basic syslog output;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
39515
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     1
/*  Title:      Tools/jEdit/src/jedit/session_dockable.scala
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     3
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     4
Dockable window for prover session management.
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     5
*/
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     6
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     7
package isabelle.jedit
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     8
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
     9
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    10
import isabelle._
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    11
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    12
import scala.actors.Actor._
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    13
import scala.swing.{TextArea, ScrollPane}
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    14
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    15
import org.gjt.sp.jedit.View
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    16
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    17
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    18
class Session_Dockable(view: View, position: String) extends Dockable(view: View, position: String)
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    19
{
39589
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    20
  private val text_area = new TextArea
39516
8a70e91650a6 non-editable text area;
wenzelm
parents: 39515
diff changeset
    21
  text_area.editable = false
39515
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    22
  set_content(new ScrollPane(text_area))
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    23
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    24
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    25
  /* main actor */
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    26
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    27
  private val main_actor = actor {
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    28
    loop {
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    29
      react {
39589
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    30
        case result: Isabelle_Process.Result =>
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    31
          if (result.is_init || result.is_exit || result.is_system)
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    32
            Swing_Thread.now { text_area.append(XML.content(result.message).mkString + "\n") }
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    33
39515
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    34
        case bad => System.err.println("Session_Dockable: ignoring bad message " + bad)
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    35
      }
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    36
    }
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    37
  }
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    38
39589
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    39
  override def init() { Isabelle.session.raw_messages += main_actor }
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    40
  override def exit() { Isabelle.session.raw_messages -= main_actor }
39515
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    41
}