src/Tools/jEdit/src/raw_output_dockable.scala
author wenzelm
Fri, 19 Aug 2011 13:55:32 +0200
changeset 45172 b3bd26fd22d3
parent 44603 fad8634cee62
child 45625 7313e2db3d39
permissions -rw-r--r--
editable raw text areas: allow user to clear content;
     1 /*  Title:      Tools/jEdit/src/raw_output_dockable.scala
     2     Author:     Makarius
     3 
     4 Dockable window for raw process output (stdout).
     5 */
     6 
     7 package isabelle.jedit
     8 
     9 
    10 import isabelle._
    11 
    12 import java.lang.System
    13 
    14 import scala.actors.Actor._
    15 import scala.swing.{TextArea, ScrollPane}
    16 
    17 import org.gjt.sp.jedit.View
    18 
    19 
    20 class Raw_Output_Dockable(view: View, position: String)
    21   extends Dockable(view: View, position: String)
    22 {
    23   private val text_area = new TextArea
    24   set_content(new ScrollPane(text_area))
    25 
    26 
    27   /* main actor */
    28 
    29   private val main_actor = actor {
    30     loop {
    31       react {
    32         case input: Isabelle_Process.Input =>
    33 
    34         case result: Isabelle_Process.Result =>
    35           if (result.is_stdout)
    36             Swing_Thread.now { text_area.append(XML.content(result.message).mkString) }
    37 
    38         case bad => System.err.println("Raw_Output_Dockable: ignoring bad message " + bad)
    39       }
    40     }
    41   }
    42 
    43   override def init() { Isabelle.session.raw_messages += main_actor }
    44   override def exit() { Isabelle.session.raw_messages -= main_actor }
    45 }