OSDN Git Service

0ec767c2a79b5891f591dc02e818471d9965b130
[coroid/jnicoapi.git] / src / nicobrowser / gui / config / ConfigFrame.java
1 /* $Id$ */
2
3 /*
4  * ConfigFrame.java
5  *
6  * Created on 2009/11/30, 16:35:22
7  */
8 package nicobrowser.gui.config;
9
10 import java.io.IOException;
11 import java.util.logging.Level;
12 import java.util.logging.Logger;
13 import javax.swing.JFileChooser;
14 import javax.swing.JOptionPane;
15 import javax.swing.JTextField;
16 import javax.swing.UIManager;
17 import nicobrowser.Config;
18 import org.apache.commons.configuration.PropertiesConfiguration;
19 import org.apache.commons.io.FilenameUtils;
20
21 /**
22  *
23  * @author yuki
24  */
25 public class ConfigFrame extends javax.swing.JFrame {
26
27     private final Config config;
28
29     /** Creates new form ConfigFrame */
30     public ConfigFrame() {
31         initComponents();
32         configFileField.setText(Config.getConfigfile().getAbsolutePath());
33         feedFileField.setText(Config.getFeedUrlFile().getAbsolutePath());
34         config = Config.getInstance();
35
36         // ニコニコ動画アカウント
37         idField.setText(config.getNicoMail());
38         passField.setText(config.getNicoPassword());
39
40         // 保存先
41         String dbPath = FilenameUtils.getFullPathNoEndSeparator(config.getDbFile());
42         dbPathField.setText(dbPath);
43         flvPathField.setText(config.getSrcSaveDir());
44
45         // 動作
46         waitSpinner.setValue(config.getWaitTime());
47         retrySpinner.setValue(config.getMaxRetry());
48         lowDownloadCheckBox.setSelected(config.needLowFile());
49     }
50
51     /** This method is called from within the constructor to
52      * initialize the form.
53      * WARNING: Do NOT modify this code. The content of this method is
54      * always regenerated by the Form Editor.
55      */
56     @SuppressWarnings("unchecked")
57     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
58     private void initComponents() {
59
60         jPanel1 = new javax.swing.JPanel();
61         configFileField = new javax.swing.JTextField();
62         feedFileField = new javax.swing.JTextField();
63         configFileLabel = new javax.swing.JLabel();
64         feedFileLabel = new javax.swing.JLabel();
65         jLabel5 = new javax.swing.JLabel();
66         jPanel2 = new javax.swing.JPanel();
67         idLabel = new javax.swing.JLabel();
68         passLabel = new javax.swing.JLabel();
69         idField = new javax.swing.JTextField();
70         passField = new javax.swing.JPasswordField();
71         jPanel4 = new javax.swing.JPanel();
72         jLabel3 = new javax.swing.JLabel();
73         jLabel4 = new javax.swing.JLabel();
74         dbPathField = new javax.swing.JTextField();
75         flvPathField = new javax.swing.JTextField();
76         dbPathButton = new javax.swing.JButton();
77         flvPathButton = new javax.swing.JButton();
78         jPanel3 = new javax.swing.JPanel();
79         jLabel1 = new javax.swing.JLabel();
80         jLabel2 = new javax.swing.JLabel();
81         waitSpinner = new javax.swing.JSpinner();
82         retrySpinner = new javax.swing.JSpinner();
83         lowDownloadCheckBox = new javax.swing.JCheckBox();
84         jPanel5 = new javax.swing.JPanel();
85         savaButton = new javax.swing.JButton();
86         jPanel6 = new javax.swing.JPanel();
87         jTextField1 = new javax.swing.JTextField();
88         jScrollPane1 = new javax.swing.JScrollPane();
89         jTextArea1 = new javax.swing.JTextArea();
90
91         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
92         setTitle("NicoBrowser - コンフィグ設定");
93         setResizable(false);
94
95         jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("情報"));
96
97         configFileField.setEditable(false);
98
99         feedFileField.setEditable(false);
100
101         configFileLabel.setText("コンフィグ,マイリスト");
102
103         feedFileLabel.setText("フィード(RSS)");
104
105         jLabel5.setText("マイリスト、フィードの設定は上記のファイルを直接エディタで開いて編集してください");
106
107         org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
108         jPanel1.setLayout(jPanel1Layout);
109         jPanel1Layout.setHorizontalGroup(
110             jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
111             .add(jPanel1Layout.createSequentialGroup()
112                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
113                     .add(configFileLabel)
114                     .add(feedFileLabel))
115                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
116                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
117                     .add(feedFileField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
118                     .add(configFileField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)))
119             .add(jPanel1Layout.createSequentialGroup()
120                 .add(jLabel5)
121                 .addContainerGap())
122         );
123         jPanel1Layout.setVerticalGroup(
124             jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
125             .add(jPanel1Layout.createSequentialGroup()
126                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
127                     .add(configFileField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
128                     .add(configFileLabel))
129                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
130                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
131                     .add(feedFileField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
132                     .add(feedFileLabel))
133                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
134                 .add(jLabel5)
135                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
136         );
137
138         jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("ニコニコ動画アカウント"));
139
140         idLabel.setText("ID(メールアドレス)");
141
142         passLabel.setText("パスワード");
143
144         org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
145         jPanel2.setLayout(jPanel2Layout);
146         jPanel2Layout.setHorizontalGroup(
147             jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
148             .add(jPanel2Layout.createSequentialGroup()
149                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
150                     .add(idLabel)
151                     .add(passLabel))
152                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
153                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
154                     .add(passField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE)
155                     .add(idField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE)))
156         );
157         jPanel2Layout.setVerticalGroup(
158             jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
159             .add(jPanel2Layout.createSequentialGroup()
160                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
161                     .add(idLabel)
162                     .add(idField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
163                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
164                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
165                     .add(passLabel)
166                     .add(passField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
167         );
168
169         jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("保存先"));
170
171         jLabel3.setText("履歴DB");
172
173         jLabel4.setText("動画ファイル");
174
175         dbPathButton.setText("...");
176         dbPathButton.addActionListener(new java.awt.event.ActionListener() {
177             public void actionPerformed(java.awt.event.ActionEvent evt) {
178                 dbPathButtonActionPerformed(evt);
179             }
180         });
181
182         flvPathButton.setText("...");
183         flvPathButton.addActionListener(new java.awt.event.ActionListener() {
184             public void actionPerformed(java.awt.event.ActionEvent evt) {
185                 flvPathButtonActionPerformed(evt);
186             }
187         });
188
189         org.jdesktop.layout.GroupLayout jPanel4Layout = new org.jdesktop.layout.GroupLayout(jPanel4);
190         jPanel4.setLayout(jPanel4Layout);
191         jPanel4Layout.setHorizontalGroup(
192             jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
193             .add(jPanel4Layout.createSequentialGroup()
194                 .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
195                     .add(jLabel4)
196                     .add(jLabel3))
197                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
198                 .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
199                     .add(org.jdesktop.layout.GroupLayout.TRAILING, dbPathField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 356, Short.MAX_VALUE)
200                     .add(org.jdesktop.layout.GroupLayout.TRAILING, flvPathField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 356, Short.MAX_VALUE))
201                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
202                 .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
203                     .add(org.jdesktop.layout.GroupLayout.TRAILING, flvPathButton)
204                     .add(org.jdesktop.layout.GroupLayout.TRAILING, dbPathButton)))
205         );
206         jPanel4Layout.setVerticalGroup(
207             jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
208             .add(jPanel4Layout.createSequentialGroup()
209                 .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
210                     .add(jLabel3)
211                     .add(dbPathButton)
212                     .add(dbPathField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
213                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
214                 .add(jPanel4Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
215                     .add(jLabel4)
216                     .add(flvPathButton)
217                     .add(flvPathField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
218         );
219
220         jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("動作"));
221
222         jLabel1.setText("ダウンロード間隔(秒)");
223
224         jLabel2.setText("失敗時リトライ回数");
225
226         lowDownloadCheckBox.setText("エコノミー動画をダウンロードする");
227
228         org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3);
229         jPanel3.setLayout(jPanel3Layout);
230         jPanel3Layout.setHorizontalGroup(
231             jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
232             .add(jPanel3Layout.createSequentialGroup()
233                 .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
234                     .add(jPanel3Layout.createSequentialGroup()
235                         .add(jLabel1)
236                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
237                         .add(waitSpinner, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 46, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
238                     .add(jPanel3Layout.createSequentialGroup()
239                         .add(jLabel2)
240                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
241                         .add(retrySpinner)))
242                 .add(18, 18, 18)
243                 .add(lowDownloadCheckBox)
244                 .addContainerGap(124, Short.MAX_VALUE))
245         );
246         jPanel3Layout.setVerticalGroup(
247             jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
248             .add(jPanel3Layout.createSequentialGroup()
249                 .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
250                     .add(jLabel1)
251                     .add(waitSpinner, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
252                     .add(lowDownloadCheckBox))
253                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
254                 .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
255                     .add(jLabel2)
256                     .add(retrySpinner, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
257         );
258
259         jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
260
261         savaButton.setText("保存");
262         savaButton.addActionListener(new java.awt.event.ActionListener() {
263             public void actionPerformed(java.awt.event.ActionEvent evt) {
264                 savaButtonActionPerformed(evt);
265             }
266         });
267
268         org.jdesktop.layout.GroupLayout jPanel5Layout = new org.jdesktop.layout.GroupLayout(jPanel5);
269         jPanel5.setLayout(jPanel5Layout);
270         jPanel5Layout.setHorizontalGroup(
271             jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
272             .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel5Layout.createSequentialGroup()
273                 .addContainerGap(407, Short.MAX_VALUE)
274                 .add(savaButton))
275         );
276         jPanel5Layout.setVerticalGroup(
277             jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
278             .add(savaButton)
279         );
280
281         jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("ファイル名規則"));
282
283         jTextArea1.setColumns(20);
284         jTextArea1.setEditable(false);
285         jTextArea1.setLineWrap(true);
286         jTextArea1.setRows(5);
287         jTextArea1.setText("{title}: 動画タイトル\n{id}: ニコニコ動画ID\n{low}: エコノミー動画であれば\"low\"の文字列、通常動画は空文字列");
288         jScrollPane1.setViewportView(jTextArea1);
289
290         org.jdesktop.layout.GroupLayout jPanel6Layout = new org.jdesktop.layout.GroupLayout(jPanel6);
291         jPanel6.setLayout(jPanel6Layout);
292         jPanel6Layout.setHorizontalGroup(
293             jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
294             .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel6Layout.createSequentialGroup()
295                 .add(jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
296                     .add(org.jdesktop.layout.GroupLayout.LEADING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 452, Short.MAX_VALUE)
297                     .add(jTextField1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 452, Short.MAX_VALUE))
298                 .addContainerGap())
299         );
300         jPanel6Layout.setVerticalGroup(
301             jPanel6Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
302             .add(jPanel6Layout.createSequentialGroup()
303                 .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
304                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
305                 .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 71, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
306         );
307
308         org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
309         getContentPane().setLayout(layout);
310         layout.setHorizontalGroup(
311             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
312             .add(layout.createSequentialGroup()
313                 .add(jPanel5, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
314                 .addContainerGap())
315             .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
316                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
317                     .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
318                     .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
319                     .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
320                     .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
321                     .add(jPanel3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
322                 .addContainerGap())
323         );
324         layout.setVerticalGroup(
325             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
326             .add(layout.createSequentialGroup()
327                 .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
328                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
329                 .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
330                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
331                 .add(jPanel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
332                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
333                 .add(jPanel6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
334                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
335                 .add(jPanel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
336                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
337                 .add(jPanel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
338                 .addContainerGap())
339         );
340
341         pack();
342     }// </editor-fold>//GEN-END:initComponents
343
344     private void dbPathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dbPathButtonActionPerformed
345         setPathField(dbPathField);
346     }//GEN-LAST:event_dbPathButtonActionPerformed
347
348     private void flvPathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_flvPathButtonActionPerformed
349         setPathField(flvPathField);
350     }//GEN-LAST:event_flvPathButtonActionPerformed
351
352     private void savaButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_savaButtonActionPerformed
353         PropertiesConfiguration p = new PropertiesConfiguration();
354
355         p.setProperty(Config.P_NICOVIDEO_MAIL, idField.getText());
356         p.setProperty(Config.P_NICOVIDEO_PASSWORD, String.valueOf(passField.getPassword()));
357
358         p.setProperty(Config.P_PATH_DB, dbPathField.getText());
359         p.setProperty(Config.P_PATH_SAVEFILE, flvPathField.getText());
360
361         p.setProperty(Config.P_DOWNLOAD_WAIT, waitSpinner.getValue().toString());
362         p.setProperty(Config.P_DOWNLOAD_RETRY, retrySpinner.getValue().toString());
363         p.setProperty(Config.P_DOWNLOAD_LOW, Boolean.toString(lowDownloadCheckBox.isSelected()));
364         try {
365             config.updateConfigFile(p);
366             JOptionPane.showMessageDialog(this, Config.getConfigfile().getAbsolutePath() + "\nを更新しました");
367         } catch (IOException ex) {
368             Logger.getLogger(ConfigFrame.class.getName()).log(Level.SEVERE, null, ex);
369             JOptionPane.showMessageDialog(this, "保存に失敗しました", "エラー", JOptionPane.ERROR_MESSAGE);
370         }
371     }//GEN-LAST:event_savaButtonActionPerformed
372
373     private void setPathField(JTextField field) {
374         String current = field.getText();
375         JFileChooser fc = new JFileChooser(current);
376         fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
377         int ret = fc.showDialog(this, "選択");
378         if (ret == JFileChooser.APPROVE_OPTION) {
379             String selectPath = fc.getSelectedFile().getAbsolutePath();
380             field.setText(selectPath);
381         }
382     }
383
384     /**
385      * @param args the command line arguments
386      */
387     public static void main(String args[]) {
388         setLookAndFeel();
389         java.awt.EventQueue.invokeLater(new Runnable() {
390
391             public void run() {
392                 new ConfigFrame().setVisible(true);
393             }
394         });
395     }
396
397     public static void setLookAndFeel() {
398         UIManager.LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();
399         String lafClassName = UIManager.getSystemLookAndFeelClassName();
400         try {
401             UIManager.setLookAndFeel(lafClassName);
402         } catch (Exception ex) {
403         }
404     }
405     // Variables declaration - do not modify//GEN-BEGIN:variables
406     private javax.swing.JTextField configFileField;
407     private javax.swing.JLabel configFileLabel;
408     private javax.swing.JButton dbPathButton;
409     private javax.swing.JTextField dbPathField;
410     private javax.swing.JTextField feedFileField;
411     private javax.swing.JLabel feedFileLabel;
412     private javax.swing.JButton flvPathButton;
413     private javax.swing.JTextField flvPathField;
414     private javax.swing.JTextField idField;
415     private javax.swing.JLabel idLabel;
416     private javax.swing.JLabel jLabel1;
417     private javax.swing.JLabel jLabel2;
418     private javax.swing.JLabel jLabel3;
419     private javax.swing.JLabel jLabel4;
420     private javax.swing.JLabel jLabel5;
421     private javax.swing.JPanel jPanel1;
422     private javax.swing.JPanel jPanel2;
423     private javax.swing.JPanel jPanel3;
424     private javax.swing.JPanel jPanel4;
425     private javax.swing.JPanel jPanel5;
426     private javax.swing.JPanel jPanel6;
427     private javax.swing.JScrollPane jScrollPane1;
428     private javax.swing.JTextArea jTextArea1;
429     private javax.swing.JTextField jTextField1;
430     private javax.swing.JCheckBox lowDownloadCheckBox;
431     private javax.swing.JPasswordField passField;
432     private javax.swing.JLabel passLabel;
433     private javax.swing.JSpinner retrySpinner;
434     private javax.swing.JButton savaButton;
435     private javax.swing.JSpinner waitSpinner;
436     // End of variables declaration//GEN-END:variables
437 }