equal
deleted
inserted
replaced
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 |