src/Tools/jEdit/src/jedit/TheoryView.scala
changeset 34532 aaafe9c4180b
parent 34526 b504abb6eff6
child 34538 20bfcca24658
equal deleted inserted replaced
34531:db1c28e326fc 34532:aaafe9c4180b
     6  * @author Makarius
     6  * @author Makarius
     7  */
     7  */
     8 
     8 
     9 package isabelle.jedit
     9 package isabelle.jedit
    10 
    10 
       
    11 import scala.actors.Actor
    11 
    12 
    12 import isabelle.proofdocument.Text
    13 import isabelle.proofdocument.Text
    13 import isabelle.prover.{Prover, Command}
    14 import isabelle.prover.{Prover, Command}
    14 
    15 
    15 import java.awt.Graphics2D
    16 import java.awt.Graphics2D
    36       }
    37       }
    37   }
    38   }
    38 }
    39 }
    39 
    40 
    40 
    41 
    41 class TheoryView (text_area: JEditTextArea)
    42 class TheoryView (text_area: JEditTextArea, document_actor: Actor)
    42     extends TextAreaExtension with Text with BufferListener {
    43     extends TextAreaExtension with BufferListener {
    43 
    44 
    44   private val buffer = text_area.getBuffer
    45   private val buffer = text_area.getBuffer
    45   private val prover = Isabelle.prover_setup(buffer).get.prover
    46   private val prover = Isabelle.prover_setup(buffer).get.prover
    46   buffer.addBufferListener(this)
    47   buffer.addBufferListener(this)
    47 
    48 
    86     phase_overview.textarea = text_area
    87     phase_overview.textarea = text_area
    87     text_area.addLeftOfScrollBar(phase_overview)
    88     text_area.addLeftOfScrollBar(phase_overview)
    88     text_area.getPainter.addExtension(TextAreaPainter.LINE_BACKGROUND_LAYER + 1, this)
    89     text_area.getPainter.addExtension(TextAreaPainter.LINE_BACKGROUND_LAYER + 1, this)
    89     buffer.setTokenMarker(new DynamicTokenMarker(buffer, prover.document))
    90     buffer.setTokenMarker(new DynamicTokenMarker(buffer, prover.document))
    90     update_styles
    91     update_styles
    91     changes.event(new Text.Change(0,buffer.getText(0, buffer.getLength),0))
    92     document_actor ! new Text.Change(0,buffer.getText(0, buffer.getLength),0)
    92   }
    93   }
    93 
    94 
    94   def deactivate() = {
    95   def deactivate() = {
    95     text_area.getPainter.removeExtension(this)
    96     text_area.getPainter.removeExtension(this)
    96     text_area.removeLeftOfScrollBar(phase_overview)
    97     text_area.removeLeftOfScrollBar(phase_overview)
   183     }
   184     }
   184 
   185 
   185     gfx.setColor(saved_color)
   186     gfx.setColor(saved_color)
   186   }
   187   }
   187 
   188 
   188 
       
   189   /* Text methods */
       
   190 
       
   191   def content(start: Int, stop: Int) = buffer.getText(start, stop - start)
       
   192   def length = buffer.getLength
       
   193   val changes = new EventBus[Text.Change]
       
   194 
       
   195 
       
   196   /* BufferListener methods */
   189   /* BufferListener methods */
   197 
   190 
   198   private def commit {
   191   private def commit {
   199     if (col != null)
   192     if (col != null)
   200       changes.event(col)
   193       document_actor ! col
   201     col = null
   194     col = null
   202     if (col_timer.isRunning())
   195     if (col_timer.isRunning())
   203       col_timer.stop()
   196       col_timer.stop()
   204   }
   197   }
   205 
   198