8 |
8 |
9 |
9 |
10 import isabelle._ |
10 import isabelle._ |
11 |
11 |
12 import java.awt.{Component, Container, GraphicsEnvironment, Point, Rectangle, Dimension} |
12 import java.awt.{Component, Container, GraphicsEnvironment, Point, Rectangle, Dimension} |
13 import java.awt.event.{KeyEvent, KeyListener} |
13 import java.awt.event.{InputEvent, KeyEvent, KeyListener} |
14 import javax.swing.{Icon, ImageIcon, JWindow, SwingUtilities} |
14 import javax.swing.{Icon, ImageIcon, JWindow, SwingUtilities} |
15 |
15 |
16 import scala.annotation.tailrec |
16 import scala.annotation.tailrec |
17 |
17 |
18 import org.gjt.sp.jedit.{jEdit, Buffer, View, GUIUtilities} |
18 import org.gjt.sp.jedit.{jEdit, Buffer, View, GUIUtilities, Debug} |
19 import org.gjt.sp.jedit.gui.KeyEventWorkaround |
19 import org.gjt.sp.jedit.gui.KeyEventWorkaround |
20 import org.gjt.sp.jedit.buffer.JEditBuffer |
20 import org.gjt.sp.jedit.buffer.JEditBuffer |
21 import org.gjt.sp.jedit.textarea.{JEditTextArea, TextArea, TextAreaPainter} |
21 import org.gjt.sp.jedit.textarea.{JEditTextArea, TextArea, TextAreaPainter} |
22 |
22 |
23 |
23 |
154 /* get text */ |
154 /* get text */ |
155 |
155 |
156 def try_get_text(buffer: JEditBuffer, range: Text.Range): Option[String] = |
156 def try_get_text(buffer: JEditBuffer, range: Text.Range): Option[String] = |
157 try { Some(buffer.getText(range.start, range.length)) } |
157 try { Some(buffer.getText(range.start, range.length)) } |
158 catch { case _: ArrayIndexOutOfBoundsException => None } |
158 catch { case _: ArrayIndexOutOfBoundsException => None } |
|
159 |
|
160 def try_get_text(text: String, range: Text.Range): Option[String] = |
|
161 try { Some(text.substring(range.start, range.stop)) } |
|
162 catch { case _: IndexOutOfBoundsException => None } |
159 |
163 |
160 |
164 |
161 /* buffer range */ |
165 /* buffer range */ |
162 |
166 |
163 def buffer_range(buffer: JEditBuffer): Text.Range = |
167 def buffer_range(buffer: JEditBuffer): Text.Range = |
334 def keyTyped(evt: KeyEvent) { process_key_event(evt, key_typed) } |
338 def keyTyped(evt: KeyEvent) { process_key_event(evt, key_typed) } |
335 def keyPressed(evt: KeyEvent) { process_key_event(evt, key_pressed) } |
339 def keyPressed(evt: KeyEvent) { process_key_event(evt, key_pressed) } |
336 def keyReleased(evt: KeyEvent) { process_key_event(evt, key_released) } |
340 def keyReleased(evt: KeyEvent) { process_key_event(evt, key_released) } |
337 } |
341 } |
338 } |
342 } |
|
343 |
|
344 def special_key(evt: KeyEvent): Boolean = |
|
345 { |
|
346 // cf. 5.1.0/jEdit/org/gjt/sp/jedit/gui/KeyEventWorkaround.java |
|
347 val mod = evt.getModifiers |
|
348 (mod & InputEvent.CTRL_MASK) != 0 && (mod & InputEvent.ALT_MASK) == 0 || |
|
349 (mod & InputEvent.CTRL_MASK) == 0 && (mod & InputEvent.ALT_MASK) != 0 && |
|
350 !Debug.ALT_KEY_PRESSED_DISABLED || |
|
351 (mod & InputEvent.META_MASK) != 0 |
|
352 } |
339 } |
353 } |
340 |
354 |