KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > gui > util > FindDialog


1 package org.columba.core.gui.util;
2
3 import java.awt.BorderLayout JavaDoc;
4 import java.awt.event.ActionEvent JavaDoc;
5 import java.awt.event.ActionListener JavaDoc;
6
7 import javax.swing.BorderFactory JavaDoc;
8 import javax.swing.JDialog JavaDoc;
9 import javax.swing.JOptionPane JavaDoc;
10 import javax.swing.JPanel JavaDoc;
11 import javax.swing.JTextField JavaDoc;
12
13 import org.columba.core.gui.base.ButtonWithMnemonic;
14 import org.columba.core.gui.base.CheckBoxWithMnemonic;
15 import org.columba.core.gui.base.LabelWithMnemonic;
16 import org.columba.core.resourceloader.GlobalResourceLoader;
17 import org.columba.core.resourceloader.IconKeys;
18 import org.columba.core.resourceloader.ImageLoader;
19 import org.columba.core.util.FindReplace;
20 import org.columba.core.util.IViewableText;
21 import com.jgoodies.forms.layout.CellConstraints;
22 import com.jgoodies.forms.layout.FormLayout;
23
24 @SuppressWarnings JavaDoc("serial")
25 public class FindDialog extends JDialog JavaDoc implements ActionListener JavaDoc{
26     private static final String JavaDoc RESOURCE_PATH = "org.columba.core.i18n.dialog";
27     
28     private LabelWithMnemonic findLabel;
29     
30     private ButtonWithMnemonic findButton;
31     private ButtonWithMnemonic findNextButton;
32     private ButtonWithMnemonic closeButton;
33     
34     private CheckBoxWithMnemonic wholeWordCheckBox;
35     private CheckBoxWithMnemonic caseSensCheckBox;
36     private CheckBoxWithMnemonic findBackCheckBox;
37     
38     private JTextField JavaDoc findTextField;
39     
40     //private JTextPane textpane;
41
private IViewableText text;
42     
43     private FindReplace finder = new FindReplace();
44
45
46     public FindDialog(IViewableText text) {
47         setTitle(GlobalResourceLoader.getString(RESOURCE_PATH,"find","find.title"));
48         createComponents();
49         initComponents();
50         setResizable(false);
51         pack();
52         this.text = text;
53         setVisible(true);
54     }
55     
56     private void createComponents(){
57         
58         findLabel = new LabelWithMnemonic(GlobalResourceLoader.getString(RESOURCE_PATH,"find","findlabel"));
59         
60         findTextField = new JTextField JavaDoc(16);
61
62         wholeWordCheckBox = new CheckBoxWithMnemonic(GlobalResourceLoader.getString(RESOURCE_PATH,"find","matchword"));
63         caseSensCheckBox = new CheckBoxWithMnemonic(GlobalResourceLoader.getString(RESOURCE_PATH,"find","matchcase"));
64         findBackCheckBox = new CheckBoxWithMnemonic(GlobalResourceLoader.getString(RESOURCE_PATH,"find","findbackwards"));
65
66         findButton = new ButtonWithMnemonic(GlobalResourceLoader.getString(RESOURCE_PATH,"find","find"));
67         findNextButton = new ButtonWithMnemonic(GlobalResourceLoader.getString(RESOURCE_PATH,"find","findnext"));
68         closeButton = new ButtonWithMnemonic(GlobalResourceLoader.getString(RESOURCE_PATH,"find","close"));
69
70     }
71     private void initComponents(){
72         
73         FormLayout layout = new FormLayout("pref, 6dlu, pref", // columns
74
"pref, 3dlu, pref"); // rows
75

76         CellConstraints cc = new CellConstraints();
77         
78         JPanel JavaDoc panelMain = new JPanel JavaDoc(layout);
79         panelMain.setBorder(BorderFactory.createEmptyBorder(12,12,12,12));
80         
81
82         panelMain.add(createInputPanel(),cc.xy(1,1));
83         panelMain.add(createButtonPanel(),cc.xywh(3,1,1,3));
84         panelMain.add(createOptionPanel(),cc.xy(1,3));
85         
86         getContentPane().add(panelMain,BorderLayout.SOUTH);
87         getContentPane().add(
88                 new DialogHeaderPanel(GlobalResourceLoader.getString(RESOURCE_PATH,
89                         "find", "header_title"), GlobalResourceLoader
90                         .getString(RESOURCE_PATH, "find", "header_description"),
91                         ImageLoader.getIcon(IconKeys.SEARCH)),
92                 BorderLayout.NORTH);
93     }
94     
95     private JPanel JavaDoc createInputPanel(){
96         FormLayout layout = new FormLayout("left:pref, 6dlu, pref",
97                 "pref");
98         CellConstraints cc = new CellConstraints();
99         JPanel JavaDoc inputPanel = new JPanel JavaDoc(layout);
100         
101         inputPanel.add(findLabel,cc.xy(1,1));
102         findLabel.setLabelFor(findTextField);
103         inputPanel.add(findTextField,cc.xy(3,1));
104         
105         return inputPanel;
106     }
107     
108     private JPanel JavaDoc createOptionPanel(){
109         // create a panel with a border and 3 options
110
FormLayout layout = new FormLayout("3dlu, left:pref, 30dlu, right:pref, 3dlu", // columns
111
"pref, 3dlu, pref"); // rows
112

113         CellConstraints cc = new CellConstraints();
114         
115         JPanel JavaDoc optionPanel = new JPanel JavaDoc(layout);
116         optionPanel.setBorder(BorderFactory.createTitledBorder(GlobalResourceLoader.getString(RESOURCE_PATH,"findreplace","options")));
117     
118         optionPanel.add(caseSensCheckBox,cc.xy(2,1));
119         optionPanel.add(wholeWordCheckBox,cc.xywh(2,3,3,1));
120         optionPanel.add(findBackCheckBox,cc.xy(4,1));
121         
122         return optionPanel;
123     }
124
125     private JPanel JavaDoc createButtonPanel(){
126         // create a panel with all 4 buttons of the window
127
FormLayout layout = new FormLayout("fill:pref", // columns
128
"pref, 3dlu, pref, 3dlu, pref"); // rows
129
CellConstraints cc = new CellConstraints();
130         JPanel JavaDoc buttonPanel = new JPanel JavaDoc(layout);
131         
132         
133         findButton.addActionListener(this);
134         findButton.setActionCommand("FIND");
135
136         findNextButton.addActionListener(this);
137         findNextButton.setActionCommand("FINDNEXT");
138         this.getRootPane().setDefaultButton(findNextButton);
139         
140         closeButton.addActionListener(this);
141         closeButton.setActionCommand("CLOSE");
142
143         buttonPanel.add(findButton,cc.xy(1,1));
144         buttonPanel.add(findNextButton,cc.xy(1,3));
145         buttonPanel.add(closeButton,cc.xy(1,5));
146     
147         return buttonPanel;
148     }
149     
150     
151     public void actionPerformed(ActionEvent JavaDoc e) {
152         
153         // if some action was performed
154
String JavaDoc action = e.getActionCommand();
155         String JavaDoc source = new String JavaDoc("");
156         try {
157             source = text.getText();
158         } catch (NullPointerException JavaDoc e1)
159         {
160             if (!action.equals("CLOSE"))
161                 return;
162         }
163         
164         // get text where to find pattern
165
finder.setPattern(findTextField.getText());
166         finder.setSource(source);
167         finder.setCaseSensitive(caseSensCheckBox.isSelected());
168         finder.setMatchWholeWord(wholeWordCheckBox.isSelected());
169         finder.setBackwards(findBackCheckBox.isSelected());
170         
171         if (action.equals("FIND")) {
172         
173             // find pattern
174
int position = finder.find();
175
176             if(position>=0) {
177                 // mark found pattern
178
//text.grabFocus();
179
mark(position,position + findTextField.getText().length());
180             } else
181                 // delete marks
182
{
183                     mark(0, 0);
184                     JOptionPane.showMessageDialog(this, "String was not found!");
185                 }
186                 
187             
188         }
189         else if (action.equals("FINDNEXT")){
190             // get position of the pattern in the text
191
int position = finder.findnext();
192             
193             if(position>=0) {
194                 // mark found pattern (select)
195
//text.grabFocus();
196
mark(position,position + findTextField.getText().length());
197             } else
198                 // delete marks (unselect)
199
{
200                 mark(0, 0);
201                 JOptionPane.showMessageDialog(this, "String was not found!");
202             }
203         }
204         else if (action.equals("CLOSE")){
205             this.dispose();
206         }
207     }
208     
209     private void mark(int start, int end) {
210         text.setCaretPosition(start);
211         text.moveCaretPosition(end);
212     }
213 }
214
Popular Tags