inputhandler.java

来自「java写的多功能文件编辑器」· Java 代码 · 共 1,230 行 · 第 1/3 页

JAVA
1,230
字号
    private boolean select;    public next_line(boolean select)    {      this.select = select;    }    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      int caret = textArea.getCaretPosition();      int line = textArea.getCaretLine();      if(line == textArea.getLineCount() - 1)      {        textArea.getToolkit().beep();        return;      }      int magic = textArea.getMagicCaretPosition();      if(magic == -1)      {        magic = textArea.offsetToX(line,          caret - textArea.getLineStartOffset(line));      }      caret = textArea.getLineStartOffset(line + 1)        + textArea.xToOffset(line + 1,magic + 1);      if(select)        textArea.select(textArea.getMarkPosition(),caret);      else        textArea.setCaretPosition(caret);      textArea.setMagicCaretPosition(magic);    }  }  public static class next_page implements ActionListener  {    private boolean select;    public next_page(boolean select)    {      this.select = select;    }    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      int lineCount = textArea.getLineCount();      int firstLine = textArea.getFirstLine();      int visibleLines = textArea.getVisibleLines();      int line = textArea.getCaretLine();      firstLine += visibleLines;      if(firstLine + visibleLines >= lineCount - 1)        firstLine = lineCount - visibleLines;      textArea.setFirstLine(firstLine);      int caret = textArea.getLineStartOffset(        Math.min(textArea.getLineCount() - 1,        line + visibleLines));      if(select)        textArea.select(textArea.getMarkPosition(),caret);      else        textArea.setCaretPosition(caret);    }  }  public static class next_word implements ActionListener  {    private boolean select;    public next_word(boolean select)    {      this.select = select;    }    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      int caret = textArea.getCaretPosition();      int line = textArea.getCaretLine();      int lineStart = textArea.getLineStartOffset(line);      String lineText = textArea.getLineText(line);      int len = lineText.length();      /*boolean skipSpacesAfter = WordMove.isSpaceAfter(), //this one is always == enabled!        enabled = WordMove.isEnabled();*/      boolean overSpace = Jext.getBooleanProperty("editor.wordmove.go_over_space");      caret -= lineStart;      if(caret == len) {        if(lineStart + caret == textArea.getDocumentLength()) {          textArea.getToolkit().beep();          return;        }        caret++;      } else {        //MODIFIED by Blaisorblade, Paolo Giarrusso        //We must always skip spaces before jumping over a word, if the patch is enabled        if (overSpace) {          while (caret < len && lineText.charAt(caret) == ' ')            caret++;        }        if (caret < len) {          String noWordSep = ((JextTextArea) textArea).getProperty("noWordSep");          caret = TextUtilities.findWordEnd(lineText,caret + 1,noWordSep);          //MODIFIED          if (overSpace) {            while (caret < len && lineText.charAt(caret) == ' ')              caret++;          }        }      }      if(select)        textArea.select(textArea.getMarkPosition(),          lineStart + caret);      else        textArea.setCaretPosition(lineStart + caret);    }  }  public static class overwrite implements ActionListener  {    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      textArea.setOverwriteEnabled(        !textArea.isOverwriteEnabled());    }  }  public static class prev_char implements ActionListener  {    private boolean select;    public prev_char(boolean select)    {      this.select = select;    }    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      int caret = textArea.getCaretPosition();      if(caret == 0)      {        textArea.getToolkit().beep();        return;      }      if(select)        textArea.select(textArea.getMarkPosition(),          caret - 1);      else        textArea.setCaretPosition(caret - 1);    }  }  public static class prev_line implements ActionListener  {    private boolean select;    public prev_line(boolean select)    {      this.select = select;    }    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      int caret = textArea.getCaretPosition();      int line = textArea.getCaretLine();      if(line == 0)      {        textArea.getToolkit().beep();        return;      }      int magic = textArea.getMagicCaretPosition();      if(magic == -1)      {        magic = textArea.offsetToX(line,          caret - textArea.getLineStartOffset(line));      }      caret = textArea.getLineStartOffset(line - 1)        + textArea.xToOffset(line - 1,magic + 1);      if(select)        textArea.select(textArea.getMarkPosition(),caret);      else        textArea.setCaretPosition(caret);      textArea.setMagicCaretPosition(magic);    }  }  public static class prev_page implements ActionListener  {    private boolean select;    public prev_page(boolean select)    {      this.select = select;    }    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      int firstLine = textArea.getFirstLine();      int visibleLines = textArea.getVisibleLines();      int line = textArea.getCaretLine();      if(firstLine < visibleLines)        firstLine = visibleLines;      textArea.setFirstLine(firstLine - visibleLines);      int caret = textArea.getLineStartOffset(        Math.max(0,line - visibleLines));      if(select)        textArea.select(textArea.getMarkPosition(),caret);      else        textArea.setCaretPosition(caret);    }  }  public static class prev_word implements ActionListener  {    private boolean select;    public prev_word(boolean select)    {      this.select = select;    }    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      int caret = textArea.getCaretPosition();      int line = textArea.getCaretLine();      int lineStart = textArea.getLineStartOffset(line);      String lineText = textArea.getLineText(line);      //boolean skipSpacesBefore = WordMove.isSpaceBefore(), //this one is always *FALSE*!        //enabled = WordMove.isEnabled();      boolean overSpace = Jext.getBooleanProperty("editor.wordmove.go_over_space");      caret -= lineStart;      if(caret == 0)      {        if(lineStart == 0)        {          textArea.getToolkit().beep();          return;        }        caret--;      }      else      {        //MODIFIED by Blaisorblade, Paolo Giarrusso        //We must always skip spaces before jumping over a word, if the patch is enabled        if (overSpace)          while (caret > 0 && lineText.charAt(caret - 1) == ' ')            caret--;        if (caret > 0) {          String noWordSep = ((JextTextArea) textArea).getProperty("noWordSep");          caret = TextUtilities.findWordStart(lineText,caret - 1,noWordSep);          /*if (skipSpacesBefore)            while (caret > 0 && lineText.charAt(caret - 1) == ' ')              caret--;*/        }      }      if(select)        textArea.select(textArea.getMarkPosition(),          lineStart + caret);      else        textArea.setCaretPosition(lineStart + caret);    }  }  public static class repeat implements ActionListener,    InputHandler.NonRecordable  {    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      textArea.getInputHandler().setRepeatEnabled(true);      String actionCommand = evt.getActionCommand();      if (actionCommand != null)      {        textArea.getInputHandler().setRepeatCount(Integer.parseInt(actionCommand));      }    }  }  public static class insert_char implements ActionListener, InputHandler.NonRepeatable  {    public void actionPerformed(ActionEvent evt)    {      JEditTextArea textArea = getTextArea(evt);      String str = evt.getActionCommand();      int repeatCount = textArea.getInputHandler().getRepeatCount();      if(textArea.isEditable())      {        StringBuffer buf = new StringBuffer();        for(int i = 0; i < repeatCount; i++)          buf.append(str);        textArea.overwriteSetSelectedText(buf.toString());      } else {        textArea.getToolkit().beep();      }    }  }}/* * ChangeLog: * $Log: InputHandler.java,v $ * Revision 1.4  2003/07/08 18:55:50  blaisorblade * Removal of the useless WordMove class. * * Revision 1.3  2002/11/16 18:46:55  blaisorblade * Added caching of the option dialog, and new word moving. * * Revision 1.2  2001/08/26 13:29:42  gfx * Better JavaScript colorizing support * * Revision 1.1.1.1  2001/08/20 22:32:14  gfx * Jext 3.0pre5 * * Revision 1.5  2001/08/12 15:02:04  gfx * Repeat bug fix * * Revision 1.4  2001/08/12 14:36:27  gfx * XTree reloading fix * * Revision 1.3  2001/06/07 00:13:13  gfx * Jext 3.0pre2 <Madcat> * * Revision 1.2  2001/04/17 21:58:29  gfx * * new email adress: romain.guy@jext.org * * Revision 1.1.1.1  2001/04/11 14:22:47  gfx * * Jext 2.11: GUI customization, bug fixes * * Revision 1.22  2000/03/18 05:45:25  sp * Complete word overhaul, various other changes * * Revision 1.21  2000/02/15 07:44:30  sp * bug fixes, doc updates, etc * * Revision 1.20  2000/02/10 08:32:51  sp * Bug fixes, doc updates * * Revision 1.19  2000/01/28 00:20:58  sp * Lots of stuff * * Revision 1.18  2000/01/21 00:35:29  sp * Various updates * * Revision 1.16  1999/12/24 01:20:20  sp * Bug fixing and other stuff for 2.3pre1 * * Revision 1.15  1999/12/19 11:14:29  sp * Static abbrev expansion started * * Revision 1.14  1999/12/13 03:40:30  sp * Bug fixes, syntax is now mostly GPL'd * * Revision 1.13  1999/12/03 23:48:10  sp * C+END/C+HOME, LOADING BufferUpdate message, misc stuff * * Revision 1.12  1999/11/21 07:59:30  sp * JavaDoc updates * * Revision 1.11  1999/11/21 03:40:18  sp * Parts of EditBus not used by core moved to EditBus.jar * * Revision 1.10  1999/11/21 01:20:31  sp * Bug fixes, EditBus updates, fixed some warnings generated by jikes +P * * Revision 1.9  1999/11/19 08:54:52  sp * EditBus integrated into the core, event system gone, bug fixes * * Revision 1.8  1999/11/16 08:21:20  sp * Various fixes, attempt at beefing up expand-abbrev * * Revision 1.7  1999/11/09 10:14:34  sp * Macro code cleanups, menu item and tool bar clicks are recorded now, delete * word commands, check box menu item support * * Revision 1.6  1999/10/24 02:06:41  sp * Miscallaneous pre1 stuff * * Revision 1.5  1999/10/05 10:55:29  sp * File dialogs open faster, and experimental keyboard macros * */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?