--- /dev/null
+/*\r
+GNU Lesser General Public License\r
+\r
+SearchDialog\r
+Copyright (C) 2000-2003 Howard Kistler\r
+\r
+This library is free software; you can redistribute it and/or\r
+modify it under the terms of the GNU Lesser General Public\r
+License as published by the Free Software Foundation; either\r
+version 2.1 of the License, or (at your option) any later version.\r
+\r
+This library is distributed in the hope that it will be useful,\r
+but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+Lesser General Public License for more details.\r
+\r
+You should have received a copy of the GNU Lesser General Public\r
+License along with this library; if not, write to the Free Software\r
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+*/\r
+\r
+package com.hexidec.ekit.component;\r
+\r
+import java.awt.Frame;\r
+import java.awt.event.WindowAdapter;\r
+import java.awt.event.WindowEvent;\r
+import java.beans.PropertyChangeEvent;\r
+import java.beans.PropertyChangeListener;\r
+import javax.swing.JCheckBox;\r
+import javax.swing.JDialog;\r
+import javax.swing.JOptionPane;\r
+import javax.swing.JTextField;\r
+\r
+import com.hexidec.util.Translatrix;\r
+\r
+/** Class for providing a dialog that lets the user specify arguments for\r
+ * the Search Find/Replace functions\r
+ */\r
+public class SearchDialog extends JDialog\r
+{\r
+ private String inputFindTerm = (String)null;\r
+ private String inputReplaceTerm = (String)null;\r
+ private boolean bCaseSensitive = false;\r
+ private boolean bStartAtTop = false;\r
+ private boolean bReplaceAll = false;\r
+ private JOptionPane jOptionPane;\r
+\r
+ public SearchDialog(Frame parent, String title, boolean bModal, boolean bIsReplace, boolean bCaseSetting, boolean bTopSetting)\r
+ {\r
+ super(parent, title, bModal);\r
+ final boolean isReplaceDialog = bIsReplace;\r
+ final JTextField jtxfFindTerm = new JTextField(3);\r
+ final JTextField jtxfReplaceTerm = new JTextField(3);\r
+ final JCheckBox jchkCase = new JCheckBox(Translatrix.getTranslationString("SearchCaseSensitive"), bCaseSetting);\r
+ final JCheckBox jchkTop = new JCheckBox(Translatrix.getTranslationString("SearchStartAtTop"), bTopSetting);\r
+ final JCheckBox jchkAll = new JCheckBox(Translatrix.getTranslationString("SearchReplaceAll"), false);\r
+ final Object[] buttonLabels = { Translatrix.getTranslationString("DialogAccept"), Translatrix.getTranslationString("DialogCancel") };\r
+ if(bIsReplace)\r
+ {\r
+ Object[] panelContents = {\r
+ Translatrix.getTranslationString("SearchFind"),\r
+ jtxfFindTerm,\r
+ Translatrix.getTranslationString("SearchReplace"),\r
+ jtxfReplaceTerm,\r
+ jchkAll,\r
+ jchkCase,\r
+ jchkTop\r
+ };\r
+ jOptionPane = new JOptionPane(panelContents, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, buttonLabels, buttonLabels[0]);\r
+ }\r
+ else\r
+ {\r
+ Object[] panelContents = {\r
+ Translatrix.getTranslationString("SearchFind"),\r
+ jtxfFindTerm,\r
+ jchkCase,\r
+ jchkTop\r
+ };\r
+ jOptionPane = new JOptionPane(panelContents, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, buttonLabels, buttonLabels[0]);\r
+ }\r
+ setContentPane(jOptionPane);\r
+ setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);\r
+\r
+ addWindowListener(new WindowAdapter() {\r
+ public void windowClosing(WindowEvent we)\r
+ {\r
+ jOptionPane.setValue(new Integer(JOptionPane.CLOSED_OPTION));\r
+ }\r
+ });\r
+\r
+ jOptionPane.addPropertyChangeListener(new PropertyChangeListener() {\r
+ public void propertyChange(PropertyChangeEvent e)\r
+ {\r
+ String prop = e.getPropertyName();\r
+ if(isVisible() \r
+ && (e.getSource() == jOptionPane)\r
+ && (prop.equals(JOptionPane.VALUE_PROPERTY) || prop.equals(JOptionPane.INPUT_VALUE_PROPERTY)))\r
+ {\r
+ Object value = jOptionPane.getValue();\r
+ if(value == JOptionPane.UNINITIALIZED_VALUE)\r
+ {\r
+ return;\r
+ }\r
+ jOptionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);\r
+ if(value.equals(buttonLabels[0]))\r
+ {\r
+ inputFindTerm = jtxfFindTerm.getText();\r
+ bCaseSensitive = jchkCase.isSelected();\r
+ bStartAtTop = jchkTop.isSelected();\r
+ if(isReplaceDialog)\r
+ {\r
+ inputReplaceTerm = jtxfReplaceTerm.getText();\r
+ bReplaceAll = jchkAll.isSelected();\r
+ }\r
+ setVisible(false);\r
+ }\r
+ else\r
+ {\r
+ inputFindTerm = (String)null;\r
+ inputReplaceTerm = (String)null;\r
+ bCaseSensitive = false;\r
+ bStartAtTop = false;\r
+ bReplaceAll = false;\r
+ setVisible(false);\r
+ }\r
+ }\r
+ }\r
+ });\r
+ this.pack();\r
+ this.show();\r
+ jtxfFindTerm.requestFocus();\r
+ }\r
+\r
+ public String getFindTerm() { return inputFindTerm; }\r
+ public String getReplaceTerm() { return inputReplaceTerm; }\r
+ public boolean getCaseSensitive() { return bCaseSensitive; }\r
+ public boolean getStartAtTop() { return bStartAtTop; }\r
+ public boolean getReplaceAll() { return bReplaceAll; }\r
+}\r
+\r