Initial revision
[old-projects.git] / ekit / com / hexidec / ekit / component / SearchDialog.java
CommitLineData
c2da4d40
JL
1/*\r
2GNU Lesser General Public License\r
3\r
4SearchDialog\r
5Copyright (C) 2000-2003 Howard Kistler\r
6\r
7This library is free software; you can redistribute it and/or\r
8modify it under the terms of the GNU Lesser General Public\r
9License as published by the Free Software Foundation; either\r
10version 2.1 of the License, or (at your option) any later version.\r
11\r
12This library is distributed in the hope that it will be useful,\r
13but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
15Lesser General Public License for more details.\r
16\r
17You should have received a copy of the GNU Lesser General Public\r
18License along with this library; if not, write to the Free Software\r
19Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
20*/\r
21\r
22package com.hexidec.ekit.component;\r
23\r
24import java.awt.Frame;\r
25import java.awt.event.WindowAdapter;\r
26import java.awt.event.WindowEvent;\r
27import java.beans.PropertyChangeEvent;\r
28import java.beans.PropertyChangeListener;\r
29import javax.swing.JCheckBox;\r
30import javax.swing.JDialog;\r
31import javax.swing.JOptionPane;\r
32import javax.swing.JTextField;\r
33\r
34import com.hexidec.util.Translatrix;\r
35\r
36/** Class for providing a dialog that lets the user specify arguments for\r
37 * the Search Find/Replace functions\r
38 */\r
39public class SearchDialog extends JDialog\r
40{\r
41 private String inputFindTerm = (String)null;\r
42 private String inputReplaceTerm = (String)null;\r
43 private boolean bCaseSensitive = false;\r
44 private boolean bStartAtTop = false;\r
45 private boolean bReplaceAll = false;\r
46 private JOptionPane jOptionPane;\r
47\r
48 public SearchDialog(Frame parent, String title, boolean bModal, boolean bIsReplace, boolean bCaseSetting, boolean bTopSetting)\r
49 {\r
50 super(parent, title, bModal);\r
51 final boolean isReplaceDialog = bIsReplace;\r
52 final JTextField jtxfFindTerm = new JTextField(3);\r
53 final JTextField jtxfReplaceTerm = new JTextField(3);\r
54 final JCheckBox jchkCase = new JCheckBox(Translatrix.getTranslationString("SearchCaseSensitive"), bCaseSetting);\r
55 final JCheckBox jchkTop = new JCheckBox(Translatrix.getTranslationString("SearchStartAtTop"), bTopSetting);\r
56 final JCheckBox jchkAll = new JCheckBox(Translatrix.getTranslationString("SearchReplaceAll"), false);\r
57 final Object[] buttonLabels = { Translatrix.getTranslationString("DialogAccept"), Translatrix.getTranslationString("DialogCancel") };\r
58 if(bIsReplace)\r
59 {\r
60 Object[] panelContents = {\r
61 Translatrix.getTranslationString("SearchFind"),\r
62 jtxfFindTerm,\r
63 Translatrix.getTranslationString("SearchReplace"),\r
64 jtxfReplaceTerm,\r
65 jchkAll,\r
66 jchkCase,\r
67 jchkTop\r
68 };\r
69 jOptionPane = new JOptionPane(panelContents, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, buttonLabels, buttonLabels[0]);\r
70 }\r
71 else\r
72 {\r
73 Object[] panelContents = {\r
74 Translatrix.getTranslationString("SearchFind"),\r
75 jtxfFindTerm,\r
76 jchkCase,\r
77 jchkTop\r
78 };\r
79 jOptionPane = new JOptionPane(panelContents, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, buttonLabels, buttonLabels[0]);\r
80 }\r
81 setContentPane(jOptionPane);\r
82 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);\r
83\r
84 addWindowListener(new WindowAdapter() {\r
85 public void windowClosing(WindowEvent we)\r
86 {\r
87 jOptionPane.setValue(new Integer(JOptionPane.CLOSED_OPTION));\r
88 }\r
89 });\r
90\r
91 jOptionPane.addPropertyChangeListener(new PropertyChangeListener() {\r
92 public void propertyChange(PropertyChangeEvent e)\r
93 {\r
94 String prop = e.getPropertyName();\r
95 if(isVisible() \r
96 && (e.getSource() == jOptionPane)\r
97 && (prop.equals(JOptionPane.VALUE_PROPERTY) || prop.equals(JOptionPane.INPUT_VALUE_PROPERTY)))\r
98 {\r
99 Object value = jOptionPane.getValue();\r
100 if(value == JOptionPane.UNINITIALIZED_VALUE)\r
101 {\r
102 return;\r
103 }\r
104 jOptionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);\r
105 if(value.equals(buttonLabels[0]))\r
106 {\r
107 inputFindTerm = jtxfFindTerm.getText();\r
108 bCaseSensitive = jchkCase.isSelected();\r
109 bStartAtTop = jchkTop.isSelected();\r
110 if(isReplaceDialog)\r
111 {\r
112 inputReplaceTerm = jtxfReplaceTerm.getText();\r
113 bReplaceAll = jchkAll.isSelected();\r
114 }\r
115 setVisible(false);\r
116 }\r
117 else\r
118 {\r
119 inputFindTerm = (String)null;\r
120 inputReplaceTerm = (String)null;\r
121 bCaseSensitive = false;\r
122 bStartAtTop = false;\r
123 bReplaceAll = false;\r
124 setVisible(false);\r
125 }\r
126 }\r
127 }\r
128 });\r
129 this.pack();\r
130 this.show();\r
131 jtxfFindTerm.requestFocus();\r
132 }\r
133\r
134 public String getFindTerm() { return inputFindTerm; }\r
135 public String getReplaceTerm() { return inputReplaceTerm; }\r
136 public boolean getCaseSensitive() { return bCaseSensitive; }\r
137 public boolean getStartAtTop() { return bStartAtTop; }\r
138 public boolean getReplaceAll() { return bReplaceAll; }\r
139}\r
140\r