src/Tools/jEdit/src/jedit_lib.scala
changeset 73340 0ffcad1f6130
parent 72974 3afd293347cc
child 73354 79b120d1c1a3
equal deleted inserted replaced
73339:9efdebe24c65 73340:0ffcad1f6130
    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 {
   209         catch { case _: ArrayIndexOutOfBoundsException => }
   209         catch { case _: ArrayIndexOutOfBoundsException => }
   210       case _ =>
   210       case _ =>
   211     }
   211     }
   212   }
   212   }
   213 
   213 
   214   def invalidate(text_area: TextArea)
   214   def invalidate(text_area: TextArea): Unit =
   215   {
   215   {
   216     val visible_lines = text_area.getVisibleLines
   216     val visible_lines = text_area.getVisibleLines
   217     if (visible_lines > 0) text_area.invalidateScreenLineRange(0, visible_lines)
   217     if (visible_lines > 0) text_area.invalidateScreenLineRange(0, visible_lines)
   218   }
   218   }
   219 
   219 
   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   {