src/Tools/jEdit/src/jedit/session_dockable.scala
author wenzelm
Wed, 22 Sep 2010 16:04:20 +0200
changeset 39591 a43a723753e6
parent 39589 5b81b8df1dde
child 39593 1a34187f0b97
permissions -rw-r--r--
more content for Session_Dockable;
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._
39591
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    13
import scala.swing.{TextArea, ScrollPane, TabbedPane, Component}
39515
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
{
39591
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    20
  /* main tabs */
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    21
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    22
  private val readme = new HTML_Panel(Isabelle.system, "SansSerif", 12)
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    23
  readme.render_document(Isabelle.system.try_read(List("$JEDIT_HOME/README.html")))
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    24
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    25
  private val syslog = new TextArea
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    26
  syslog.editable = false
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    27
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    28
  private val tabs = new TabbedPane {
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    29
    pages += new TabbedPane.Page("README", Component.wrap(readme))
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    30
    pages += new TabbedPane.Page("System log", new ScrollPane(syslog))
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    31
  }
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    32
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    33
  set_content(tabs)
39515
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    34
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    35
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    36
  /* main actor */
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    37
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    38
  private val main_actor = actor {
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    39
    loop {
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    40
      react {
39589
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    41
        case result: Isabelle_Process.Result =>
39591
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    42
          if (result.is_init || result.is_exit || result.is_system || result.is_ready)
a43a723753e6 more content for Session_Dockable;
wenzelm
parents: 39589
diff changeset
    43
            Swing_Thread.now { syslog.append(XML.content(result.message).mkString + "\n") }
39589
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    44
39515
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    45
        case bad => System.err.println("Session_Dockable: ignoring bad message " + bad)
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    46
      }
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    47
    }
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    48
  }
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    49
39589
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    50
  override def init() { Isabelle.session.raw_messages += main_actor }
5b81b8df1dde Session_Dockable: basic syslog output;
wenzelm
parents: 39516
diff changeset
    51
  override def exit() { Isabelle.session.raw_messages -= main_actor }
39515
57ceabb0bb8e basic setup for prover session panel;
wenzelm
parents:
diff changeset
    52
}