35
35
import org .fife .ui .rsyntaxtextarea .Token ;
36
36
import org .fife .ui .rsyntaxtextarea .focusabletip .FocusableTip ;
37
37
import org .fife .ui .rtextarea .RTextArea ;
38
+ import org .fife .ui .rtextarea .RTextAreaUI ;
38
39
import org .fife .ui .rtextarea .RUndoManager ;
39
-
40
40
import processing .app .*;
41
41
42
42
import javax .swing .*;
47
47
import javax .swing .text .Document ;
48
48
import javax .swing .text .Segment ;
49
49
import javax .swing .undo .UndoManager ;
50
-
51
50
import java .awt .*;
52
51
import java .awt .event .KeyEvent ;
53
52
import java .awt .event .MouseEvent ;
@@ -242,7 +241,7 @@ protected JPopupMenu createPopupMenu() {
242
241
protected void configurePopupMenu (JPopupMenu popupMenu ) {
243
242
super .configurePopupMenu (popupMenu );
244
243
}
245
-
244
+
246
245
@ Override
247
246
protected RTAMouseListener createMouseListener () {
248
247
return new SketchTextAreaMouseListener (this );
@@ -315,8 +314,8 @@ public HyperlinkEvent execute() {
315
314
return null ;
316
315
}
317
316
}
318
-
319
-
317
+
318
+
320
319
/**
321
320
* Handles http hyperlinks.
322
321
* NOTE (@Ricardo JL Rufino): Workaround to enable hyperlinks by default: https://github.com/bobbylight/RSyntaxTextArea/issues/119
@@ -326,12 +325,12 @@ private class SketchTextAreaMouseListener extends RTextAreaMutableCaretEvent {
326
325
private Insets insets ;
327
326
private boolean isScanningForLinks ;
328
327
private int hoveredOverLinkOffset = -1 ;
329
-
328
+
330
329
protected SketchTextAreaMouseListener (RTextArea textArea ) {
331
330
super (textArea );
332
331
insets = new Insets (0 , 0 , 0 , 0 );
333
332
}
334
-
333
+
335
334
/**
336
335
* Notifies all listeners that have registered interest for notification
337
336
* on this event type. The listener list is processed last to first.
@@ -344,22 +343,22 @@ private void fireHyperlinkUpdate(HyperlinkEvent e) {
344
343
Object [] listeners = listenerList .getListenerList ();
345
344
// Process the listeners last to first, notifying
346
345
// those that are interested in this event
347
- for (int i = listeners .length - 2 ; i >= 0 ; i -= 2 ) {
348
- if (listeners [i ]== HyperlinkListener .class ) {
349
- ((HyperlinkListener )listeners [i + 1 ]).hyperlinkUpdate (e );
350
- }
346
+ for (int i = listeners .length - 2 ; i >= 0 ; i -= 2 ) {
347
+ if (listeners [i ] == HyperlinkListener .class ) {
348
+ ((HyperlinkListener ) listeners [i + 1 ]).hyperlinkUpdate (e );
349
+ }
351
350
}
352
351
}
353
-
352
+
354
353
private HyperlinkEvent createHyperlinkEvent (MouseEvent e ) {
355
354
HyperlinkEvent he = null ;
356
-
355
+
357
356
Token t = viewToToken (e .getPoint ());
358
- if (t != null ) {
357
+ if (t != null ) {
359
358
// Copy token, viewToModel() unfortunately modifies Token
360
359
t = new TokenImpl (t );
361
360
}
362
-
361
+
363
362
if (t != null && t .isHyperlink ()) {
364
363
URL url = null ;
365
364
String desc = null ;
@@ -375,38 +374,38 @@ private HyperlinkEvent createHyperlinkEvent(MouseEvent e) {
375
374
}
376
375
he = new HyperlinkEvent (SketchTextArea .this , HyperlinkEvent .EventType .ACTIVATED , url , desc );
377
376
}
378
-
377
+
379
378
return he ;
380
379
}
381
-
380
+
382
381
@ Override
383
382
public void mouseClicked (MouseEvent e ) {
384
383
if (getHyperlinksEnabled ()) {
385
384
HyperlinkEvent he = createHyperlinkEvent (e );
386
- if (he != null ) {
385
+ if (he != null ) {
387
386
fireHyperlinkUpdate (he );
388
387
}
389
388
}
390
389
}
391
-
392
- @ Override
390
+
391
+ @ Override
393
392
public void mouseMoved (MouseEvent e ) {
394
393
395
394
super .mouseMoved (e );
396
395
397
396
if (!getHyperlinksEnabled ()) {
398
397
return ;
399
398
}
400
-
399
+
401
400
// LinkGenerator linkGenerator = getLinkGenerator();
402
-
401
+
403
402
// GitHub issue RSyntaxTextArea/#25 - links identified at "edges" of editor
404
403
// should not be activated if mouse is in margin insets.
405
404
insets = getInsets (insets );
406
- if (insets != null ) {
405
+ if (insets != null ) {
407
406
int x = e .getX ();
408
407
int y = e .getY ();
409
- if (x <= insets .left || y < insets .top ) {
408
+ if (x <= insets .left || y < insets .top ) {
410
409
if (isScanningForLinks ) {
411
410
stopScanningForLinks ();
412
411
}
@@ -416,14 +415,14 @@ public void mouseMoved(MouseEvent e) {
416
415
417
416
isScanningForLinks = true ;
418
417
Token t = viewToToken (e .getPoint ());
419
- if (t != null ) {
418
+ if (t != null ) {
420
419
// Copy token, viewToModel() unfortunately modifies Token
421
420
t = new TokenImpl (t );
422
421
}
423
422
Cursor c2 = null ;
424
- if (t != null && t .isHyperlink ()) {
425
- if (hoveredOverLinkOffset == -1 ||
426
- hoveredOverLinkOffset != t .getOffset ()) {
423
+ if (t != null && t .isHyperlink ()) {
424
+ if (hoveredOverLinkOffset == -1 ||
425
+ hoveredOverLinkOffset != t .getOffset ()) {
427
426
hoveredOverLinkOffset = t .getOffset ();
428
427
repaint ();
429
428
}
@@ -456,15 +455,15 @@ public void mouseMoved(MouseEvent e) {
456
455
else {
457
456
c2 = Cursor .getPredefinedCursor (Cursor .TEXT_CURSOR );
458
457
hoveredOverLinkOffset = -1 ;
459
- // linkGeneratorResult = null;
458
+ // linkGeneratorResult = null;
460
459
}
461
- if (getCursor ()!= c2 ) {
460
+ if (getCursor () != c2 ) {
462
461
setCursor (c2 );
463
462
// TODO: Repaint just the affected line(s).
464
463
repaint (); // Link either left or went into.
465
- }
464
+ }
466
465
}
467
-
466
+
468
467
private void stopScanningForLinks () {
469
468
if (isScanningForLinks ) {
470
469
Cursor c = getCursor ();
@@ -478,4 +477,8 @@ private void stopScanningForLinks() {
478
477
479
478
}
480
479
480
+ @ Override
481
+ protected RTextAreaUI createRTextAreaUI () {
482
+ return new SketchTextAreaUI (this );
483
+ }
481
484
}
0 commit comments