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 + -
显示快捷键?