|
@@ -305,13 +305,21 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
305
|
305
|
}
|
306
|
306
|
}
|
307
|
307
|
|
308
|
|
- /** {@inheritDoc}. */
|
|
308
|
+ /**
|
|
309
|
+ * {@inheritDoc}
|
|
310
|
+ *
|
|
311
|
+ * @param e Mouse wheel event
|
|
312
|
+ */
|
309
|
313
|
@Override
|
310
|
314
|
public void adjustmentValueChanged(final AdjustmentEvent e) {
|
311
|
315
|
setScrollBarPosition(e.getValue());
|
312
|
316
|
}
|
313
|
317
|
|
314
|
|
- /** {@inheritDoc}. */
|
|
318
|
+ /**
|
|
319
|
+ * {@inheritDoc}
|
|
320
|
+ *
|
|
321
|
+ * @param e Mouse wheel event
|
|
322
|
+ */
|
315
|
323
|
@Override
|
316
|
324
|
public void mouseWheelMoved(final MouseWheelEvent e) {
|
317
|
325
|
if (scrollBar.isEnabled()) {
|
|
@@ -331,36 +339,41 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
331
|
339
|
*
|
332
|
340
|
* @return line number, line part, position in whole line
|
333
|
341
|
*/
|
334
|
|
- public int[] getClickPosition(final Point point) {
|
|
342
|
+ public LineInfo getClickPosition(final Point point) {
|
335
|
343
|
return canvas.getClickPosition(point);
|
336
|
344
|
}
|
337
|
345
|
|
338
|
346
|
/**
|
339
|
347
|
* Returns the selected text.
|
|
348
|
+ *
|
|
349
|
+ * * <li>0 = start line</li>
|
|
350
|
+ * <li>1 = start char</li>
|
|
351
|
+ * <li>2 = end line</li>
|
|
352
|
+ * <li>3 = end char</li>
|
340
|
353
|
*
|
341
|
354
|
* @return Selected text
|
342
|
355
|
*/
|
343
|
356
|
public String getSelectedText() {
|
344
|
357
|
final StringBuffer selectedText = new StringBuffer();
|
345
|
|
- final int[] selectedRange = canvas.getSelectedRange();
|
|
358
|
+ final LinePosition selectedRange = canvas.getSelectedRange();
|
346
|
359
|
|
347
|
|
- for (int i = selectedRange[0]; i <= selectedRange[2]; i++) {
|
348
|
|
- if (i != selectedRange[0]) {
|
|
360
|
+ for (int i = selectedRange.getStartLine(); i <= selectedRange.getEndLine(); i++) {
|
|
361
|
+ if (i != selectedRange.getStartLine()) {
|
349
|
362
|
selectedText.append('\n');
|
350
|
363
|
}
|
351
|
364
|
if (document.getLine(i) == null) {
|
352
|
365
|
return "";
|
353
|
366
|
}
|
354
|
367
|
final AttributedCharacterIterator iterator = document.getLine(i).getIterator();
|
355
|
|
- if (selectedRange[2] == selectedRange[0]) {
|
|
368
|
+ if (selectedRange.getEndLine() == selectedRange.getStartLine()) {
|
356
|
369
|
//loop through range
|
357
|
|
- selectedText.append(getTextFromLine(iterator, selectedRange[1], selectedRange[3]));
|
358
|
|
- } else if (i == selectedRange[0]) {
|
|
370
|
+ selectedText.append(getTextFromLine(iterator, selectedRange.getStartPos(), selectedRange.getEndPos()));
|
|
371
|
+ } else if (i == selectedRange.getStartLine()) {
|
359
|
372
|
//loop from start of range to the end
|
360
|
|
- selectedText.append(getTextFromLine(iterator, selectedRange[1], iterator.getEndIndex()));
|
361
|
|
- } else if (i == selectedRange[2]) {
|
|
373
|
+ selectedText.append(getTextFromLine(iterator, selectedRange.getStartPos(), iterator.getEndIndex()));
|
|
374
|
+ } else if (i == selectedRange.getEndLine()) {
|
362
|
375
|
//loop from start to end of range
|
363
|
|
- selectedText.append(getTextFromLine(iterator, 0, selectedRange[3]));
|
|
376
|
+ selectedText.append(getTextFromLine(iterator, 0, selectedRange.getEndPos()));
|
364
|
377
|
} else {
|
365
|
378
|
//loop the whole line
|
366
|
379
|
selectedText.append(getTextFromLine(iterator, 0, iterator.getEndIndex()));
|
|
@@ -374,14 +387,8 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
374
|
387
|
* Returns the selected range.
|
375
|
388
|
*
|
376
|
389
|
* @return selected range
|
377
|
|
- * <ul>
|
378
|
|
- * <li>0 = start line</li>
|
379
|
|
- * <li>1 = start char</li>
|
380
|
|
- * <li>2 = end line</li>
|
381
|
|
- * <li>3 = end char</li>
|
382
|
|
- * </ul>
|
383
|
390
|
*/
|
384
|
|
- public int[] getSelectedRange() {
|
|
391
|
+ public LinePosition getSelectedRange() {
|
385
|
392
|
return canvas.getSelectedRange();
|
386
|
393
|
}
|
387
|
394
|
|
|
@@ -391,21 +398,17 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
391
|
398
|
* @return true iif there is a selected range
|
392
|
399
|
*/
|
393
|
400
|
public boolean hasSelectedRange() {
|
394
|
|
- final int[] selectedRange = canvas.getSelectedRange();
|
395
|
|
- return !(selectedRange[0] == selectedRange[2] && selectedRange[1] == selectedRange[3]);
|
|
401
|
+ final LinePosition selectedRange = canvas.getSelectedRange();
|
|
402
|
+ return !(selectedRange.getStartLine() == selectedRange.getEndLine() && selectedRange.getStartPos() == selectedRange.getEndPos());
|
396
|
403
|
}
|
397
|
404
|
|
398
|
405
|
/**
|
399
|
406
|
* Selects the specified region of text.
|
400
|
407
|
*
|
401
|
|
- * @param startLine Start line
|
402
|
|
- * @param startChar Start char
|
403
|
|
- * @param endLine End line
|
404
|
|
- * @param endChar End char
|
|
408
|
+ * @param position Line position
|
405
|
409
|
*/
|
406
|
|
- public void setSelectedTexT(final int startLine, final int startChar,
|
407
|
|
- final int endLine, final int endChar) {
|
408
|
|
- canvas.setSelectedRange(startLine, startChar, endLine, endChar);
|
|
410
|
+ public void setSelectedTexT(final LinePosition position) {
|
|
411
|
+ canvas.setSelectedRange(position);
|
409
|
412
|
}
|
410
|
413
|
|
411
|
414
|
/**
|
|
@@ -417,7 +420,20 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
417
|
420
|
*/
|
418
|
421
|
public String getTextFromLine(final int line) {
|
419
|
422
|
final AttributedCharacterIterator iterator = document.getLine(line).getIterator();
|
420
|
|
- return getTextFromLine(iterator, 0, iterator.getEndIndex());
|
|
423
|
+ return getTextFromLine(iterator, 0, iterator.getEndIndex(), document);
|
|
424
|
+ }
|
|
425
|
+
|
|
426
|
+ /**
|
|
427
|
+ * Returns the entire text from the specified line.
|
|
428
|
+ *
|
|
429
|
+ * @param line line to retrieve text from
|
|
430
|
+ * @param document Document to retrieve text from
|
|
431
|
+ *
|
|
432
|
+ * @return Text from the line
|
|
433
|
+ */
|
|
434
|
+ public static String getTextFromLine(final int line, final IRCDocument document) {
|
|
435
|
+ final AttributedCharacterIterator iterator = document.getLine(line).getIterator();
|
|
436
|
+ return getTextFromLine(iterator, 0, iterator.getEndIndex(), document);
|
421
|
437
|
}
|
422
|
438
|
|
423
|
439
|
/**
|
|
@@ -431,7 +447,22 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
431
|
447
|
*/
|
432
|
448
|
public String getTextFromLine(final int line, final int start,
|
433
|
449
|
final int end) {
|
434
|
|
- return getTextFromLine(document.getLine(line).getIterator(), start, end);
|
|
450
|
+ return getTextFromLine(document.getLine(line).getIterator(), start, end, document);
|
|
451
|
+ }
|
|
452
|
+
|
|
453
|
+ /**
|
|
454
|
+ * Returns the range of text from the specified iterator.
|
|
455
|
+ *
|
|
456
|
+ * @param line line to retrieve text from
|
|
457
|
+ * @param start Start index in the iterator
|
|
458
|
+ * @param end End index in the iterator
|
|
459
|
+ * @param document Document to retrieve text from
|
|
460
|
+ *
|
|
461
|
+ * @return Text in the range from the line
|
|
462
|
+ */
|
|
463
|
+ public static String getTextFromLine(final int line, final int start,
|
|
464
|
+ final int end, final IRCDocument document) {
|
|
465
|
+ return getTextFromLine(document.getLine(line).getIterator(), start, end, document);
|
435
|
466
|
}
|
436
|
467
|
|
437
|
468
|
/**
|
|
@@ -442,13 +473,19 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
442
|
473
|
* @return Text in the range from the line
|
443
|
474
|
*/
|
444
|
475
|
public String getTextFromLine(final AttributedCharacterIterator iterator) {
|
445
|
|
- final int end = iterator.getEndIndex();
|
446
|
|
- final int start = iterator.getBeginIndex();
|
447
|
|
- final StringBuffer text = new StringBuffer();
|
448
|
|
- for (iterator.setIndex(start); iterator.getIndex() < end; iterator.next()) {
|
449
|
|
- text.append(iterator.current());
|
450
|
|
- }
|
451
|
|
- return text.toString();
|
|
476
|
+ return getTextFromLine(iterator, iterator.getBeginIndex(), iterator.getEndIndex(), document);
|
|
477
|
+ }
|
|
478
|
+
|
|
479
|
+ /**
|
|
480
|
+ * Returns the range of text from the specified iterator.
|
|
481
|
+ *
|
|
482
|
+ * @param iterator iterator to get text from
|
|
483
|
+ * @param document Document to retrieve text from
|
|
484
|
+ *
|
|
485
|
+ * @return Text in the range from the line
|
|
486
|
+ */
|
|
487
|
+ public static String getTextFromLine(final AttributedCharacterIterator iterator, final IRCDocument document) {
|
|
488
|
+ return getTextFromLine(iterator, iterator.getBeginIndex(), iterator.getEndIndex(), document);
|
452
|
489
|
}
|
453
|
490
|
|
454
|
491
|
/**
|
|
@@ -462,6 +499,21 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
462
|
499
|
*/
|
463
|
500
|
public String getTextFromLine(final AttributedCharacterIterator iterator,
|
464
|
501
|
final int start, final int end) {
|
|
502
|
+ return getTextFromLine(iterator, start, end, document);
|
|
503
|
+ }
|
|
504
|
+
|
|
505
|
+ /**
|
|
506
|
+ * Returns the range of text from the specified iterator.
|
|
507
|
+ *
|
|
508
|
+ * @param iterator iterator to get text from
|
|
509
|
+ * @param start Start index in the iterator
|
|
510
|
+ * @param end End index in the iterator
|
|
511
|
+ * @param document Document to retrieve text from
|
|
512
|
+ *
|
|
513
|
+ * @return Text in the range from the line
|
|
514
|
+ */
|
|
515
|
+ public static String getTextFromLine(final AttributedCharacterIterator iterator,
|
|
516
|
+ final int start, final int end, final IRCDocument document) {
|
465
|
517
|
final StringBuffer text = new StringBuffer();
|
466
|
518
|
for (iterator.setIndex(start); iterator.getIndex() < end; iterator.next()) {
|
467
|
519
|
text.append(iterator.current());
|
|
@@ -476,7 +528,7 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
476
|
528
|
*
|
477
|
529
|
* @return Click type for specified position
|
478
|
530
|
*/
|
479
|
|
- public ClickType getClickType(final int[] lineInfo) {
|
|
531
|
+ public ClickType getClickType(final LineInfo lineInfo) {
|
480
|
532
|
return canvas.getClickType(lineInfo);
|
481
|
533
|
}
|
482
|
534
|
|
|
@@ -503,7 +555,7 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
503
|
555
|
*
|
504
|
556
|
* @return Specified value
|
505
|
557
|
*/
|
506
|
|
- public Object getAttributeValueAtPoint(int[] lineInfo) {
|
|
558
|
+ public Object getAttributeValueAtPoint(LineInfo lineInfo) {
|
507
|
559
|
return canvas.getAttributeValueAtPoint(lineInfo);
|
508
|
560
|
}
|
509
|
561
|
|
|
@@ -538,20 +590,19 @@ public final class TextPane extends JComponent implements AdjustmentListener,
|
538
|
590
|
return;
|
539
|
591
|
}
|
540
|
592
|
final int trimmedLines = document.getNumLines() - numLines;
|
541
|
|
- final int[] selectedRange = getSelectedRange();
|
|
593
|
+ final LinePosition selectedRange = getSelectedRange();
|
542
|
594
|
|
543
|
|
- selectedRange[0] -= trimmedLines;
|
544
|
|
- selectedRange[2] -= trimmedLines;
|
|
595
|
+ selectedRange.setStartLine(selectedRange.getStartLine() - trimmedLines);
|
|
596
|
+ selectedRange.setEndLine(selectedRange.getEndLine() - trimmedLines);
|
545
|
597
|
|
546
|
|
- if (selectedRange[0] < 0) {
|
547
|
|
- selectedRange[0] = 0;
|
|
598
|
+ if (selectedRange.getStartLine() < 0) {
|
|
599
|
+ selectedRange.setStartLine(0);
|
548
|
600
|
}
|
549
|
|
- if (selectedRange[2] < 0) {
|
550
|
|
- selectedRange[2] = 0;
|
|
601
|
+ if (selectedRange.getEndLine() < 0) {
|
|
602
|
+ selectedRange.setEndLine(0);
|
551
|
603
|
}
|
552
|
604
|
|
553
|
|
- setSelectedTexT(selectedRange[0], selectedRange[1],
|
554
|
|
- selectedRange[2], selectedRange[3]);
|
|
605
|
+ setSelectedTexT(selectedRange);
|
555
|
606
|
document.trim(numLines);
|
556
|
607
|
}
|
557
|
608
|
|