src/Tools/jEdit/src/pretty_text_area.scala
changeset 61561 f35786faee6c
parent 61556 0d4ee4168e41
child 61570 f26a4d5e82b5
equal deleted inserted replaced
61560:7c985fd653c5 61561:f35786faee6c
     8 package isabelle.jedit
     8 package isabelle.jedit
     9 
     9 
    10 
    10 
    11 import isabelle._
    11 import isabelle._
    12 
    12 
    13 import java.util.concurrent.{Future => JFuture}
       
    14 import java.awt.{Color, Font, Toolkit, Window}
    13 import java.awt.{Color, Font, Toolkit, Window}
    15 import java.awt.event.KeyEvent
    14 import java.awt.event.KeyEvent
    16 import javax.swing.JTextField
    15 import javax.swing.JTextField
    17 import javax.swing.event.{DocumentListener, DocumentEvent}
    16 import javax.swing.event.{DocumentListener, DocumentEvent}
    18 
    17 
    73   private var current_body: XML.Body = Nil
    72   private var current_body: XML.Body = Nil
    74   private var current_base_snapshot = Document.Snapshot.init
    73   private var current_base_snapshot = Document.Snapshot.init
    75   private var current_base_results = Command.Results.empty
    74   private var current_base_results = Command.Results.empty
    76   private var current_rendering: Rendering =
    75   private var current_rendering: Rendering =
    77     Pretty_Text_Area.text_rendering(current_base_snapshot, current_base_results, Nil)._2
    76     Pretty_Text_Area.text_rendering(current_base_snapshot, current_base_results, Nil)._2
    78   private var future_refresh: Option[JFuture[Unit]] = None
    77   private var future_refresh: Option[Future[Unit]] = None
    79 
    78 
    80   private val rich_text_area =
    79   private val rich_text_area =
    81     new Rich_Text_Area(view, text_area, () => current_rendering, close_action,
    80     new Rich_Text_Area(view, text_area, () => current_rendering, close_action,
    82       get_search_pattern _, caret_visible = false, enable_hovering = true)
    81       get_search_pattern _, caret_visible = false, enable_hovering = true)
    83 
    82 
   126 
   125 
   127       val base_snapshot = current_base_snapshot
   126       val base_snapshot = current_base_snapshot
   128       val base_results = current_base_results
   127       val base_results = current_base_results
   129       val formatted_body = Pretty.formatted(current_body, margin, metric)
   128       val formatted_body = Pretty.formatted(current_body, margin, metric)
   130 
   129 
   131       future_refresh.map(_.cancel(true))
   130       future_refresh.map(_.cancel)
   132       future_refresh =
   131       future_refresh =
   133         Some(Standard_Thread.submit_task {
   132         Some(Future.fork {
   134           val (text, rendering) =
   133           val (text, rendering) =
   135             try { Pretty_Text_Area.text_rendering(base_snapshot, base_results, formatted_body) }
   134             try { Pretty_Text_Area.text_rendering(base_snapshot, base_results, formatted_body) }
   136             catch { case exn: Throwable => Log.log(Log.ERROR, this, exn); throw exn }
   135             catch { case exn: Throwable => Log.log(Log.ERROR, this, exn); throw exn }
   137           Exn.Interrupt.expose()
   136           Exn.Interrupt.expose()
   138 
   137