96 def buffer_file(buffer: Buffer): Option[JFile] = check_file(buffer_name(buffer)) |
96 def buffer_file(buffer: Buffer): Option[JFile] = check_file(buffer_name(buffer)) |
97 |
97 |
98 def buffer_undo_in_progress[A](buffer: JEditBuffer, body: => A): A = |
98 def buffer_undo_in_progress[A](buffer: JEditBuffer, body: => A): A = |
99 { |
99 { |
100 val undo_in_progress = buffer.isUndoInProgress |
100 val undo_in_progress = buffer.isUndoInProgress |
101 def set(b: Boolean) { Untyped.set[Boolean](buffer, "undoInProgress", b) } |
101 def set(b: Boolean): Unit = Untyped.set[Boolean](buffer, "undoInProgress", b) |
102 try { set(true); body } finally { set(undo_in_progress) } |
102 try { set(true); body } finally { set(undo_in_progress) } |
103 } |
103 } |
104 |
104 |
105 |
105 |
106 /* main jEdit components */ |
106 /* main jEdit components */ |
194 Some(Text.Range(start, end)) |
194 Some(Text.Range(start, end)) |
195 } |
195 } |
196 else None |
196 else None |
197 } |
197 } |
198 |
198 |
199 def invalidate_range(text_area: TextArea, range: Text.Range) |
199 def invalidate_range(text_area: TextArea, range: Text.Range): Unit = |
200 { |
200 { |
201 val buffer = text_area.getBuffer |
201 val buffer = text_area.getBuffer |
202 buffer_range(buffer).try_restrict(range) match { |
202 buffer_range(buffer).try_restrict(range) match { |
203 case Some(range1) if !range1.is_singularity => |
203 case Some(range1) if !range1.is_singularity => |
204 try { |
204 try { |
314 } |
314 } |
315 |
315 |
316 |
316 |
317 /* key event handling */ |
317 /* key event handling */ |
318 |
318 |
319 def request_focus_view(alt_view: View = null) |
319 def request_focus_view(alt_view: View = null): Unit = |
320 { |
|
321 isabelle.jedit_base.JEdit_Lib.request_focus_view(alt_view) |
320 isabelle.jedit_base.JEdit_Lib.request_focus_view(alt_view) |
322 } |
321 |
323 |
322 def propagate_key(view: View, evt: KeyEvent): Unit = |
324 def propagate_key(view: View, evt: KeyEvent) |
|
325 { |
323 { |
326 if (view != null && !evt.isConsumed) |
324 if (view != null && !evt.isConsumed) |
327 view.getInputHandler().processKeyEvent(evt, View.ACTION_BAR, false) |
325 view.getInputHandler().processKeyEvent(evt, View.ACTION_BAR, false) |
328 } |
326 } |
329 |
327 |
330 def key_listener( |
328 def key_listener( |
331 key_typed: KeyEvent => Unit = _ => (), |
329 key_typed: KeyEvent => Unit = _ => (), |
332 key_pressed: KeyEvent => Unit = _ => (), |
330 key_pressed: KeyEvent => Unit = _ => (), |
333 key_released: KeyEvent => Unit = _ => ()): KeyListener = |
331 key_released: KeyEvent => Unit = _ => ()): KeyListener = |
334 { |
332 { |
335 def process_key_event(evt0: KeyEvent, handle: KeyEvent => Unit) |
333 def process_key_event(evt0: KeyEvent, handle: KeyEvent => Unit): Unit = |
336 { |
334 { |
337 val evt = KeyEventWorkaround.processKeyEvent(evt0) |
335 val evt = KeyEventWorkaround.processKeyEvent(evt0) |
338 if (evt != null) handle(evt) |
336 if (evt != null) handle(evt) |
339 } |
337 } |
340 |
338 |
341 new KeyListener |
339 new KeyListener |
342 { |
340 { |
343 def keyTyped(evt: KeyEvent) { process_key_event(evt, key_typed) } |
341 def keyTyped(evt: KeyEvent): Unit = process_key_event(evt, key_typed) |
344 def keyPressed(evt: KeyEvent) { process_key_event(evt, key_pressed) } |
342 def keyPressed(evt: KeyEvent): Unit = process_key_event(evt, key_pressed) |
345 def keyReleased(evt: KeyEvent) { process_key_event(evt, key_released) } |
343 def keyReleased(evt: KeyEvent): Unit = process_key_event(evt, key_released) |
346 } |
344 } |
347 } |
345 } |
348 |
346 |
349 def special_key(evt: KeyEvent): Boolean = |
347 def special_key(evt: KeyEvent): Boolean = |
350 { |
348 { |