Gridarta Editor
End.java
Go to the documentation of this file.
1 /*
2  * InputHandler.java - Manages key bindings and executes actions
3  * Copyright (C) 1999 Slava Pestov
4  * Copyright (C) 2000-2023 The Gridarta Developers.
5  *
6  * You may use and modify this package for any purpose. Redistribution is
7  * permitted, in both source and binary form, provided that this notice
8  * remains intact in all source distributions of this package.
9  */
10 
11 package net.sf.gridarta.textedit.textarea.actions;
12 
13 import java.awt.event.ActionEvent;
14 import java.awt.event.ActionListener;
17 
18 public class End implements ActionListener {
19 
20  private final boolean select;
21 
22  public End(final boolean select) {
23  this.select = select;
24  }
25 
26  @Override
27  public void actionPerformed(final ActionEvent e) {
28  final JEditTextArea textArea = InputHandler.getTextArea(e);
29 
30  int caret = textArea.getCaretPosition();
31 
32  final int lastOfLine = textArea.getLineEndOffset(textArea.getCaretLine()) - 1;
33  int lastVisibleLine = textArea.getFirstLine() + textArea.getVisibleLines();
34  if (lastVisibleLine >= textArea.getLineCount()) {
35  lastVisibleLine = Math.min(textArea.getLineCount() - 1, lastVisibleLine);
36  } else {
37  lastVisibleLine -= textArea.getElectricScroll() + 1;
38  }
39 
40  final int lastVisible = textArea.getLineEndOffset(lastVisibleLine) - 1;
41  final int lastDocument = textArea.getDocumentLength();
42 
43  if (caret == lastDocument) {
44  textArea.getToolkit().beep();
45  return;
46  }
47  if (!Boolean.TRUE.equals(textArea.getClientProperty(InputActions.SMART_HOME_END_PROPERTY))) {
48  caret = lastOfLine;
49  } else if (caret == lastVisible) {
50  caret = lastDocument;
51  } else if (caret == lastOfLine) {
52  caret = lastVisible;
53  } else {
54  caret = lastOfLine;
55  }
56 
57  if (select) {
58  textArea.select(textArea.getMarkPosition(), caret);
59  } else {
60  textArea.setCaretPosition(caret);
61  }
62  }
63 
64 }
net.sf.gridarta.textedit.textarea.JEditTextArea
jEdit's text area component.
Definition: JEditTextArea.java:91
net.sf.gridarta.textedit.textarea.JEditTextArea.getElectricScroll
int getElectricScroll()
Returns the number of lines from the top and button of the text area that are always visible.
Definition: JEditTextArea.java:290
net.sf.gridarta.textedit.textarea
This package contains the other part of the script editor.
net.sf.gridarta.textedit.textarea.actions.End.actionPerformed
void actionPerformed(final ActionEvent e)
Definition: End.java:27
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.textedit.textarea.JEditTextArea.getVisibleLines
int getVisibleLines()
Returns the number of lines visible in this text area.
Definition: JEditTextArea.java:342
net.sf.gridarta.textedit.textarea.JEditTextArea.getCaretLine
int getCaretLine()
Returns the caret line.
Definition: JEditTextArea.java:612
net.sf.gridarta.textedit.textarea.JEditTextArea.getFirstLine
int getFirstLine()
Returns the line displayed at the text area's origin.
Definition: JEditTextArea.java:320
net.sf
net.sf.gridarta.textedit.textarea.JEditTextArea.getMarkPosition
int getMarkPosition()
Returns the mark position.
Definition: JEditTextArea.java:621
net.sf.gridarta.textedit.textarea.InputHandler
An input handler converts the user's key strokes into concrete actions.
Definition: InputHandler.java:36
net.sf.gridarta.textedit.textarea.actions.InputActions.SMART_HOME_END_PROPERTY
static final String SMART_HOME_END_PROPERTY
If this client property is set to Boolean.TRUE on the text area, the home/end keys will support 'smar...
Definition: InputActions.java:33
net.sf.gridarta.textedit
net
net.sf.gridarta.textedit.textarea.actions.End.End
End(final boolean select)
Definition: End.java:22
net.sf.gridarta.textedit.textarea.JEditTextArea.getLineEndOffset
int getLineEndOffset(final int line)
Returns the end offset of the specified line.
Definition: JEditTextArea.java:535
net.sf.gridarta.textedit.textarea.InputHandler.getTextArea
static JEditTextArea getTextArea(final EventObject evt)
Returns the text area that fired the specified event.
Definition: InputHandler.java:144
net.sf.gridarta.textedit.textarea.actions.End.select
final boolean select
Definition: End.java:20
net.sf.gridarta.textedit.textarea.JEditTextArea.setCaretPosition
void setCaretPosition(final int caret)
Sets the caret position.
Definition: JEditTextArea.java:631
net.sf.gridarta.textedit.textarea.JEditTextArea.getDocumentLength
int getDocumentLength()
Returns the length of the document.
Definition: JEditTextArea.java:508
net.sf.gridarta.textedit.textarea.JEditTextArea.getLineCount
int getLineCount()
Returns the number of lines in the document.
Definition: JEditTextArea.java:515
net.sf.gridarta.textedit.textarea.actions.InputActions
Definition: InputActions.java:25
net.sf.gridarta.textedit.textarea.JEditTextArea.select
void select(final int start, final int end)
Selects from the start offset to the end offset.
Definition: JEditTextArea.java:649
net.sf.gridarta.textedit.textarea.JEditTextArea.getCaretPosition
int getCaretPosition()
Returns the caret position.
Definition: JEditTextArea.java:605
net.sf.gridarta.textedit.textarea.actions.End
Definition: End.java:18