inputhandler.java
来自「java写的多功能文件编辑器」· Java 代码 · 共 1,230 行 · 第 1/3 页
JAVA
1,230 行
else arg = "\0"; executeAction(_grabAction,evt.getSource(),arg); } /** * If an action implements this interface, it should not be repeated. * Instead, it will handle the repetition itself. */ public interface NonRepeatable { } /** * If an action implements this interface, it should not be recorded * by the macro 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); } public static class backspace implements ActionListener { public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); if(!textArea.isEditable()) { textArea.getToolkit().beep(); return; } if(textArea.getSelectionStart() != textArea.getSelectionEnd()) { textArea.setSelectedText(""); } else { int caret = textArea.getCaretPosition(); if(caret == 0) { textArea.getToolkit().beep(); return; } try { textArea.getDocument().remove(caret - 1,1); } catch(BadLocationException bl) { bl.printStackTrace(); } } } } public static class backspace_word implements ActionListener { public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); int start = textArea.getSelectionStart(); if(start != textArea.getSelectionEnd()) { textArea.setSelectedText(""); return; } int line = textArea.getCaretLine(); int lineStart = textArea.getLineStartOffset(line); int caret = start - lineStart; String lineText = textArea.getLineText(textArea .getCaretLine()); if(caret == 0) { if(lineStart == 0) { textArea.getToolkit().beep(); return; } caret--; } else { String noWordSep = ((JextTextArea) textArea).getProperty("noWordSep"); caret = TextUtilities.findWordStart(lineText, caret-1,noWordSep); } try { textArea.getDocument().remove( caret + lineStart, start - (caret + lineStart)); } catch(BadLocationException bl) { bl.printStackTrace(); } } } public static class delete implements ActionListener { public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); if(!textArea.isEditable()) { textArea.getToolkit().beep(); return; } if(textArea.getSelectionStart() != textArea.getSelectionEnd()) { textArea.setSelectedText(""); } else { int caret = textArea.getCaretPosition(); if(caret == textArea.getDocumentLength()) { textArea.getToolkit().beep(); return; } try { textArea.getDocument().remove(caret,1); } catch(BadLocationException bl) { bl.printStackTrace(); } } } } public static class delete_word implements ActionListener { public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); int start = textArea.getSelectionStart(); if(start != textArea.getSelectionEnd()) { textArea.setSelectedText(""); return; } int line = textArea.getCaretLine(); int lineStart = textArea.getLineStartOffset(line); int caret = start - lineStart; String lineText = textArea.getLineText(textArea .getCaretLine()); if(caret == lineText.length()) { if(lineStart + caret == textArea.getDocumentLength()) { textArea.getToolkit().beep(); return; } caret++; } else { String noWordSep = ((JextTextArea) textArea).getProperty("noWordSep"); caret = TextUtilities.findWordEnd(lineText, caret+1,noWordSep); } try { textArea.getDocument().remove(start, (caret + lineStart) - start); } catch(BadLocationException bl) { bl.printStackTrace(); } } } public static class end implements ActionListener { private boolean select; public end(boolean select) { this.select = select; } public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); int caret = textArea.getCaretPosition(); 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); int lastVisible = textArea.getLineEndOffset(lastVisibleLine) - 1; 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 class document_end implements ActionListener { private boolean select; public document_end(boolean select) { this.select = select; } public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); if(select) textArea.select(textArea.getMarkPosition(), textArea.getDocumentLength()); else textArea.setCaretPosition(textArea .getDocumentLength()); } } public static class home implements ActionListener { private boolean select; public home(boolean select) { this.select = select; } public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); int caret = textArea.getCaretPosition(); int firstLine = textArea.getFirstLine(); int firstOfLine = textArea.getLineStartOffset(textArea.getCaretLine()); int firstVisibleLine = (firstLine == 0 ? 0 : firstLine + textArea.getElectricScroll()); int firstVisible = textArea.getLineStartOffset(firstVisibleLine); if(caret == 0) { textArea.getToolkit().beep(); return; } else if (!Boolean.TRUE.equals(textArea.getClientProperty(SMART_HOME_END_PROPERTY))) { int textPosition = org.jext.Utilities.getLeadingWhiteSpace(textArea.getLineText(textArea.getCaretLine())); textPosition += firstOfLine; if (caret == textPosition) caret = firstOfLine; else caret = textPosition; } else if (caret == firstVisible) caret = 0; else if (caret == firstOfLine) caret = firstVisible; else { int textPosition = org.jext.Utilities.getLeadingWhiteSpace(textArea.getLineText(textArea.getCaretLine())); textPosition += firstOfLine; if (caret == textPosition) caret = firstOfLine; else caret = textPosition; } if (select) textArea.select(textArea.getMarkPosition(), caret); else textArea.setCaretPosition(caret); } } public static class document_home implements ActionListener { private boolean select; public document_home(boolean select) { this.select = select; } public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); if(select) textArea.select(textArea.getMarkPosition(),0); else textArea.setCaretPosition(0); } } public static class insert_break implements ActionListener { public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); if(!textArea.isEditable()) { textArea.getToolkit().beep(); return; } textArea.setSelectedText("\n"); } } public static class insert_tab implements ActionListener { public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); if(!textArea.isEditable()) { textArea.getToolkit().beep(); return; } textArea.overwriteSetSelectedText("\t"); } } public static class next_char implements ActionListener { private boolean select; public next_char(boolean select) { this.select = select; } public void actionPerformed(ActionEvent evt) { JEditTextArea textArea = getTextArea(evt); int caret = textArea.getCaretPosition(); if(caret == textArea.getDocumentLength()) { textArea.getToolkit().beep(); return; } if(select) textArea.select(textArea.getMarkPosition(), caret + 1); else textArea.setCaretPosition(caret + 1); } } public static class next_line implements ActionListener {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?