/* -*- tab-width: 4 -*-i * * Electric(tm) VLSI Design System * * File: FindText.java * * Copyright (c) 2003 Sun Microsystems and Static Free Software * * Electric(tm) is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Electric(tm) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Electric(tm); see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */ package com.sun.electric.tool.user.dialogs; import com.sun.electric.Main; import com.sun.electric.database.text.Pref; import com.sun.electric.database.text.TextUtils; import com.sun.electric.database.variable.CodeExpression; import com.sun.electric.database.variable.TextDescriptor; import com.sun.electric.tool.Client; import com.sun.electric.tool.user.ui.TextWindow; import com.sun.electric.tool.user.ui.WindowContent; import com.sun.electric.tool.user.ui.WindowFrame; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.regex.Pattern; import javax.swing.JFrame; /** * Class to handle the "Search and Replace" dialog. */ public class FindText extends EModelessDialog { private static final long serialVersionUID = 1L; private static FindText theDialog = null; private static Pref.Group prefs = Pref.groupForPackage(FindText.class); private static Pref prefCaseSensitive = Pref.makeBooleanPref("FindText_caseSensitive", prefs, false), prefFindTextMessage = Pref.makeStringPref("FindText_findTextMessage", prefs, ""), prefReplaceTextMessage = Pref.makeStringPref("FindText_ReplaceTextMessage", prefs, ""), prefFindReverse = Pref.makeBooleanPref("FindText_findReverse", prefs, false), prefRegExp = Pref.makeBooleanPref("FindText_regExp", prefs, false), prefSearchNodeNames = Pref.makeBooleanPref("FindText_searchNodeNames", prefs, true), prefSearchNodeVars = Pref.makeBooleanPref("FindText_searchNodeVars", prefs, true), prefSearchArcNames = Pref.makeBooleanPref("FindText_searchArcNames", prefs, true), prefSearchArcVars = Pref.makeBooleanPref("FindText_searchArcVars", prefs, true), prefSearchExportNames = Pref.makeBooleanPref("FindText_searchExportNames", prefs, true), prefSearchExportVars = Pref.makeBooleanPref("FindText_searchExportVars", prefs, true), prefSearchCellVars = Pref.makeBooleanPref("FindText_searchCellVars", prefs, true), prefSearchTempNames = Pref.makeBooleanPref("FindText_searchTempNames", prefs, false), prefSearchHighlighted = Pref.makeBooleanPref("FindText_searchHighlighted", prefs, false), prefCodeRestriction = Pref.makeIntPref("FindText_searchCodeRestriction", prefs, 0), prefUnitRestriction = Pref.makeIntPref("FindText_searchUnitRestriction", prefs, 0); private String lastSearch = null; private CodeExpression.Code [] codeRestrictions; private TextDescriptor.Unit [] unitRestrictions; public static void findTextDialog() { if (Client.getOperatingSystem() == Client.OS.UNIX) { // On Linux, if a dialog is built, closed using setVisible(false), // and then requested again using setVisible(true), it does // not appear on top. I've tried using toFront(), requestFocus(), // but none of that works. Instead, I brute force it and // rebuild the dialog from scratch each time. if (theDialog != null) theDialog.dispose(); theDialog = null; } if (theDialog == null) { JFrame jf = null; jf = (JFrame) Main.getCurrentJFrame(); theDialog = new FindText(jf); } theDialog.setVisible(true); theDialog.toFront(); } /** Creates new form Search and Replace */ private FindText(Frame parent) { super(parent, false); initComponents(); // make all text fields select-all when entered EDialog.makeTextFieldSelectAllOnTab(findString); EDialog.makeTextFieldSelectAllOnTab(replaceString); EDialog.makeTextFieldSelectAllOnTab(lineNumber); // load the code-restriction selector int numCodeRestrs = 1; for (Iterator<CodeExpression.Code> it = CodeExpression.Code.getCodes(); it.hasNext(); ) { it.next(); numCodeRestrs++; } codeRestrictions = new CodeExpression.Code[numCodeRestrs]; numCodeRestrs = 0; codeRestrictions[numCodeRestrs++] = null; searchCodeRestriction.addItem("All Code Values"); codeRestrictions[numCodeRestrs++] = CodeExpression.Code.NONE; searchCodeRestriction.addItem("Only NO Code"); for (Iterator<CodeExpression.Code> it = CodeExpression.Code.getCodes(); it.hasNext(); ) { CodeExpression.Code cec = it.next(); if (cec == CodeExpression.Code.NONE) continue; searchCodeRestriction.addItem("Only " + cec.name() + " Code"); codeRestrictions[numCodeRestrs++] = cec; } // load the unit-restriction selector int numUnitRestrs = 1; for (Iterator<TextDescriptor.Unit> it = TextDescriptor.Unit.getUnits(); it.hasNext(); ) { it.next(); numUnitRestrs++; } unitRestrictions = new TextDescriptor.Unit[numUnitRestrs]; numUnitRestrs = 0; unitRestrictions[numUnitRestrs++] = null; searchUnitsRestriction.addItem("All Units Values"); unitRestrictions[numUnitRestrs++] = TextDescriptor.Unit.NONE; searchUnitsRestriction.addItem("Only NO Units"); for (Iterator<TextDescriptor.Unit> it = TextDescriptor.Unit.getUnits(); it.hasNext(); ) { TextDescriptor.Unit un = it.next(); if (un == TextDescriptor.Unit.NONE) continue; String camelCase = un.getDescription().toUpperCase().substring(0, 1) + un.getDescription().substring(1); searchUnitsRestriction.addItem("Only " + camelCase + " Units"); unitRestrictions[numUnitRestrs++] = un; } // load defaults into the dialog findString.setText(prefFindTextMessage.getString()); replaceString.setText(prefReplaceTextMessage.getString()); caseSensitive.setSelected(prefCaseSensitive.getBoolean()); findReverse.setSelected(prefFindReverse.getBoolean()); regExp.setSelected(prefRegExp.getBoolean()); searchNodeNames.setSelected(prefSearchNodeNames.getBoolean()); searchNodeVars.setSelected(prefSearchNodeVars.getBoolean()); searchArcNames.setSelected(prefSearchArcNames.getBoolean()); searchArcVars.setSelected(prefSearchArcVars.getBoolean()); searchExportNames.setSelected(prefSearchExportNames.getBoolean()); searchExportVars.setSelected(prefSearchExportVars.getBoolean()); searchCellVars.setSelected(prefSearchCellVars.getBoolean()); searchTempNames.setSelected(prefSearchTempNames.getBoolean()); searchHighlighted.setSelected(prefSearchHighlighted.getBoolean()); searchCodeRestriction.setSelectedIndex(prefCodeRestriction.getInt()); searchUnitsRestriction.setSelectedIndex(prefUnitRestriction.getInt()); // changes to any checkboxes cause the search to start fresh ActionListener action = new ActionListener() { public void actionPerformed(ActionEvent evt) { lastSearch = null; } }; searchNodeNames.addActionListener(action); searchNodeVars.addActionListener(action); searchArcNames.addActionListener(action); searchArcVars.addActionListener(action); searchExportNames.addActionListener(action); searchExportVars.addActionListener(action); searchCellVars.addActionListener(action); searchTempNames.addActionListener(action); searchHighlighted.addActionListener(action); searchCodeRestriction.addActionListener(action); searchUnitsRestriction.addActionListener(action); getRootPane().setDefaultButton(find); finishInitialization(); pack(); } private boolean badRegExpSyntax() { if (!regExp.isSelected()) return false; try { Pattern.compile(findString.getText()); return false; } catch (Exception e) { System.out.println("Regular Expression error in Find string. Operation aborted."); return true; } } private Set<TextUtils.WhatToSearch> getWhatToSearch() { Set<TextUtils.WhatToSearch> whatToSearch = new HashSet<TextUtils.WhatToSearch>(); if (searchNodeNames.isSelected()) whatToSearch.add(TextUtils.WhatToSearch.NODE_NAME); if (searchNodeVars.isSelected()) whatToSearch.add(TextUtils.WhatToSearch.NODE_VAR); if (searchArcNames.isSelected()) whatToSearch.add(TextUtils.WhatToSearch.ARC_NAME); if (searchArcVars.isSelected()) whatToSearch.add(TextUtils.WhatToSearch.ARC_VAR); if (searchExportNames.isSelected()) whatToSearch.add(TextUtils.WhatToSearch.EXPORT_NAME); if (searchExportVars.isSelected()) whatToSearch.add(TextUtils.WhatToSearch.EXPORT_VAR); if (searchCellVars.isSelected()) whatToSearch.add(TextUtils.WhatToSearch.CELL_VAR); if (searchTempNames.isSelected()) whatToSearch.add(TextUtils.WhatToSearch.TEMP_NAMES); return whatToSearch; } protected void escapePressed() { doneActionPerformed(null); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; jLabel4 = new javax.swing.JLabel(); Done = new javax.swing.JButton(); findString = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); replaceString = new javax.swing.JTextField(); caseSensitive = new javax.swing.JCheckBox(); findReverse = new javax.swing.JCheckBox(); replace = new javax.swing.JButton(); replaceAndFind = new javax.swing.JButton(); replaceAll = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); lineNumber = new javax.swing.JTextField(); find = new javax.swing.JButton(); goToLine = new javax.swing.JButton(); regExp = new javax.swing.JCheckBox(); whatToSearch = new javax.swing.JPanel(); searchNodeNames = new javax.swing.JCheckBox(); searchNodeVars = new javax.swing.JCheckBox(); searchArcNames = new javax.swing.JCheckBox(); searchArcVars = new javax.swing.JCheckBox(); searchExportNames = new javax.swing.JCheckBox(); searchExportVars = new javax.swing.JCheckBox(); searchCellVars = new javax.swing.JCheckBox(); searchTempNames = new javax.swing.JCheckBox(); searchHighlighted = new javax.swing.JCheckBox(); jLabel3 = new javax.swing.JLabel(); searchCodeRestriction = new javax.swing.JComboBox(); searchUnitsRestriction = new javax.swing.JComboBox(); getContentPane().setLayout(new java.awt.GridBagLayout()); setTitle("Search and Replace"); setName(""); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); jLabel4.setText("Find:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(jLabel4, gridBagConstraints); Done.setMnemonic('d'); Done.setText("Done"); Done.setActionCommand("done"); Done.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { doneActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 4; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(Done, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(findString, gridBagConstraints); jLabel1.setText("Line Number:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(jLabel1, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(replaceString, gridBagConstraints); caseSensitive.setMnemonic('c'); caseSensitive.setText("Case Sensitive"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(caseSensitive, gridBagConstraints); findReverse.setMnemonic('v'); findReverse.setText("Find Reverse"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 2; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(findReverse, gridBagConstraints); replace.setMnemonic('r'); replace.setText("Replace"); replace.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { replaceActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(replace, gridBagConstraints); replaceAndFind.setMnemonic('n'); replaceAndFind.setText("Replace and Find"); replaceAndFind.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { replaceAndFindActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(replaceAndFind, gridBagConstraints); replaceAll.setMnemonic('a'); replaceAll.setText("Replace All"); replaceAll.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { replaceAllActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(replaceAll, gridBagConstraints); jLabel2.setText("Replace:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(jLabel2, gridBagConstraints); lineNumber.setColumns(6); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(lineNumber, gridBagConstraints); find.setMnemonic('f'); find.setText("Find"); find.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { findActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(find, gridBagConstraints); goToLine.setMnemonic('g'); goToLine.setText("Go To Line"); goToLine.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { goToLineActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 4; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); getContentPane().add(goToLine, gridBagConstraints); regExp.setMnemonic('e'); regExp.setText("Regular Expressions"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 2; getContentPane().add(regExp, gridBagConstraints); whatToSearch.setLayout(new java.awt.GridBagLayout()); whatToSearch.setBorder(javax.swing.BorderFactory.createTitledBorder("Objects to Search")); searchNodeNames.setText("Node Names"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; whatToSearch.add(searchNodeNames, gridBagConstraints); searchNodeVars.setText("Node Variables"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; whatToSearch.add(searchNodeVars, gridBagConstraints); searchArcNames.setText("Arc Names"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; whatToSearch.add(searchArcNames, gridBagConstraints); searchArcVars.setText("Arc Variables"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; whatToSearch.add(searchArcVars, gridBagConstraints); searchExportNames.setText("Export Names"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; whatToSearch.add(searchExportNames, gridBagConstraints); searchExportVars.setText("Export Variables"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; whatToSearch.add(searchExportVars, gridBagConstraints); searchCellVars.setText("Cell Variables"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 1; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; whatToSearch.add(searchCellVars, gridBagConstraints); searchTempNames.setText("Automatically Generated Node and Arc Names"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 4; whatToSearch.add(searchTempNames, gridBagConstraints); searchHighlighted.setText("Limit Search to the Highlighted Area"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; whatToSearch.add(searchHighlighted, gridBagConstraints); jLabel3.setText("Restrictions:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 4, 2, 4); whatToSearch.add(jLabel3, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(0, 0, 2, 4); whatToSearch.add(searchCodeRestriction, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(0, 0, 2, 4); whatToSearch.add(searchUnitsRestriction, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.gridwidth = 4; getContentPane().add(whatToSearch, gridBagConstraints); pack(); }// </editor-fold>//GEN-END:initComponents private void doneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_doneActionPerformed closeDialog(null); }//GEN-LAST:event_doneActionPerformed private void goToLineActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_goToLineActionPerformed {//GEN-HEADEREND:event_goToLineActionPerformed WindowFrame wf = WindowFrame.getCurrentWindowFrame(); if (wf == null) return; WindowContent content = wf.getContent(); if (content instanceof TextWindow) { TextWindow tw = (TextWindow)content; int i = TextUtils.atoi(lineNumber.getText()); tw.goToLineNumber(i); return; } System.out.println("Cannot access this window by line numbers"); }//GEN-LAST:event_goToLineActionPerformed private void replaceAllActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_replaceAllActionPerformed {//GEN-HEADEREND:event_replaceAllActionPerformed WindowFrame wf = WindowFrame.getCurrentWindowFrame(); if (wf == null) return; String search = findString.getText(); String replace = replaceString.getText(); WindowContent content = wf.getContent(); CodeExpression.Code codeRestr = codeRestrictions[searchCodeRestriction.getSelectedIndex()]; TextDescriptor.Unit unitRestr = unitRestrictions[searchUnitsRestriction.getSelectedIndex()]; content.initTextSearch(search, caseSensitive.isSelected(), regExp.isSelected(), getWhatToSearch(), codeRestr, unitRestr, searchHighlighted.isSelected()); content.replaceAllText(replace); }//GEN-LAST:event_replaceAllActionPerformed private void replaceAndFindActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_replaceAndFindActionPerformed {//GEN-HEADEREND:event_replaceAndFindActionPerformed if (badRegExpSyntax()) return; WindowFrame wf = WindowFrame.getCurrentWindowFrame(); if (wf == null) return; if (lastSearch == null) return; WindowContent content = wf.getContent(); content.replaceText(replaceString.getText()); if (!content.findNextText(findReverse.isSelected())) lastSearch = null; }//GEN-LAST:event_replaceAndFindActionPerformed private void replaceActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_replaceActionPerformed {//GEN-HEADEREND:event_replaceActionPerformed if (badRegExpSyntax()) return; WindowFrame wf = WindowFrame.getCurrentWindowFrame(); if (wf == null) return; if (lastSearch == null) return; WindowContent content = wf.getContent(); content.replaceText(replaceString.getText()); replace.setEnabled(false); }//GEN-LAST:event_replaceActionPerformed private void findActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_findActionPerformed {//GEN-HEADEREND:event_findActionPerformed if (badRegExpSyntax()) return; WindowFrame wf = WindowFrame.getCurrentWindowFrame(); if (wf == null) return; String search = findString.getText(); WindowContent content = wf.getContent(); if (lastSearch != null) { if (!lastSearch.equals(search)) lastSearch = null; } if (lastSearch == null) { CodeExpression.Code codeRestr = codeRestrictions[searchCodeRestriction.getSelectedIndex()]; TextDescriptor.Unit unitRestr = unitRestrictions[searchUnitsRestriction.getSelectedIndex()]; content.initTextSearch(search, caseSensitive.isSelected(), regExp.isSelected(), getWhatToSearch(), codeRestr, unitRestr, searchHighlighted.isSelected()); } lastSearch = search; if (!content.findNextText(findReverse.isSelected())) lastSearch = null; replace.setEnabled(true); }//GEN-LAST:event_findActionPerformed /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt)//GEN-FIRST:event_closeDialog { prefFindTextMessage.setString(findString.getText()); prefReplaceTextMessage.setString(replaceString.getText()); prefCaseSensitive.setBoolean(caseSensitive.isSelected()); prefFindReverse.setBoolean(findReverse.isSelected()); prefRegExp.setBoolean(regExp.isSelected()); prefSearchNodeNames.setBoolean(searchNodeNames.isSelected()); prefSearchNodeVars.setBoolean(searchNodeVars.isSelected()); prefSearchArcNames.setBoolean(searchArcNames.isSelected()); prefSearchArcVars.setBoolean(searchArcVars.isSelected()); prefSearchExportNames.setBoolean(searchExportNames.isSelected()); prefSearchExportVars.setBoolean(searchExportVars.isSelected()); prefSearchCellVars.setBoolean(searchCellVars.isSelected()); prefSearchTempNames.setBoolean(searchTempNames.isSelected()); prefSearchHighlighted.setBoolean(searchHighlighted.isSelected()); prefCodeRestriction.setInt(searchCodeRestriction.getSelectedIndex()); prefUnitRestriction.setInt(searchUnitsRestriction.getSelectedIndex()); setVisible(false); dispose(); }//GEN-LAST:event_closeDialog // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton Done; private javax.swing.JCheckBox caseSensitive; private javax.swing.JButton find; private javax.swing.JCheckBox findReverse; private javax.swing.JTextField findString; private javax.swing.JButton goToLine; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JTextField lineNumber; private javax.swing.JCheckBox regExp; private javax.swing.JButton replace; private javax.swing.JButton replaceAll; private javax.swing.JButton replaceAndFind; private javax.swing.JTextField replaceString; private javax.swing.JCheckBox searchArcNames; private javax.swing.JCheckBox searchArcVars; private javax.swing.JCheckBox searchCellVars; private javax.swing.JComboBox searchCodeRestriction; private javax.swing.JCheckBox searchExportNames; private javax.swing.JCheckBox searchExportVars; private javax.swing.JCheckBox searchHighlighted; private javax.swing.JCheckBox searchNodeNames; private javax.swing.JCheckBox searchNodeVars; private javax.swing.JCheckBox searchTempNames; private javax.swing.JComboBox searchUnitsRestriction; private javax.swing.JPanel whatToSearch; // End of variables declaration//GEN-END:variables }