KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > config > filter > FilterDialog


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.mail.gui.config.filter;
19
20 import java.awt.BorderLayout JavaDoc;
21 import java.awt.GridLayout JavaDoc;
22 import java.awt.event.ActionEvent JavaDoc;
23 import java.awt.event.ActionListener JavaDoc;
24 import java.awt.event.KeyEvent JavaDoc;
25
26 import javax.swing.BorderFactory JavaDoc;
27 import javax.swing.JButton JavaDoc;
28 import javax.swing.JComboBox JavaDoc;
29 import javax.swing.JComponent JavaDoc;
30 import javax.swing.JDialog JavaDoc;
31 import javax.swing.JFrame JavaDoc;
32 import javax.swing.JLabel JavaDoc;
33 import javax.swing.JPanel JavaDoc;
34 import javax.swing.JTextField JavaDoc;
35 import javax.swing.KeyStroke JavaDoc;
36 import javax.swing.SwingConstants JavaDoc;
37
38 import org.columba.api.gui.frame.IFrameMediator;
39 import org.columba.core.filter.Filter;
40 import org.columba.core.filter.FilterRule;
41 import org.columba.core.filter.IFilter;
42 import org.columba.core.filter.IFilterRule;
43 import org.columba.core.gui.base.ButtonWithMnemonic;
44 import org.columba.core.gui.base.LabelWithMnemonic;
45 import org.columba.core.gui.base.SingleSideEtchedBorder;
46 import org.columba.core.help.HelpManager;
47 import org.columba.core.resourceloader.IconKeys;
48 import org.columba.core.resourceloader.ImageLoader;
49 import org.columba.mail.util.MailResourceLoader;
50
51 import com.jgoodies.forms.builder.PanelBuilder;
52 import com.jgoodies.forms.layout.CellConstraints;
53 import com.jgoodies.forms.layout.FormLayout;
54
55
56 public class FilterDialog extends JDialog JavaDoc implements ActionListener JavaDoc {
57
58     private JTextField JavaDoc nameTextField;
59
60     private JButton JavaDoc addActionButton;
61
62     private IFilter filter;
63
64     private JFrame JavaDoc frame;
65
66     private CriteriaList criteriaList;
67
68     private ActionList actionList;
69
70     private JComboBox JavaDoc condList;
71
72     private IFrameMediator mediator;
73
74     private JLabel JavaDoc nameLabel;
75
76     private JLabel JavaDoc executeActionLabel;
77
78     private JButton JavaDoc addCriteriaButton;
79
80     /*
81      * private TitledBorderLabel m_titledborderlabel1 = new TitledBorderLabel();
82      *
83      * private TitledBorderLabel m_titledborderlabel2 = new TitledBorderLabel();
84      */

85
86     /**
87      * Boolean stating whetever the dialog was cancelled or not. Default value
88      * is <code>true</code>.
89      */

90     private boolean dialogWasCancelled = true;
91
92     public FilterDialog(IFrameMediator mediator, IFilter filter) {
93         super(mediator.getView().getFrame(), true);
94
95         this.mediator = mediator;
96
97         setTitle(MailResourceLoader.getString("dialog", "filter",
98                 "dialog_title"));
99         this.filter = filter;
100
101         // System.out.println("filternode name: " + filter.getName());
102
initComponents();
103         updateComponents(true);
104         pack();
105         setLocationRelativeTo(null);
106         setVisible(true);
107     }
108
109     private JPanel JavaDoc createPanel() {
110
111         FormLayout formlayout1 = new FormLayout(
112                 "FILL:DEFAULT:NONE,6DLU,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE",
113                 "CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,6DLU,CENTER:DEFAULT:NONE,3DLU,FILL:DEFAULT:GROW(1.0),6DLU,CENTER:DEFAULT:NONE,3DLU,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE");
114
115         CellConstraints cc = new CellConstraints();
116         PanelBuilder builder = new PanelBuilder(formlayout1);
117
118         builder.add(createPanel1(), cc.xywh(2, 2, 2, 1));
119
120         builder.addSeparator(MailResourceLoader.getString("dialog", "filter",
121                 "if"), cc.xywh(2, 4, 2, 1));
122
123         builder.add(createPanel2(), cc.xy(3, 6));
124
125         builder.addSeparator(MailResourceLoader.getString("dialog", "filter",
126                 "then"), cc.xywh(2, 8, 2, 1));
127
128         builder.add(createPanel3(), cc.xy(3, 10));
129
130         builder.setDefaultDialogBorder();
131
132         return builder.getPanel();
133     }
134
135     private JPanel JavaDoc createPanel1() {
136         JPanel JavaDoc jpanel1 = new JPanel JavaDoc();
137         FormLayout formlayout1 = new FormLayout(
138                 "LEFT:DEFAULT:NONE,3DLU,FILL:DEFAULT:GROW(1.0)",
139                 "FILL:DEFAULT:NONE");
140         CellConstraints cc = new CellConstraints();
141         jpanel1.setLayout(formlayout1);
142
143         jpanel1.add(nameLabel, cc.xy(1, 1));
144
145         jpanel1.add(nameTextField, cc.xy(3, 1));
146
147         return jpanel1;
148     }
149
150     private JPanel JavaDoc createPanel2() {
151         JPanel JavaDoc jpanel1 = new JPanel JavaDoc();
152         FormLayout formlayout1 = new FormLayout(
153                 "FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,3DLU,FILL:DEFAULT:NONE",
154                 "FILL:DEFAULT:NONE,3DLU,FILL:DEFAULT:GROW(1.0)");
155         CellConstraints cc = new CellConstraints();
156         jpanel1.setLayout(formlayout1);
157
158         // jpanel1.add(addCriteriaButton, cc.xy(1, 1));
159

160         jpanel1.add(executeActionLabel, cc.xy(3, 1));
161
162         jpanel1.add(condList, cc.xy(5, 1));
163
164         jpanel1.add(criteriaList, cc.xywh(1, 3, 5, 1));
165
166         return jpanel1;
167     }
168
169     private JPanel JavaDoc createPanel3() {
170         JPanel JavaDoc jpanel1 = new JPanel JavaDoc();
171         FormLayout formlayout1 = new FormLayout(
172                 "FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0)",
173                 "FILL:DEFAULT:NONE,3DLU,FILL:DEFAULT:GROW(1.0)");
174         CellConstraints cc = new CellConstraints();
175         jpanel1.setLayout(formlayout1);
176
177         // jpanel1.add(addActionButton, cc.xy(1, 1));
178

179         jpanel1.add(actionList, cc.xywh(1, 3, 2, 1));
180
181         return jpanel1;
182     }
183
184     private void initComponents() {
185         getContentPane().setLayout(new BorderLayout JavaDoc());
186
187         nameLabel = new LabelWithMnemonic(MailResourceLoader.getString(
188                 "dialog", "filter", "filter_description"));
189
190         nameTextField = new JTextField JavaDoc(22);
191         nameLabel.setLabelFor(nameTextField);
192
193         executeActionLabel = new LabelWithMnemonic(MailResourceLoader
194                 .getString("dialog", "filter", "execute_actions"));
195
196         String JavaDoc[] cond = {
197                 MailResourceLoader
198                         .getString("dialog", "filter", "all_criteria"),
199                 MailResourceLoader
200                         .getString("dialog", "filter", "any_criteria") };
201         condList = new JComboBox JavaDoc(cond);
202         executeActionLabel.setLabelFor(condList);
203
204         criteriaList = new CriteriaList(filter);
205
206         addCriteriaButton = new ButtonWithMnemonic(MailResourceLoader
207                 .getString("dialog", "filter", "add_criteria"));
208         addCriteriaButton.setIcon(ImageLoader.getIcon(IconKeys.LIST_ADD));
209         addCriteriaButton.addActionListener(this);
210         addCriteriaButton.setActionCommand("ADD_CRITERIA");
211
212         addActionButton = new ButtonWithMnemonic(MailResourceLoader.getString(
213                 "dialog", "filter", "add_action"));
214         addActionButton.setIcon(ImageLoader.getIcon(IconKeys.LIST_REMOVE));
215         addActionButton.addActionListener(this);
216         addActionButton.setActionCommand("ADD_ACTION");
217
218         actionList = new ActionList(mediator, filter, frame);
219
220         getContentPane().add(createPanel(), BorderLayout.CENTER);
221
222         createBottomPanel();
223     }
224
225     /**
226      *
227      */

228     private void createBottomPanel() {
229         JPanel JavaDoc bottomPanel = new JPanel JavaDoc(new BorderLayout JavaDoc());
230         bottomPanel.setBorder(new SingleSideEtchedBorder(SwingConstants.TOP));
231
232         JPanel JavaDoc buttonPanel = new JPanel JavaDoc(new GridLayout JavaDoc(1, 2, 6, 0));
233         buttonPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
234
235         ButtonWithMnemonic okButton = new ButtonWithMnemonic(MailResourceLoader
236                 .getString("global", "ok"));
237         okButton.setActionCommand("CLOSE"); //$NON-NLS-1$
238
okButton.addActionListener(this);
239         buttonPanel.add(okButton);
240
241         ButtonWithMnemonic cancelButton = new ButtonWithMnemonic(
242                 MailResourceLoader.getString("global", "cancel"));
243         cancelButton.setActionCommand("CANCEL"); //$NON-NLS-1$
244
cancelButton.addActionListener(this);
245         buttonPanel.add(cancelButton);
246
247         ButtonWithMnemonic helpButton = new ButtonWithMnemonic(
248                 MailResourceLoader.getString("global", "help"));
249         buttonPanel.add(helpButton);
250         bottomPanel.add(buttonPanel, BorderLayout.EAST);
251         getContentPane().add(bottomPanel, BorderLayout.SOUTH);
252         getRootPane().setDefaultButton(okButton);
253         getRootPane().registerKeyboardAction(this, "CANCEL",
254                 KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
255                 JComponent.WHEN_IN_FOCUSED_WINDOW);
256
257         // associate with JavaHelp
258
HelpManager.getInstance().enableHelpOnButton(helpButton,
259                 "organizing_and_managing_your_email_3");
260         HelpManager.getInstance().enableHelpKey(getRootPane(),
261                 "organizing_and_managing_your_email_3");
262     }
263
264     public void updateComponents(boolean b) {
265         if (b) {
266             // set component values
267
criteriaList.updateComponents(b);
268             actionList.updateComponents(b);
269
270             // filter description JTextField
271
nameTextField.setText(filter.getName());
272             nameTextField.selectAll();
273
274             // all / match any JComboBox
275
IFilterRule filterRule = filter.getFilterRule();
276             String JavaDoc value = filterRule.getCondition();
277
278             if (value.equals("matchall")) {
279                 condList.setSelectedIndex(0);
280             } else {
281                 condList.setSelectedIndex(1);
282             }
283         } else {
284             // get values from components
285
criteriaList.updateComponents(b);
286             actionList.updateComponents(b);
287
288             filter.setName(nameTextField.getText());
289
290             int index = condList.getSelectedIndex();
291             IFilterRule filterRule = filter.getFilterRule();
292
293             if (index == 0) {
294                 filterRule.setCondition("matchall");
295             } else {
296                 filterRule.setCondition("matchany");
297             }
298         }
299     }
300
301     public void actionPerformed(ActionEvent JavaDoc e) {
302         String JavaDoc action = e.getActionCommand();
303
304         if (action.equals("CLOSE")) {
305             updateComponents(false);
306             setVisible(false);
307
308             // frame.listView.update();
309
dialogWasCancelled = false;
310         } else if (action.equals("CANCEL")) {
311             setVisible(false);
312             dialogWasCancelled = true;
313         } else if (action.equals("ADD_CRITERION")) {
314             criteriaList.add();
315         } else if (action.equals("ADD_ACTION")) {
316             // System.out.println( "add" );
317
actionList.add();
318         }
319     }
320
321     /**
322      * Returns if the dialog was cancelled or not. The dialog is cancelled if
323      * the user presses the <code>Cancel</code> button or presses the
324      * <code>Escape</code> key.
325      *
326      * @return true if the user pressed the cancel button or escape; false
327      * otherwise.
328      */

329     public boolean wasCancelled() {
330         return dialogWasCancelled;
331     }
332 }
Popular Tags