📄 inputhandler.java
字号:
* recorder. Instead, it will do its own recording.
*/
public interface NonRecordable
{
}
/**
* For use by EditAction.Wrapper only.
*
* @since jEdit 2.2final
*/
public interface Wrapper
{
}
/**
* Macro recorder.
*/
public interface MacroRecorder
{
void actionPerformed (ActionListener listener,
String actionCommand);
}
private static final class CopyAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
textArea.copy();
}
}
private static final class CutAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
textArea.cut();
}
}
private static final class PasteAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
textArea.paste();
}
}
private static final class BackspaceAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
if (!textArea.isEditable())
{
textArea.getToolkit().beep();
return;
}
if (textArea.getSelectionStart()
!= textArea.getSelectionEnd())
{
textArea.setSelectedText("");
}
else
{
final int caret = textArea.getCaretPosition();
if (caret == 0)
{
textArea.getToolkit().beep();
return;
}
try
{
textArea.getDocument().remove(caret - 1, 1);
}
catch (BadLocationException bl)
{
bl.printStackTrace();
}
}
}
}
private static final class BackspaceWordAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
final int start = textArea.getSelectionStart();
if (start != textArea.getSelectionEnd())
{
textArea.setSelectedText("");
}
final int line = textArea.getCaretLine();
final int lineStart = textArea.getLineStartOffset(line);
int caret = start - lineStart;
final String lineText = textArea.getLineText(textArea
.getCaretLine());
if (caret == 0)
{
if (lineStart == 0)
{
textArea.getToolkit().beep();
return;
}
caret--;
}
else
{
final String noWordSep = (String) textArea.getDocument().getProperty("noWordSep");
caret = TextUtilities.findWordStart(lineText, caret, noWordSep);
}
try
{
textArea.getDocument().remove(caret + lineStart,
start - (caret + lineStart));
}
catch (BadLocationException bl)
{
bl.printStackTrace();
}
}
}
private static final class DeleteAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
if (!textArea.isEditable())
{
textArea.getToolkit().beep();
return;
}
if (textArea.getSelectionStart()
!= textArea.getSelectionEnd())
{
textArea.setSelectedText("");
}
else
{
final int caret = textArea.getCaretPosition();
if (caret == textArea.getDocumentLength())
{
textArea.getToolkit().beep();
return;
}
try
{
textArea.getDocument().remove(caret, 1);
}
catch (BadLocationException bl)
{
bl.printStackTrace();
}
}
}
}
private static final class DeleteWordAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
final int start = textArea.getSelectionStart();
if (start != textArea.getSelectionEnd())
{
textArea.setSelectedText("");
}
final int line = textArea.getCaretLine();
final int lineStart = textArea.getLineStartOffset(line);
int caret = start - lineStart;
final String lineText = textArea.getLineText(textArea
.getCaretLine());
if (caret == lineText.length())
{
if (lineStart + caret == textArea.getDocumentLength())
{
textArea.getToolkit().beep();
return;
}
caret++;
}
else
{
final String noWordSep = (String) textArea.getDocument().getProperty("noWordSep");
caret = TextUtilities.findWordEnd(lineText, caret, noWordSep);
}
try
{
textArea.getDocument().remove(start,
(caret + lineStart) - start);
}
catch (BadLocationException bl)
{
bl.printStackTrace();
}
}
}
public static final class EndAction
implements ActionListener
{
private final boolean select;
private EndAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
int caret = textArea.getCaretPosition();
final int lastOfLine = textArea.getLineEndOffset(textArea.getCaretLine()) - 1;
int lastVisibleLine = textArea.getFirstLine()
+ textArea.getVisibleLines();
if (lastVisibleLine >= textArea.getLineCount())
{
lastVisibleLine = Math.min(textArea.getLineCount() - 1,
lastVisibleLine);
}
else
{
lastVisibleLine -= (textArea.getElectricScroll() + 1);
}
final int lastVisible = textArea.getLineEndOffset(lastVisibleLine) - 1;
final int lastDocument = textArea.getDocumentLength();
if (caret == lastDocument)
{
textArea.getToolkit().beep();
return;
}
else if (!Boolean.TRUE.equals(textArea.getClientProperty
(SMART_HOME_END_PROPERTY)))
{
caret = lastOfLine;
}
else if (caret == lastVisible)
{
caret = lastDocument;
}
else if (caret == lastOfLine)
{
caret = lastVisible;
}
else
{
caret = lastOfLine;
}
if (select)
{
textArea.select(textArea.getMarkPosition(), caret);
}
else
{
textArea.setCaretPosition(caret);
}
}
}
public static final class DocumentEndAction
implements ActionListener
{
private final boolean select;
private DocumentEndAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
if (select)
{
textArea.select(textArea.getMarkPosition(),
textArea.getDocumentLength());
}
else
{
textArea.setCaretPosition(textArea.getDocumentLength());
}
}
}
public static final class HomeAction
implements ActionListener
{
private final boolean select;
private HomeAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
int caret = textArea.getCaretPosition();
final int firstLine = textArea.getFirstLine();
final int firstOfLine = textArea.getLineStartOffset(textArea.getCaretLine());
final int firstVisibleLine = (firstLine == 0 ? 0 :
firstLine + textArea.getElectricScroll());
final int firstVisible = textArea.getLineStartOffset(firstVisibleLine);
if (caret == 0)
{
textArea.getToolkit().beep();
return;
}
else if (!Boolean.TRUE.equals(textArea.getClientProperty
(SMART_HOME_END_PROPERTY)))
{
caret = firstOfLine;
}
else if (caret == firstVisible)
{
caret = 0;
}
else if (caret == firstOfLine)
{
caret = firstVisible;
}
else
{
caret = firstOfLine;
}
if (select)
{
textArea.select(textArea.getMarkPosition(), caret);
}
else
{
textArea.setCaretPosition(caret);
}
}
}
public static final class DocumentHomeAction
implements ActionListener
{
private final boolean select;
private DocumentHomeAction (final boolean select)
{
this.select = select;
}
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
if (select)
{
textArea.select(textArea.getMarkPosition(), 0);
}
else
{
textArea.setCaretPosition(0);
}
}
}
private static final class InsertBreakAction
implements ActionListener
{
public final void actionPerformed (final ActionEvent evt)
{
final JEditTextArea textArea = getTextArea(evt);
if (!textArea.isEditable())
{
textArea.getToolkit().beep();
return;
}
textArea.setSelectedText("\n");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -