KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > config > account > SecurityPanel


1 //The contents of this file are subject to the Mozilla Public License Version 1.1
2
//(the "License"); you may not use this file except in compliance with the
3
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
4
//
5
//Software distributed under the License is distributed on an "AS IS" basis,
6
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
7
//for the specific language governing rights and
8
//limitations under the License.
9
//
10
//The Original Code is "The Columba Project"
11
//
12
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14
//
15
//All Rights Reserved.
16

17 package org.columba.mail.gui.config.account;
18
19 import java.awt.Component JavaDoc;
20 import java.awt.event.ActionEvent JavaDoc;
21 import java.awt.event.ActionListener JavaDoc;
22 import java.io.File JavaDoc;
23
24 import javax.swing.JButton JavaDoc;
25 import javax.swing.JCheckBox JavaDoc;
26 import javax.swing.JComboBox JavaDoc;
27 import javax.swing.JFileChooser JavaDoc;
28 import javax.swing.JLabel JavaDoc;
29 import javax.swing.JTextField JavaDoc;
30
31 import org.columba.core.gui.base.CheckBoxWithMnemonic;
32 import org.columba.core.gui.base.LabelWithMnemonic;
33 import org.columba.mail.config.SecurityItem;
34 import org.columba.mail.util.MailResourceLoader;
35
36 import com.jgoodies.forms.builder.DefaultFormBuilder;
37 import com.jgoodies.forms.layout.FormLayout;
38
39 /**
40  * Shows PGP-related options.
41  */

42 public class SecurityPanel extends DefaultPanel implements ActionListener JavaDoc {
43     private JLabel JavaDoc idLabel;
44
45     private JTextField JavaDoc idTextField;
46
47     private JLabel JavaDoc typeLabel;
48
49     private JComboBox JavaDoc typeComboBox;
50
51     private JLabel JavaDoc pathLabel;
52
53     private JButton JavaDoc pathButton;
54
55     private JCheckBox JavaDoc enableCheckBox;
56
57     private JCheckBox JavaDoc alwaysSignCheckBox;
58
59     private JCheckBox JavaDoc alwaysEncryptCheckBox;
60
61     private SecurityItem item;
62
63     public SecurityPanel(SecurityItem item) {
64         super();
65         this.item = item;
66
67         initComponents();
68         updateComponents(true);
69         layoutComponents();
70
71         //enableCheckBox.setEnabled(false);
72
}
73
74     protected void updateComponents(boolean b) {
75         if (b) {
76             idTextField.setText(item.get(SecurityItem.ID));
77             pathButton.setText(item.get(SecurityItem.PATH));
78
79             enableCheckBox.setSelected(item.getBoolean(SecurityItem.ENABLED));
80
81             alwaysSignCheckBox.setSelected(item
82                     .getBoolean(SecurityItem.ALWAYS_SIGN));
83             alwaysEncryptCheckBox.setSelected(item
84                     .getBoolean(SecurityItem.ALWAYS_ENCRYPT));
85
86             enablePGP(enableCheckBox.isSelected());
87         } else {
88             item.setString(SecurityItem.ID, idTextField.getText());
89             item.setString(SecurityItem.PATH, pathButton.getText());
90
91             item.setBoolean(SecurityItem.ENABLED, enableCheckBox.isSelected());
92
93             item.setBoolean(SecurityItem.ALWAYS_SIGN, alwaysSignCheckBox
94                     .isSelected());
95             item.setBoolean(SecurityItem.ALWAYS_ENCRYPT, alwaysEncryptCheckBox
96                     .isSelected());
97         }
98     }
99
100     protected void layoutComponents() {
101         // Create a FormLayout instance.
102
FormLayout layout = new FormLayout(
103                 "10dlu, max(70dlu;default), 3dlu, fill:max(150dlu;default):grow ",
104
105                 // 2 columns
106
""); // rows are added dynamically (no need to define them here)
107

108         // create a form builder
109
DefaultFormBuilder builder = new DefaultFormBuilder(layout, this);
110
111         // create EmptyBorder between components and dialog-frame
112
builder.setDefaultDialogBorder();
113
114         // skip the first column
115
builder.setLeadingColumnOffset(1);
116
117         // Add components to the panel:
118
builder.appendSeparator(MailResourceLoader.getString("dialog",
119                 "account", "pgp_options"));
120         builder.nextLine();
121
122         builder.append(enableCheckBox, 3);
123         builder.nextLine();
124
125         builder.append(idLabel, 1);
126         builder.append(idTextField);
127         builder.nextLine();
128
129         builder.append(alwaysSignCheckBox, 3);
130         builder.nextLine();
131
132         // TODO: reactivate when feature is supported
133
/*
134          * builder.append(alwaysEncryptCheckBox, 3); builder.nextLine();
135          */

136     }
137
138     protected void initComponents() {
139         enableCheckBox = new CheckBoxWithMnemonic(MailResourceLoader.getString(
140                 "dialog", "account", "enable_PGP_Support"));
141         enableCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT);
142         enableCheckBox.setActionCommand("ENABLE");
143         enableCheckBox.addActionListener(this);
144
145         idLabel = new LabelWithMnemonic(MailResourceLoader.getString("dialog",
146                 "account", "User_ID"));
147
148         typeLabel = new JLabel JavaDoc(MailResourceLoader.getString("dialog",
149                 "account", "PGP_Version")); //$NON-NLS-1$
150

151         pathLabel = new JLabel JavaDoc(MailResourceLoader.getString("dialog",
152                 "account", "Path_to_Binary")); //$NON-NLS-1$
153

154         idTextField = new JTextField JavaDoc();
155
156         typeComboBox = new JComboBox JavaDoc();
157
158         //typeComboBox.setMargin( new Insets( 0,0,0,0 ) );
159
typeComboBox.insertItemAt("GnuPG", 0);
160         typeComboBox.insertItemAt("PGP2", 1);
161         typeComboBox.insertItemAt("PGP5", 2);
162         typeComboBox.insertItemAt("PGP6", 3);
163         typeComboBox.setSelectedIndex(0);
164         typeComboBox.setEnabled(false);
165
166         pathButton = new JButton JavaDoc();
167
168         //pathButton.setMargin( new Insets( 0,0,0,0 ) );
169
pathButton.setActionCommand("PATH");
170         pathButton.addActionListener(this);
171
172         alwaysSignCheckBox = new CheckBoxWithMnemonic(MailResourceLoader
173                 .getString("dialog", "account",
174                         "Always_sign_when_sending_messages"));
175         alwaysSignCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT);
176         alwaysSignCheckBox.setEnabled(false);
177
178         alwaysEncryptCheckBox = new CheckBoxWithMnemonic(
179                 MailResourceLoader
180                         .getString(
181                                 "dialog", "account", "Always_encrypt_when_sending_messages")); //$NON-NLS-1$
182
alwaysEncryptCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT);
183         alwaysEncryptCheckBox.setEnabled(false);
184     }
185
186     public void enablePGP(boolean b) {
187         //typeComboBox.setEnabled(b);
188
idTextField.setEnabled(b);
189         idLabel.setEnabled(b);
190         typeLabel.setEnabled(b);
191         pathLabel.setEnabled(b);
192         pathButton.setEnabled(b);
193         alwaysSignCheckBox.setEnabled(b);
194         alwaysEncryptCheckBox.setEnabled(b);
195     }
196
197     public void actionPerformed(ActionEvent JavaDoc e) {
198         String JavaDoc action = e.getActionCommand();
199
200         if (action.equals("ENABLE")) {
201             enablePGP(enableCheckBox.isSelected());
202         } else if (action.equals("PATH")) {
203             JFileChooser JavaDoc fileChooser = new JFileChooser JavaDoc();
204             fileChooser.setDialogTitle(MailResourceLoader.getString("dialog",
205                     "account", "PGP_Binary")); //$NON-NLS-1$
206
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
207
208             int returnVal = fileChooser.showDialog(null, MailResourceLoader
209                     .getString("dialog", "account", "Select_File")); //$NON-NLS-1$
210

211             if (returnVal == JFileChooser.APPROVE_OPTION) {
212                 File JavaDoc file = fileChooser.getSelectedFile();
213                 pathButton.setText(file.getPath());
214             }
215         }
216     }
217
218     public boolean isFinished() {
219         boolean result = true;
220
221         return result;
222     }
223 }
Popular Tags