⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findreplace.java

📁 java写的多功能文件编辑器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        if (s != null)          fieldReplace.addItem(s);        else          break;      }      s = Search.getReplacePattern();      if (s != null)      {        addReplaceHistory(s);        fieldReplace.setSelectedItem(s);      }    }    // selects contents    fieldSearchEditor.selectAll();  }  // exits the dialog after having saved the search and  // replace histories.  private void exit()  {    if (saveStates.isSelected())    {      for (int i = 0; i < fieldSearch.getItemCount(); i++)        Jext.setProperty("search.history." + i, (String) fieldSearch.getItemAt(i));      for (int i = fieldSearch.getItemCount(); i < 25; i++)        Jext.unsetProperty("search.history." + i);      if (type == REPLACE)      {        for (int i = 0; i < fieldReplace.getItemCount(); i++)          Jext.setProperty("replace.history." + i, (String) fieldReplace.getItemAt(i));        for (int i = fieldReplace.getItemCount(); i < 25; i++)          Jext.unsetProperty("replace.history." + i);      }    }    Jext.setProperty("savestates", (saveStates.isSelected() ? "on" : "off"));    Jext.setProperty("allfiles", (allFiles.isSelected() ? "on" : "off"));// patch added by gandalf march 25 2003    Search.setIgnoreCase(checkIgnoreCase.isSelected() ? true : false);    Search.setRegexp(useRegexp.isSelected() ? true : false);// patch added by gandalf march 25 2003    dispose();  }  // adds current search pattern in the search history list  private void addSearchHistory()  {    addSearchHistory(fieldSearchEditor.getText());  }  // adds a pattern in the search history list  // the pattern to be added is specified by the param c  private void addSearchHistory(String c)  {    if (c == null)      return;    for (int i = 0; i < fieldSearch.getItemCount(); i++)    {      if (((String) fieldSearch.getItemAt(i)).equals(c))        return;    }    fieldSearch.insertItemAt(c, 0);    if (fieldSearch.getItemCount() > 25)    {      //for (int i = 24; i < fieldSearch.getItemCount(); i++)// patch added by gandalf march 25 2003      for (int i = 25; i < fieldSearch.getItemCount();)// patch added by gandalf march 25 2003          fieldSearch.removeItemAt(i);    }    //Search.setFindPattern(fieldSearchEditor.getText());    fieldSearchEditor.setText((String) fieldSearch.getItemAt(0));  }  // adds current replace pattern in the replace history list  private void addReplaceHistory()  {    addReplaceHistory(fieldReplaceEditor.getText());  }  // adds a pattern in the replace history list  // the pattern to be added is given by the param c  private void addReplaceHistory(String c)  {    if (c == null)      return;    for (int i = 0; i < fieldReplace.getItemCount(); i++)    {      if (((String) fieldReplace.getItemAt(i)).equals(c))        return;    }    fieldReplace.insertItemAt(c, 0);    if (fieldReplace.getItemCount() > 25)    {      //for (int i = 24; i < fieldReplace.getItemCount(); i++)// patch added by gandalf march 25 2003      for (int i = 25; i < fieldReplace.getItemCount();)// patch added by gandalf march 25 2003        fieldReplace.removeItemAt(i);    }    //Search.setReplacePattern(fieldReplaceEditor.getText());    fieldReplaceEditor.setText((String) fieldReplace.getItemAt(0));  }  // Catch the action performed and then look for its source  // According to the source object we call appropriate methods  public void actionPerformed(ActionEvent evt)  {    Object source = evt.getSource();    if (source == btnCancel)      exit();    else if (source == btnFind)      doFind();    else if (source == btnReplace)      doReplace();    else if (source == btnReplaceAll)      doReplaceAll();    else if (source == scripted)    {      script.setEnabled(scripted.isSelected());      fieldReplace.setEnabled(!scripted.isSelected());    }  }  private void setSettings()  {    Search.setFindPattern(fieldSearchEditor.getText());    Search.setIgnoreCase(checkIgnoreCase.isSelected());    Search.setRegexp(useRegexp.isSelected());    if (type == REPLACE)    {      Search.setReplacePattern(fieldReplaceEditor.getText());      Search.setPythonScript(scripted.isSelected());      Search.setPythonScriptString(script.getText());    }  }  // replace all the occurences of search pattern by  // the replace one. If 'All Files' is checked, this is  // done in all the opened file in the component 'parent'  private void doReplaceAll()  {    Utilities.setCursorOnWait(this, true);    addReplaceHistory();    addSearchHistory();    try    {      if (allFiles.isSelected())      {        parent.setBatchMode(true);        JextTextArea textArea;        JextTextArea[] areas = parent.getTextAreas();        for (int i = 0; i < areas.length; i ++)        {          textArea = areas[i];          setSettings();          Search.replaceAll(textArea, 0,  textArea.getLength());        }        parent.setBatchMode(false);      } else  {        JextTextArea textArea = parent.getTextArea();        setSettings();        if (Search.replaceAll(textArea, 0, textArea.getLength()) == 0)        {          Utilities.beep();        }      }    } catch (Exception e) {      // nothing    } finally {     Utilities.setCursorOnWait(this, false);    }  }  // replaces specified search pattern by the replace one.  // this is done only if a match is found.  private void doReplace()  {    Utilities.setCursorOnWait(this, true);    addReplaceHistory();    addSearchHistory();    try    {      JextTextArea textArea = parent.getTextArea();      setSettings();      if (!Search.replace(textArea))      {        Utilities.beep();      } else        find(textArea);    } catch (Exception e) {      // nothing    } finally {      Utilities.setCursorOnWait(this, false);    }  }  // finds the next occurence of current search pattern  // the search is done in current text area  private void doFind()  {    Utilities.setCursorOnWait(this, true);    addSearchHistory();    find(parent.getTextArea());    Utilities.setCursorOnWait(this, false);  }  // finds the next occurence of the search pattern in a  // a given text area. if match is not found, and if user  // don't ask to start over from beginning, then the method  // calls itself by specifying next opened text area.  private void find(JextTextArea textArea)  {    setSettings();    try    {      if (!Search.find(textArea, textArea.getCaretPosition()))      {        String[] args = { textArea.getName() };        int response = JOptionPane.showConfirmDialog(null,                       Jext.getProperty("find.matchnotfound", args),                       Jext.getProperty("find.title"),                       (allFiles.isSelected() ?                        JOptionPane.YES_NO_CANCEL_OPTION : JOptionPane.YES_NO_OPTION),                       JOptionPane.QUESTION_MESSAGE);        switch (response)        {          case JOptionPane.YES_OPTION:            textArea.setCaretPosition(0);            find(textArea);            break;          case JOptionPane.NO_OPTION:            if (allFiles.isSelected())            {              JextTabbedPane pane = parent.getTabbedPane();              int index = pane.indexOfComponent(textArea);              Component c = null;              while (c == null && !(c instanceof JextTextArea))              {                index++;                if (index == pane.getTabCount())                  index = 0;                c = pane.getComponentAt(index);              }              JextTextArea area = (JextTextArea) c;              if (area != textArea)                find(area);            }            break;          case JOptionPane.CANCEL_OPTION:            return;        }      }    } catch (Exception e) { }  }  class KeyHandler extends KeyAdapter  {    public void keyPressed(KeyEvent evt)    {      switch (evt.getKeyCode())      {        case KeyEvent.VK_ENTER:          if (evt.getSource() == fieldSearchEditor)            doFind();          else if (evt.getSource() == fieldReplaceEditor)            doReplace();          break;        case KeyEvent.VK_ESCAPE:          exit();      }    }  }}// End of FindReplace.java

⌨️ 快捷键说明

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