OSDN Git Service

56bfdaea38df0638f0dbb97a9948f90cb6527521
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / gui / ConfigDialog.java
1 /*
2  * Properties.java
3  *
4  * Created on 2011/08/20, 16:33:03
5  */
6 package yukihane.inqubus.gui;
7
8 import java.util.Arrays;
9 import java.util.List;
10 import javax.swing.BorderFactory;
11 import javax.swing.ButtonGroup;
12 import javax.swing.DefaultComboBoxModel;
13 import javax.swing.DefaultListModel;
14 import javax.swing.GroupLayout;
15 import javax.swing.GroupLayout.Alignment;
16 import javax.swing.JButton;
17 import javax.swing.JCheckBox;
18 import javax.swing.JComboBox;
19 import javax.swing.JDialog;
20 import javax.swing.JFrame;
21 import javax.swing.JLabel;
22 import javax.swing.JList;
23 import javax.swing.JPanel;
24 import javax.swing.JRadioButton;
25 import javax.swing.JScrollPane;
26 import javax.swing.JTabbedPane;
27 import javax.swing.JTextField;
28 import javax.swing.LayoutStyle.ComponentPlacement;
29 import javax.swing.UIManager;
30 import javax.swing.UnsupportedLookAndFeelException;
31 import javax.swing.WindowConstants;
32 import yukihane.inqubus.Config;
33
34 /**
35  *
36  * @author yuki
37  */
38 public class ConfigDialog extends JDialog {
39     private static final long serialVersionUID = 1L;
40
41     /** Creates new form Properties */
42     public ConfigDialog() {
43         this(null);
44     }
45
46     public ConfigDialog(JFrame owner){
47         super(owner);
48
49         final ButtonGroup buttonGroup1 = new ButtonGroup();
50         final JTabbedPane tabbedPane = new JTabbedPane();
51         final JPanel pnlNetwork = new JPanel();
52         final JPanel pnlAccount = new JPanel();
53         final JLabel lblMail = new JLabel();
54         fldMail = new JTextField();
55         final JLabel lblPassword = new JLabel();
56         fldPassword = new JTextField();
57         final JPanel pnlProxy = new JPanel();
58         cbProxyUse = new JCheckBox();
59         final JLabel lblProxyHost = new JLabel();
60         final JLabel lblProxyPort = new JLabel();
61         fldProxyHost = new JTextField();
62         fldProxyPort = new JTextField();
63         final JPanel pnlFile = new JPanel();
64         final JPanel pnlFileVideo = new JPanel();
65         final JLabel lblVideoDir = new JLabel();
66         final JLabel lblVideoFileNamepattern = new JLabel();
67         fldVideoDir = new JTextField();
68         fldVideoFileNamePattern = new JTextField();
69         btnVideoDir = new JButton();
70         cbVideoLocal = new JCheckBox();
71         final JPanel pnlFileComment = new JPanel();
72         final JLabel lblCommentDir = new JLabel();
73         final JLabel lblCommentFileNamePattern = new JLabel();
74         fldCommentDir = new JTextField();
75         fldCommentFileNamePattern = new JTextField();
76         btnCommentDir = new JButton();
77         cbCommentLocal = new JCheckBox();
78         final JPanel pnlFileOutput = new JPanel();
79         final JLabel lblOutputDir = new JLabel();
80         final JLabel lblOutputFileNamePattern = new JLabel();
81         fldOutputDir = new JTextField();
82         fldOutputFileNamePattern = new JTextField();
83         btnOutputDir = new JButton();
84         cbOutputEnable = new JCheckBox();
85         cbOutputCommentOverlay = new JCheckBox();
86         cbOutputDisplayProgress = new JCheckBox();
87         final JPanel pnlComment = new JPanel();
88         final JPanel pnlCommentStandard = new JPanel();
89         final JLabel lblCommentSize = new JLabel();
90         cbCommentSizeAuto = new JCheckBox();
91         final JLabel lblCommentSizeManual = new JLabel();
92         fldCommentSizeManual = new JTextField();
93         final JLabel lblCommentMinSize = new JLabel();
94         cbCommentMinSizeAuto = new JCheckBox();
95         fldCommentMinSizeManual = new JTextField();
96         final JLabel lblCommentMinSizeManual = new JLabel();
97         final JLabel lblCommentDisplayMax = new JLabel();
98         cbCommentDisplaySizeDefault = new JCheckBox();
99         final JLabel lblCommentDisplayMaxManual = new JLabel();
100         fldCommentDisplaySizeManual = new JTextField();
101         final JPanel pnlCommentAdvanced = new JPanel();
102         final JLabel lblFontPath = new JLabel();
103         cbFontSizeArrangeDisable = new JCheckBox();
104         cbCommentOpaque = new JCheckBox();
105         fldFontPath = new JTextField();
106         btnFontPath = new JButton();
107         final JLabel lblFontIndex = new JLabel();
108         final JLabel lblFontShadow = new JLabel();
109         fldFontIndex = new JTextField();
110         final JPanel pnlFfmpeg = new JPanel();
111         final JPanel jPanel10 = new JPanel();
112         final JLabel lblFfmpegPath = new JLabel();
113         final JLabel lblFfmpegDllPath = new JLabel();
114         fldFfmpegPath = new JTextField();
115         fldFfmpegDllPath = new JTextField();
116         btnFfmpegPath = new JButton();
117         btnFfmpegDllPath = new JButton();
118         final JPanel pnlFfmpegParam = new JPanel();
119         rbFfmpegOptionFile = new JRadioButton();
120         rbFfmpegOptionDirectInput = new JRadioButton();
121         cmbFfmpegOptionFile = new JComboBox();
122         final JPanel pnlFfmpegParamOption = new JPanel();
123         final JLabel lblFfmpegOptionExtension = new JLabel();
124         final JLabel lblFfmpegOptionMain = new JLabel();
125         final JLabel lblFfmpegOptionIn = new JLabel();
126         final JLabel lblFfmpegOptionOut = new JLabel();
127         final JLabel lblFfmpegOptionAvfilter = new JLabel();
128         cbFfmpegOptionResize = new JCheckBox();
129         final JLabel lblFfmpegOptionResizeWidth = new JLabel();
130         fldFfmpegOptionResizeWidth = new JTextField();
131         final JLabel lblFfmpegOptionResizeHeight = new JLabel();
132         fldFfmpegOptionResizeHeight = new JTextField();
133         cbFfmpegOptionKeepAspect = new JCheckBox();
134         fldFfmpegOptionExtension = new JTextField();
135         fldFfmpegOptionMain = new JTextField();
136         fldFfmpegOptionIn = new JTextField();
137         fldFfmpegOptionOut = new JTextField();
138         fldFfmpegOptionAv = new JTextField();
139         final JPanel pnlNgSetting = new JPanel();
140         final JPanel pnlNgWord = new JPanel();
141         final JScrollPane scrNgWord = new JScrollPane();
142         lstNgWord = new JList<>();
143         fldNgWord = new JTextField();
144         btnNgWordAdd = new JButton();
145         btnNgWordDel = new JButton();
146         final JPanel pnlNgId = new JPanel();
147         final JScrollPane scrNgId = new JScrollPane();
148         lstNgId = new JList<>();
149         fldNgId = new JTextField();
150         btnNgIdAdd = new JButton();
151         btnNgIdDel = new JButton();
152         final JPanel pnlSearch = new JPanel();
153         final JPanel pnlSearchVideo = new JPanel();
154         final JScrollPane srcSearchVideo = new JScrollPane();
155         lstSearchVideo = new JList<>();
156         btnSearchVideoAdd = new JButton();
157         btnSearchVideoDel = new JButton();
158         final JPanel pnlSearchComment = new JPanel();
159         final JScrollPane srcSearchComment = new JScrollPane();
160         lstSearchComment = new JList<>();
161         btnSearchCommentAdd = new JButton();
162         btnSearchCommentDel = new JButton();
163         final JPanel pnlSearchCache = new JPanel();
164         final JLabel lblSearchCache = new JLabel();
165         fldSearchCache = new JTextField();
166
167         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
168
169         pnlNetwork.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
170
171         pnlAccount.setBorder(BorderFactory.createTitledBorder("アカウント"));
172
173         lblMail.setText("ID(メールアドレス)");
174
175         lblPassword.setText("パスワード");
176
177         GroupLayout gl_pnlAccount = new GroupLayout(pnlAccount);
178         pnlAccount.setLayout(gl_pnlAccount);
179         gl_pnlAccount.setHorizontalGroup(
180             gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
181             .addGroup(gl_pnlAccount.createSequentialGroup()
182                 .addContainerGap()
183                 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
184                     .addComponent(lblMail)
185                     .addComponent(lblPassword))
186                 .addPreferredGap(ComponentPlacement.RELATED)
187                 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
188                     .addComponent(fldPassword, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE)
189                     .addComponent(fldMail, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE))
190                 .addContainerGap())
191         );
192         gl_pnlAccount.setVerticalGroup(
193             gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
194             .addGroup(gl_pnlAccount.createSequentialGroup()
195                 .addContainerGap()
196                 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.BASELINE)
197                     .addComponent(lblMail)
198                     .addComponent(fldMail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
199                 .addPreferredGap(ComponentPlacement.RELATED)
200                 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.BASELINE)
201                     .addComponent(lblPassword)
202                     .addComponent(fldPassword, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
203                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
204         );
205
206         pnlProxy.setBorder(BorderFactory.createTitledBorder("プロキシ"));
207
208         cbProxyUse.setText("プロキシを使用する");
209
210         lblProxyHost.setText("ホスト名");
211
212         lblProxyPort.setText("ポート番号");
213
214         GroupLayout gl_pnlProxy = new GroupLayout(pnlProxy);
215         pnlProxy.setLayout(gl_pnlProxy);
216         gl_pnlProxy.setHorizontalGroup(
217             gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
218             .addGroup(gl_pnlProxy.createSequentialGroup()
219                 .addContainerGap()
220                 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
221                     .addComponent(cbProxyUse)
222                     .addGroup(gl_pnlProxy.createSequentialGroup()
223                         .addComponent(lblProxyHost)
224                         .addGap(18, 18, 18)
225                         .addComponent(fldProxyHost, GroupLayout.PREFERRED_SIZE, 168, GroupLayout.PREFERRED_SIZE))
226                     .addGroup(gl_pnlProxy.createSequentialGroup()
227                         .addComponent(lblProxyPort)
228                         .addPreferredGap(ComponentPlacement.RELATED)
229                         .addComponent(fldProxyPort, GroupLayout.PREFERRED_SIZE, 76, GroupLayout.PREFERRED_SIZE)))
230                 .addContainerGap(181, Short.MAX_VALUE))
231         );
232         gl_pnlProxy.setVerticalGroup(
233             gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
234             .addGroup(gl_pnlProxy.createSequentialGroup()
235                 .addContainerGap()
236                 .addComponent(cbProxyUse)
237                 .addPreferredGap(ComponentPlacement.RELATED)
238                 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.BASELINE)
239                     .addComponent(lblProxyHost)
240                     .addComponent(fldProxyHost, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
241                 .addPreferredGap(ComponentPlacement.RELATED)
242                 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.BASELINE)
243                     .addComponent(lblProxyPort)
244                     .addComponent(fldProxyPort, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
245                 .addContainerGap(39, Short.MAX_VALUE))
246         );
247
248         GroupLayout gl_pnlNetwork = new GroupLayout(pnlNetwork);
249         pnlNetwork.setLayout(gl_pnlNetwork);
250         gl_pnlNetwork.setHorizontalGroup(
251             gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.LEADING)
252             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNetwork.createSequentialGroup()
253                 .addContainerGap()
254                 .addGroup(gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.TRAILING)
255                     .addComponent(pnlProxy, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
256                     .addComponent(pnlAccount, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
257                 .addContainerGap())
258         );
259         gl_pnlNetwork.setVerticalGroup(
260             gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.LEADING)
261             .addGroup(gl_pnlNetwork.createSequentialGroup()
262                 .addContainerGap()
263                 .addComponent(pnlAccount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
264                 .addPreferredGap(ComponentPlacement.RELATED)
265                 .addComponent(pnlProxy, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
266                 .addContainerGap(178, Short.MAX_VALUE))
267         );
268
269         tabbedPane.addTab("ネットワーク", pnlNetwork);
270
271         pnlFileVideo.setBorder(BorderFactory.createTitledBorder("動画"));
272
273         lblVideoDir.setText("保存フォルダ");
274
275         lblVideoFileNamepattern.setText("ファイル名規則");
276
277         btnVideoDir.setText("...");
278
279         cbVideoLocal.setText("local");
280
281         GroupLayout gl_pnlFileVideo = new GroupLayout(pnlFileVideo);
282         pnlFileVideo.setLayout(gl_pnlFileVideo);
283         gl_pnlFileVideo.setHorizontalGroup(
284             gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
285             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileVideo.createSequentialGroup()
286                 .addContainerGap()
287                 .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
288                     .addComponent(lblVideoFileNamepattern)
289                     .addComponent(lblVideoDir))
290                 .addPreferredGap(ComponentPlacement.RELATED)
291                 .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
292                     .addGroup(gl_pnlFileVideo.createSequentialGroup()
293                         .addComponent(fldVideoDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
294                         .addPreferredGap(ComponentPlacement.RELATED)
295                         .addComponent(btnVideoDir))
296                     .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileVideo.createSequentialGroup()
297                         .addComponent(fldVideoFileNamePattern, GroupLayout.PREFERRED_SIZE, 165, GroupLayout.PREFERRED_SIZE)
298                         .addPreferredGap(ComponentPlacement.RELATED, 94, Short.MAX_VALUE)
299                         .addComponent(cbVideoLocal)))
300                 .addContainerGap())
301         );
302         gl_pnlFileVideo.setVerticalGroup(
303             gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
304             .addGroup(gl_pnlFileVideo.createSequentialGroup()
305                 .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
306                     .addComponent(lblVideoDir)
307                     .addComponent(fldVideoDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
308                     .addComponent(btnVideoDir))
309                 .addPreferredGap(ComponentPlacement.RELATED)
310                 .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
311                     .addComponent(lblVideoFileNamepattern)
312                     .addComponent(fldVideoFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
313                     .addComponent(cbVideoLocal))
314                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
315         );
316
317         pnlFileComment.setBorder(BorderFactory.createTitledBorder("コメント"));
318
319         lblCommentDir.setText("保存フォルダ");
320
321         lblCommentFileNamePattern.setText("ファイル名規則");
322
323         btnCommentDir.setText("...");
324
325         cbCommentLocal.setText("local");
326
327         GroupLayout gl_pnlFileComment = new GroupLayout(pnlFileComment);
328         pnlFileComment.setLayout(gl_pnlFileComment);
329         gl_pnlFileComment.setHorizontalGroup(
330             gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
331             .addGroup(gl_pnlFileComment.createSequentialGroup()
332                 .addContainerGap()
333                 .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
334                     .addComponent(lblCommentFileNamePattern)
335                     .addComponent(lblCommentDir))
336                 .addPreferredGap(ComponentPlacement.RELATED)
337                 .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
338                     .addGroup(gl_pnlFileComment.createSequentialGroup()
339                         .addComponent(fldCommentFileNamePattern, GroupLayout.PREFERRED_SIZE, 166, GroupLayout.PREFERRED_SIZE)
340                         .addPreferredGap(ComponentPlacement.RELATED, 93, Short.MAX_VALUE)
341                         .addComponent(cbCommentLocal))
342                     .addGroup(gl_pnlFileComment.createSequentialGroup()
343                         .addComponent(fldCommentDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
344                         .addPreferredGap(ComponentPlacement.RELATED)
345                         .addComponent(btnCommentDir)))
346                 .addContainerGap())
347         );
348         gl_pnlFileComment.setVerticalGroup(
349             gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
350             .addGroup(gl_pnlFileComment.createSequentialGroup()
351                 .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
352                     .addComponent(lblCommentDir)
353                     .addComponent(fldCommentDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
354                     .addComponent(btnCommentDir))
355                 .addPreferredGap(ComponentPlacement.RELATED)
356                 .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
357                     .addComponent(lblCommentFileNamePattern)
358                     .addComponent(fldCommentFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
359                     .addComponent(cbCommentLocal))
360                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
361         );
362
363         pnlFileOutput.setBorder(BorderFactory.createTitledBorder("変換動画"));
364
365         lblOutputDir.setText("保存フォルダ");
366
367         lblOutputFileNamePattern.setText("ファイル名規則");
368
369         btnOutputDir.setText("...");
370
371         cbOutputEnable.setText("変換");
372
373         cbOutputCommentOverlay.setText("コメント付与");
374
375         cbOutputDisplayProgress.setText("変換中動画表示");
376
377         GroupLayout gl_pnlFileOutput = new GroupLayout(pnlFileOutput);
378         pnlFileOutput.setLayout(gl_pnlFileOutput);
379         gl_pnlFileOutput.setHorizontalGroup(
380             gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
381             .addGroup(gl_pnlFileOutput.createSequentialGroup()
382                 .addContainerGap()
383                 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
384                     .addComponent(lblOutputFileNamePattern)
385                     .addComponent(lblOutputDir))
386                 .addPreferredGap(ComponentPlacement.RELATED)
387                 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
388                     .addGroup(gl_pnlFileOutput.createSequentialGroup()
389                         .addComponent(fldOutputDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
390                         .addPreferredGap(ComponentPlacement.RELATED)
391                         .addComponent(btnOutputDir)
392                         .addContainerGap())
393                     .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileOutput.createSequentialGroup()
394                         .addComponent(fldOutputFileNamePattern, GroupLayout.PREFERRED_SIZE, 167, GroupLayout.PREFERRED_SIZE)
395                         .addPreferredGap(ComponentPlacement.RELATED, 23, Short.MAX_VALUE)
396                         .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
397                             .addComponent(cbOutputDisplayProgress)
398                             .addGroup(gl_pnlFileOutput.createSequentialGroup()
399                                 .addComponent(cbOutputEnable)
400                                 .addPreferredGap(ComponentPlacement.RELATED)
401                                 .addComponent(cbOutputCommentOverlay))))))
402         );
403         gl_pnlFileOutput.setVerticalGroup(
404             gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
405             .addGroup(gl_pnlFileOutput.createSequentialGroup()
406                 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.BASELINE)
407                     .addComponent(lblOutputDir)
408                     .addComponent(fldOutputDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
409                     .addComponent(btnOutputDir))
410                 .addPreferredGap(ComponentPlacement.RELATED)
411                 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.BASELINE)
412                     .addComponent(lblOutputFileNamePattern)
413                     .addComponent(fldOutputFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
414                     .addComponent(cbOutputCommentOverlay)
415                     .addComponent(cbOutputEnable))
416                 .addPreferredGap(ComponentPlacement.RELATED)
417                 .addComponent(cbOutputDisplayProgress)
418                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
419         );
420
421         GroupLayout gl_pnlFile = new GroupLayout(pnlFile);
422         pnlFile.setLayout(gl_pnlFile);
423         gl_pnlFile.setHorizontalGroup(
424             gl_pnlFile.createParallelGroup(GroupLayout.Alignment.LEADING)
425             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFile.createSequentialGroup()
426                 .addContainerGap()
427                 .addGroup(gl_pnlFile.createParallelGroup(GroupLayout.Alignment.TRAILING)
428                     .addComponent(pnlFileOutput, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
429                     .addComponent(pnlFileVideo, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
430                     .addComponent(pnlFileComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
431                 .addContainerGap())
432         );
433         gl_pnlFile.setVerticalGroup(
434             gl_pnlFile.createParallelGroup(GroupLayout.Alignment.LEADING)
435             .addGroup(gl_pnlFile.createSequentialGroup()
436                 .addContainerGap()
437                 .addComponent(pnlFileVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
438                 .addPreferredGap(ComponentPlacement.RELATED)
439                 .addComponent(pnlFileComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
440                 .addPreferredGap(ComponentPlacement.RELATED)
441                 .addComponent(pnlFileOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
442                 .addContainerGap())
443         );
444
445         tabbedPane.addTab("ファイル", pnlFile);
446
447         pnlCommentStandard.setBorder(BorderFactory.createTitledBorder(""));
448
449         lblCommentSize.setText("再生時間に応じたコメントの取得数");
450
451         cbCommentSizeAuto.setText("自動調整");
452
453         lblCommentSizeManual.setText("手動取得");
454
455         lblCommentMinSize.setText("1分当たりのコメント取得数");
456
457         cbCommentMinSizeAuto.setText("自動調整");
458
459         lblCommentMinSizeManual.setText("手動取得");
460
461         lblCommentDisplayMax.setText("1画面に表示する最大コメント数");
462
463         cbCommentDisplaySizeDefault.setText("標準(30)");
464
465         lblCommentDisplayMaxManual.setText("手動設定");
466
467         GroupLayout gl_pnlCommentStandard = new GroupLayout(pnlCommentStandard);
468         pnlCommentStandard.setLayout(gl_pnlCommentStandard);
469         gl_pnlCommentStandard.setAutoCreateContainerGaps(true);
470         gl_pnlCommentStandard.setAutoCreateGaps(true);
471         gl_pnlCommentStandard.setHorizontalGroup(
472             gl_pnlCommentStandard.createSequentialGroup()
473                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
474                     .addComponent(lblCommentSize)
475                     .addComponent(lblCommentMinSize)
476                     .addComponent(lblCommentDisplayMax))
477                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
478                     .addComponent(cbCommentSizeAuto)
479                     .addComponent(cbCommentMinSizeAuto)
480                     .addComponent(cbCommentDisplaySizeDefault))
481                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
482                     .addComponent(lblCommentSizeManual)
483                     .addComponent(lblCommentMinSizeManual)
484                     .addComponent(lblCommentDisplayMaxManual))
485                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
486                     .addComponent(fldCommentSizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
487                     .addComponent(fldCommentMinSizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
488                     .addComponent(fldCommentDisplaySizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
489         );
490         gl_pnlCommentStandard.setVerticalGroup(
491             gl_pnlCommentStandard.createSequentialGroup()
492                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
493                     .addComponent(lblCommentSize)
494                     .addComponent(cbCommentSizeAuto)
495                     .addComponent(lblCommentSizeManual)
496                     .addComponent(fldCommentSizeManual))
497                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
498                     .addComponent(lblCommentMinSize)
499                     .addComponent(cbCommentMinSizeAuto)
500                     .addComponent(lblCommentMinSizeManual)
501                     .addComponent(fldCommentMinSizeManual))
502                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
503                     .addComponent(lblCommentDisplayMax)
504                     .addComponent(cbCommentDisplaySizeDefault)
505                     .addComponent(lblCommentDisplayMaxManual)
506                     .addComponent(fldCommentDisplaySizeManual))
507         );
508
509         pnlCommentAdvanced.setBorder(BorderFactory.createTitledBorder("高度な設定"));
510
511         lblFontPath.setText("フォントパス");
512
513         cbFontSizeArrangeDisable.setText("フォントサイズ調整を行わない");
514
515         cbCommentOpaque.setText("コメント透明化を行わない");
516
517         btnFontPath.setText("...");
518
519         lblFontIndex.setText("フォント番号");
520
521         lblFontShadow.setText("影の種類");
522
523         GroupLayout gl_pnlCommentAdvanced = new GroupLayout(pnlCommentAdvanced);
524         pnlCommentAdvanced.setLayout(gl_pnlCommentAdvanced);
525         gl_pnlCommentAdvanced.setHorizontalGroup(
526             gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
527             .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
528                 .addContainerGap()
529                 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
530                     .addComponent(cbCommentOpaque)
531                     .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
532                         .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
533                             .addComponent(lblFontPath)
534                             .addComponent(lblFontIndex)
535                             .addComponent(lblFontShadow))
536                         .addGap(18, 18, 18)
537                         .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
538                             .addComponent(fldFontPath, GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)
539                             .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
540                                 .addComponent(cmbFontShadow, GroupLayout.Alignment.LEADING)
541                                 .addComponent(fldFontIndex, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 48, Short.MAX_VALUE)))
542                         .addPreferredGap(ComponentPlacement.RELATED)
543                         .addComponent(btnFontPath))
544                     .addComponent(cbFontSizeArrangeDisable))
545                 .addContainerGap())
546         );
547         gl_pnlCommentAdvanced.setVerticalGroup(
548             gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
549             .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
550                 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
551                     .addComponent(lblFontPath)
552                     .addComponent(fldFontPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
553                     .addComponent(btnFontPath))
554                 .addPreferredGap(ComponentPlacement.RELATED)
555                 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
556                     .addComponent(lblFontIndex)
557                     .addComponent(fldFontIndex, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
558                 .addPreferredGap(ComponentPlacement.RELATED)
559                 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
560                     .addComponent(lblFontShadow)
561                     .addComponent(cmbFontShadow, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
562                 .addPreferredGap(ComponentPlacement.RELATED)
563                 .addComponent(cbFontSizeArrangeDisable)
564                 .addPreferredGap(ComponentPlacement.RELATED)
565                 .addComponent(cbCommentOpaque)
566                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
567         );
568
569         GroupLayout gl_pnlComment = new GroupLayout(pnlComment);
570         pnlComment.setLayout(gl_pnlComment);
571         gl_pnlComment.setHorizontalGroup(
572             gl_pnlComment.createParallelGroup(GroupLayout.Alignment.LEADING)
573             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlComment.createSequentialGroup()
574                 .addContainerGap()
575                 .addGroup(gl_pnlComment.createParallelGroup(GroupLayout.Alignment.TRAILING)
576                     .addComponent(pnlCommentAdvanced, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
577                     .addComponent(pnlCommentStandard, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
578                 .addContainerGap())
579         );
580         gl_pnlComment.setVerticalGroup(
581             gl_pnlComment.createParallelGroup(GroupLayout.Alignment.LEADING)
582             .addGroup(gl_pnlComment.createSequentialGroup()
583                 .addContainerGap()
584                 .addComponent(pnlCommentStandard, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
585                 .addPreferredGap(ComponentPlacement.RELATED)
586                 .addComponent(pnlCommentAdvanced, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
587                 .addContainerGap(168, Short.MAX_VALUE))
588         );
589
590         tabbedPane.addTab("コメント", pnlComment);
591
592         jPanel10.setBorder(BorderFactory.createTitledBorder("ファイルパス"));
593
594         lblFfmpegPath.setText("ffmpeg");
595
596         lblFfmpegDllPath.setText("拡張ライブラリ");
597
598         btnFfmpegPath.setText("...");
599
600         btnFfmpegDllPath.setText("...");
601
602         GroupLayout gl_jPanel10 = new GroupLayout(jPanel10);
603         jPanel10.setLayout(gl_jPanel10);
604         gl_jPanel10.setHorizontalGroup(
605             gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
606             .addGroup(gl_jPanel10.createSequentialGroup()
607                 .addContainerGap()
608                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
609                     .addComponent(lblFfmpegDllPath)
610                     .addComponent(lblFfmpegPath))
611                 .addPreferredGap(ComponentPlacement.RELATED)
612                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
613                     .addComponent(fldFfmpegDllPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)
614                     .addComponent(fldFfmpegPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE))
615                 .addPreferredGap(ComponentPlacement.RELATED)
616                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
617                     .addComponent(btnFfmpegPath, GroupLayout.Alignment.TRAILING)
618                     .addComponent(btnFfmpegDllPath, GroupLayout.Alignment.TRAILING))
619                 .addContainerGap())
620         );
621         gl_jPanel10.setVerticalGroup(
622             gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
623             .addGroup(gl_jPanel10.createSequentialGroup()
624                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.BASELINE)
625                     .addComponent(lblFfmpegPath)
626                     .addComponent(fldFfmpegPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
627                     .addComponent(btnFfmpegPath))
628                 .addPreferredGap(ComponentPlacement.RELATED)
629                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.BASELINE)
630                     .addComponent(lblFfmpegDllPath)
631                     .addComponent(fldFfmpegDllPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
632                     .addComponent(btnFfmpegDllPath))
633                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
634         );
635
636         pnlFfmpegParam.setBorder(BorderFactory.createTitledBorder("ffmpegパラメータ"));
637
638         buttonGroup1.add(rbFfmpegOptionFile);
639         rbFfmpegOptionFile.setText("オプションファイル");
640
641         buttonGroup1.add(rbFfmpegOptionDirectInput);
642         rbFfmpegOptionDirectInput.setText("直接入力");
643
644         cmbFfmpegOptionFile.setModel(new DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
645
646         pnlFfmpegParamOption.setBorder(BorderFactory.createEtchedBorder());
647
648         lblFfmpegOptionExtension.setText("出力動画の拡張子");
649
650         lblFfmpegOptionMain.setText("メインオプション");
651
652         lblFfmpegOptionIn.setText("入力オプション");
653
654         lblFfmpegOptionOut.setText("出力オプション");
655
656         lblFfmpegOptionAvfilter.setText("avfilterオプション");
657
658         cbFfmpegOptionResize.setText("次のサイズに収まるよう縮小(-s)");
659
660         lblFfmpegOptionResizeWidth.setText("横");
661
662         lblFfmpegOptionResizeHeight.setText("縦");
663
664         cbFfmpegOptionKeepAspect.setText("アスペクト比を維持");
665
666         GroupLayout gl_pnlFfmpegParamOption = new GroupLayout(pnlFfmpegParamOption);
667         pnlFfmpegParamOption.setLayout(gl_pnlFfmpegParamOption);
668         gl_pnlFfmpegParamOption.setHorizontalGroup(
669             gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
670             .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
671                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
672                     .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
673                         .addContainerGap()
674                         .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
675                             .addComponent(lblFfmpegOptionAvfilter)
676                             .addComponent(lblFfmpegOptionExtension)
677                             .addComponent(lblFfmpegOptionMain)
678                             .addComponent(lblFfmpegOptionIn)
679                             .addComponent(lblFfmpegOptionOut))
680                         .addPreferredGap(ComponentPlacement.RELATED)
681                         .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
682                             .addComponent(fldFfmpegOptionExtension, GroupLayout.PREFERRED_SIZE, 51, GroupLayout.PREFERRED_SIZE)
683                             .addComponent(fldFfmpegOptionMain, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
684                             .addComponent(fldFfmpegOptionIn, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
685                             .addComponent(fldFfmpegOptionOut, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
686                             .addComponent(fldFfmpegOptionAv, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)))
687                     .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
688                         .addGap(12, 12, 12)
689                         .addComponent(cbFfmpegOptionResize)
690                         .addPreferredGap(ComponentPlacement.UNRELATED)
691                         .addComponent(lblFfmpegOptionResizeWidth)
692                         .addPreferredGap(ComponentPlacement.RELATED)
693                         .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE)
694                         .addGap(12, 12, 12)
695                         .addComponent(lblFfmpegOptionResizeHeight)
696                         .addPreferredGap(ComponentPlacement.RELATED)
697                         .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE))
698                     .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
699                         .addGap(33, 33, 33)
700                         .addComponent(cbFfmpegOptionKeepAspect)))
701                 .addContainerGap())
702         );
703         gl_pnlFfmpegParamOption.setVerticalGroup(
704             gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
705             .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
706                 .addContainerGap()
707                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
708                     .addComponent(lblFfmpegOptionExtension)
709                     .addComponent(fldFfmpegOptionExtension, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
710                 .addPreferredGap(ComponentPlacement.RELATED)
711                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
712                     .addComponent(lblFfmpegOptionMain)
713                     .addComponent(fldFfmpegOptionMain, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
714                 .addPreferredGap(ComponentPlacement.RELATED)
715                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
716                     .addComponent(lblFfmpegOptionIn)
717                     .addComponent(fldFfmpegOptionIn, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
718                 .addPreferredGap(ComponentPlacement.RELATED)
719                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
720                     .addComponent(lblFfmpegOptionOut)
721                     .addComponent(fldFfmpegOptionOut, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
722                 .addPreferredGap(ComponentPlacement.RELATED)
723                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
724                     .addComponent(lblFfmpegOptionAvfilter)
725                     .addComponent(fldFfmpegOptionAv, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
726                 .addPreferredGap(ComponentPlacement.RELATED)
727                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
728                     .addComponent(cbFfmpegOptionResize)
729                     .addComponent(lblFfmpegOptionResizeWidth)
730                     .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
731                     .addComponent(lblFfmpegOptionResizeHeight)
732                     .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
733                 .addPreferredGap(ComponentPlacement.RELATED)
734                 .addComponent(cbFfmpegOptionKeepAspect)
735                 .addContainerGap())
736         );
737
738         GroupLayout gl_pnlFfmpegParam = new GroupLayout(pnlFfmpegParam);
739         pnlFfmpegParam.setLayout(gl_pnlFfmpegParam);
740         gl_pnlFfmpegParam.setHorizontalGroup(
741             gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
742             .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
743                 .addContainerGap()
744                 .addGroup(gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
745                     .addComponent(pnlFfmpegParamOption, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
746                     .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
747                         .addComponent(rbFfmpegOptionFile)
748                         .addPreferredGap(ComponentPlacement.RELATED)
749                         .addComponent(cmbFfmpegOptionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
750                     .addComponent(rbFfmpegOptionDirectInput))
751                 .addContainerGap())
752         );
753         gl_pnlFfmpegParam.setVerticalGroup(
754             gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
755             .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
756                 .addContainerGap()
757                 .addGroup(gl_pnlFfmpegParam.createParallelGroup(Alignment.BASELINE)
758                     .addComponent(rbFfmpegOptionFile)
759                     .addComponent(cmbFfmpegOptionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
760                 .addPreferredGap(ComponentPlacement.RELATED)
761                 .addComponent(rbFfmpegOptionDirectInput)
762                 .addPreferredGap(ComponentPlacement.RELATED)
763                 .addComponent(pnlFfmpegParamOption, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
764                 .addContainerGap())
765         );
766
767         GroupLayout gl_pnlFfmpeg = new GroupLayout(pnlFfmpeg);
768         pnlFfmpeg.setLayout(gl_pnlFfmpeg);
769         gl_pnlFfmpeg.setHorizontalGroup(
770             gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
771             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFfmpeg.createSequentialGroup()
772                 .addContainerGap()
773                 .addGroup(gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.TRAILING)
774                     .addComponent(pnlFfmpegParam, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
775                     .addComponent(jPanel10, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
776                 .addContainerGap())
777         );
778         gl_pnlFfmpeg.setVerticalGroup(
779             gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
780             .addGroup(gl_pnlFfmpeg.createSequentialGroup()
781                 .addContainerGap()
782                 .addComponent(jPanel10, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
783                 .addPreferredGap(ComponentPlacement.RELATED)
784                 .addComponent(pnlFfmpegParam, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
785                 .addContainerGap())
786         );
787
788         tabbedPane.addTab("ffmpeg", pnlFfmpeg);
789
790         pnlNgWord.setBorder(BorderFactory.createTitledBorder("NGワード"));
791
792         lstNgWord.setModel(mdlNgWord);
793         scrNgWord.setViewportView(lstNgWord);
794
795         btnNgWordAdd.setText("追加");
796
797         btnNgWordDel.setText("削除");
798
799         GroupLayout gl_pnlNgWord = new GroupLayout(pnlNgWord);
800         pnlNgWord.setLayout(gl_pnlNgWord);
801         gl_pnlNgWord.setHorizontalGroup(
802             gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
803             .addGroup(gl_pnlNgWord.createSequentialGroup()
804                 .addContainerGap()
805                 .addGroup(gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
806                     .addComponent(scrNgWord, GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
807                     .addGroup(gl_pnlNgWord.createSequentialGroup()
808                         .addComponent(fldNgWord, GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
809                         .addPreferredGap(ComponentPlacement.RELATED)
810                         .addComponent(btnNgWordAdd)
811                         .addGap(18, 18, 18)
812                         .addComponent(btnNgWordDel)))
813                 .addContainerGap())
814         );
815         gl_pnlNgWord.setVerticalGroup(
816             gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
817             .addGroup(gl_pnlNgWord.createSequentialGroup()
818                 .addComponent(scrNgWord, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
819                 .addPreferredGap(ComponentPlacement.RELATED)
820                 .addGroup(gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.BASELINE)
821                     .addComponent(fldNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
822                     .addComponent(btnNgWordDel)
823                     .addComponent(btnNgWordAdd))
824                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
825         );
826
827         pnlNgId.setBorder(BorderFactory.createTitledBorder("NGID"));
828
829         lstNgId.setModel(mdlNgId);
830         scrNgId.setViewportView(lstNgId);
831
832         btnNgIdAdd.setText("追加");
833
834         btnNgIdDel.setText("削除");
835
836         GroupLayout gl_pnlNgId = new GroupLayout(pnlNgId);
837         pnlNgId.setLayout(gl_pnlNgId);
838         gl_pnlNgId.setHorizontalGroup(
839             gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
840             .addGroup(gl_pnlNgId.createSequentialGroup()
841                 .addContainerGap()
842                 .addGroup(gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
843                     .addComponent(scrNgId, GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
844                     .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNgId.createSequentialGroup()
845                         .addComponent(fldNgId, GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
846                         .addPreferredGap(ComponentPlacement.RELATED)
847                         .addComponent(btnNgIdAdd)
848                         .addGap(18, 18, 18)
849                         .addComponent(btnNgIdDel)))
850                 .addContainerGap())
851         );
852         gl_pnlNgId.setVerticalGroup(
853             gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
854             .addGroup(gl_pnlNgId.createSequentialGroup()
855                 .addComponent(scrNgId, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
856                 .addPreferredGap(ComponentPlacement.RELATED)
857                 .addGroup(gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.BASELINE)
858                     .addComponent(fldNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
859                     .addComponent(btnNgIdDel)
860                     .addComponent(btnNgIdAdd))
861                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
862         );
863
864         GroupLayout gl_pnlNgSetting = new GroupLayout(pnlNgSetting);
865         pnlNgSetting.setLayout(gl_pnlNgSetting);
866         gl_pnlNgSetting.setHorizontalGroup(
867             gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
868             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNgSetting.createSequentialGroup()
869                 .addContainerGap()
870                 .addGroup(gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.TRAILING)
871                     .addComponent(pnlNgId, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
872                     .addComponent(pnlNgWord, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
873                 .addContainerGap())
874         );
875         gl_pnlNgSetting.setVerticalGroup(
876             gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
877             .addGroup(gl_pnlNgSetting.createSequentialGroup()
878                 .addContainerGap()
879                 .addComponent(pnlNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
880                 .addPreferredGap(ComponentPlacement.RELATED)
881                 .addComponent(pnlNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
882                 .addContainerGap(82, Short.MAX_VALUE))
883         );
884
885         tabbedPane.addTab("NG設定", pnlNgSetting);
886
887         pnlSearchVideo.setBorder(BorderFactory.createTitledBorder("動画検索対象フォルダ"));
888
889         lstSearchVideo.setModel(mdlSearchVideo);
890         srcSearchVideo.setViewportView(lstSearchVideo);
891
892         btnSearchVideoAdd.setText("追加...");
893
894         btnSearchVideoDel.setText("削除");
895
896         GroupLayout gl_pnlSearchVideo = new GroupLayout(pnlSearchVideo);
897         pnlSearchVideo.setLayout(gl_pnlSearchVideo);
898         gl_pnlSearchVideo.setHorizontalGroup(
899             gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
900             .addComponent(srcSearchVideo, GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE)
901             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearchVideo.createSequentialGroup()
902                 .addContainerGap(269, Short.MAX_VALUE)
903                 .addComponent(btnSearchVideoAdd)
904                 .addGap(18, 18, 18)
905                 .addComponent(btnSearchVideoDel)
906                 .addContainerGap())
907         );
908         gl_pnlSearchVideo.setVerticalGroup(
909             gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
910             .addGroup(gl_pnlSearchVideo.createSequentialGroup()
911                 .addComponent(srcSearchVideo, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
912                 .addPreferredGap(ComponentPlacement.RELATED)
913                 .addGroup(gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
914                     .addComponent(btnSearchVideoDel)
915                     .addComponent(btnSearchVideoAdd))
916                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
917         );
918
919         pnlSearchComment.setBorder(BorderFactory.createTitledBorder("コメント検索対象フォルダ"));
920
921         lstSearchComment.setModel(mdlSearchComment);
922         srcSearchComment.setViewportView(lstSearchComment);
923
924         btnSearchCommentAdd.setText("追加...");
925
926         btnSearchCommentDel.setText("削除");
927
928         GroupLayout gl_pnlSearchComment = new GroupLayout(pnlSearchComment);
929         pnlSearchComment.setLayout(gl_pnlSearchComment);
930         gl_pnlSearchComment.setHorizontalGroup(
931             gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.LEADING)
932             .addComponent(srcSearchComment, GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE)
933             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearchComment.createSequentialGroup()
934                 .addContainerGap(269, Short.MAX_VALUE)
935                 .addComponent(btnSearchCommentAdd)
936                 .addGap(18, 18, 18)
937                 .addComponent(btnSearchCommentDel)
938                 .addContainerGap())
939         );
940         gl_pnlSearchComment.setVerticalGroup(
941             gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.LEADING)
942             .addGroup(gl_pnlSearchComment.createSequentialGroup()
943                 .addComponent(srcSearchComment, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
944                 .addPreferredGap(ComponentPlacement.RELATED)
945                 .addGroup(gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
946                     .addComponent(btnSearchCommentDel)
947                     .addComponent(btnSearchCommentAdd))
948                 .addContainerGap(16, Short.MAX_VALUE))
949         );
950
951         pnlSearchCache.setBorder(BorderFactory.createEtchedBorder());
952
953         lblSearchCache.setText("キャッシュ更新(秒)");
954
955         GroupLayout gl_pnlSearchCache = new GroupLayout(pnlSearchCache);
956         pnlSearchCache.setLayout(gl_pnlSearchCache);
957         gl_pnlSearchCache.setHorizontalGroup(
958             gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.LEADING)
959             .addGroup(gl_pnlSearchCache.createSequentialGroup()
960                 .addContainerGap()
961                 .addComponent(lblSearchCache)
962                 .addPreferredGap(ComponentPlacement.RELATED)
963                 .addComponent(fldSearchCache, GroupLayout.PREFERRED_SIZE, 55, GroupLayout.PREFERRED_SIZE)
964                 .addContainerGap(269, Short.MAX_VALUE))
965         );
966         gl_pnlSearchCache.setVerticalGroup(
967             gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.LEADING)
968             .addGroup(gl_pnlSearchCache.createSequentialGroup()
969                 .addContainerGap()
970                 .addGroup(gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.BASELINE)
971                     .addComponent(lblSearchCache)
972                     .addComponent(fldSearchCache, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
973                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
974         );
975
976         GroupLayout gl_pnlSearch = new GroupLayout(pnlSearch);
977         pnlSearch.setLayout(gl_pnlSearch);
978         gl_pnlSearch.setHorizontalGroup(
979             gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
980             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearch.createSequentialGroup()
981                 .addContainerGap()
982                 .addGroup(gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.TRAILING)
983                     .addComponent(pnlSearchCache, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
984                     .addComponent(pnlSearchComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
985                     .addComponent(pnlSearchVideo, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
986                 .addContainerGap())
987         );
988         gl_pnlSearch.setVerticalGroup(
989             gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
990             .addGroup(gl_pnlSearch.createSequentialGroup()
991                 .addContainerGap()
992                 .addComponent(pnlSearchVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
993                 .addPreferredGap(ComponentPlacement.RELATED)
994                 .addComponent(pnlSearchComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
995                 .addPreferredGap(ComponentPlacement.RELATED)
996                 .addComponent(pnlSearchCache, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
997                 .addContainerGap(27, Short.MAX_VALUE))
998         );
999
1000         tabbedPane.addTab("検索", pnlSearch);
1001
1002         final JPanel pnlButton = new JPanel();
1003         final JButton btnOk = new JButton("OK");
1004         final JButton btnCancel = new JButton("Cancel");
1005         pnlButton.add(btnOk);
1006         pnlButton.add(btnCancel);
1007
1008         GroupLayout layout = new GroupLayout(getContentPane());
1009         getContentPane().setLayout(layout);
1010         layout.setHorizontalGroup(
1011             layout.createParallelGroup(GroupLayout.Alignment.LEADING)
1012             .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, 460, Short.MAX_VALUE)
1013             .addComponent(pnlButton)
1014         );
1015         layout.setVerticalGroup(
1016             layout.createSequentialGroup()
1017                 .addComponent(tabbedPane,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
1018                 .addComponent(pnlButton)
1019         );
1020
1021         pack();
1022         setResizable(false);
1023         loadConfig();
1024     }
1025
1026     /**
1027      * @param args the command line arguments
1028      */
1029     public static void main(String args[]) {
1030         /* Set the Nimbus look and feel */
1031         //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
1032         /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
1033          * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
1034          */
1035         try {
1036             for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
1037                 if ("Nimbus".equals(info.getName())) {
1038                     UIManager.setLookAndFeel(info.getClassName());
1039                     break;
1040                 }
1041             }
1042         } catch (ClassNotFoundException ex) {
1043             java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
1044         } catch (InstantiationException ex) {
1045             java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
1046         } catch (IllegalAccessException ex) {
1047             java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
1048         } catch (UnsupportedLookAndFeelException ex) {
1049             java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
1050         }
1051         //</editor-fold>
1052
1053         /* Create and display the form */
1054         java.awt.EventQueue.invokeLater(new Runnable() {
1055
1056             @Override
1057             public void run() {
1058                 new ConfigDialog().setVisible(true);
1059             }
1060         });
1061     }
1062     // Variables declaration - do not modify//GEN-BEGIN:variables
1063
1064     // ネットワーク
1065     // ネットワーク - アカウント
1066     private final JTextField fldMail;
1067     private final JTextField fldPassword;
1068     // ネットワーク - プロキシ
1069     private final JCheckBox cbProxyUse;
1070     private final JTextField fldProxyHost;
1071     private final JTextField fldProxyPort;
1072     // ファイル
1073     // ファイル - 動画
1074     private final JTextField fldVideoDir;
1075     private final JButton btnVideoDir;
1076     private final JTextField fldVideoFileNamePattern;
1077     private final JCheckBox cbVideoLocal;
1078     // ファイル - コメント
1079     private final JTextField fldCommentDir;
1080     private final JButton btnCommentDir;
1081     private final JTextField fldCommentFileNamePattern;
1082     private final JCheckBox cbCommentLocal;
1083     // ファイル - 変換動画
1084     private final JTextField fldOutputDir;
1085     private final JTextField fldOutputFileNamePattern;
1086     private final JButton btnOutputDir;
1087     private final JCheckBox cbOutputEnable;
1088     private final JCheckBox cbOutputCommentOverlay;
1089     private final JCheckBox cbOutputDisplayProgress;
1090     // コメント
1091     // コメント
1092     private final JCheckBox cbCommentSizeAuto;
1093     private final JTextField fldCommentSizeManual;
1094     private final JCheckBox cbCommentMinSizeAuto;
1095     private final JTextField fldCommentMinSizeManual;
1096     private final JCheckBox cbCommentDisplaySizeDefault;
1097     private final JTextField fldCommentDisplaySizeManual;
1098     // コメント - 高度な設定
1099     private final JTextField fldFontPath;
1100     private final JButton btnFontPath;
1101     private final JTextField fldFontIndex;
1102     private final JComboBox<String> cmbFontShadow = new JComboBox<>();
1103     private final JCheckBox cbFontSizeArrangeDisable;
1104     private final JCheckBox cbCommentOpaque;
1105     // ffmpeg
1106     // ffmpeg - ファイルパス
1107     private final JTextField fldFfmpegPath;
1108     private final JButton btnFfmpegPath;
1109     private final JTextField fldFfmpegDllPath;
1110     private final JButton btnFfmpegDllPath;
1111     // ffmpeg - ffmpegパラメータ
1112     private final JRadioButton rbFfmpegOptionFile;
1113     private final JRadioButton rbFfmpegOptionDirectInput;
1114     private final JComboBox cmbFfmpegOptionFile;
1115     private final JTextField fldFfmpegOptionExtension;
1116     private final JTextField fldFfmpegOptionMain;
1117     private final JTextField fldFfmpegOptionIn;
1118     private final JTextField fldFfmpegOptionOut;
1119     private final JTextField fldFfmpegOptionAv;
1120     private final JCheckBox cbFfmpegOptionResize;
1121     private final JTextField fldFfmpegOptionResizeWidth;
1122     private final JTextField fldFfmpegOptionResizeHeight;
1123     private final JCheckBox cbFfmpegOptionKeepAspect;
1124     // NG設定
1125     // NG設定 - NGワード
1126     private final JList<String> lstNgWord;
1127     private final DefaultListModel<String> mdlNgWord = new DefaultListModel<>();
1128     private final JTextField fldNgWord;
1129     private final JButton btnNgWordAdd;
1130     private final JButton btnNgWordDel;
1131     // NG設定 - NGID
1132     private final JList<String> lstNgId;
1133     private final DefaultListModel<String> mdlNgId = new DefaultListModel<>();
1134     private final JTextField fldNgId;
1135     private final JButton btnNgIdAdd;
1136     private final JButton btnNgIdDel;
1137     // 検索
1138     // 検索 - 動画検索対象フォルダ
1139     private final JList<String> lstSearchVideo;
1140     private final DefaultListModel<String> mdlSearchVideo = new DefaultListModel<>();
1141     private final JButton btnSearchVideoAdd;
1142     private final JButton btnSearchVideoDel;
1143     // 検索 - コメント検索対象フォルダ
1144     private final JList<String> lstSearchComment;
1145     private final DefaultListModel<String> mdlSearchComment = new DefaultListModel<>();
1146     private final JButton btnSearchCommentAdd;
1147     private final JButton btnSearchCommentDel;
1148     // 検索 - キャッシュ更新(秒)
1149     private final JTextField fldSearchCache;
1150
1151
1152     // End of variables declaration//GEN-END:variables
1153
1154     private void loadConfig() {
1155         final Config p = Config.INSTANCE;
1156
1157         /*
1158          * ネットワーク - アカウント
1159          */
1160         fldMail.setText(p.getId());
1161         fldPassword.setText(p.getPassword());
1162
1163         /*
1164          * ネットワーク - プロキシ
1165          */
1166         cbProxyUse.setSelected(p.getProxyUse());
1167         fldProxyHost.setText(p.getProxyHost());
1168         fldProxyPort.setText(p.getProxyPort());
1169
1170         /*
1171          * ファイル - 動画
1172          */
1173         fldVideoDir.setText(p.getVideoDir());
1174         fldVideoFileNamePattern.setText(p.getVideoFileNamePattern());
1175         cbVideoLocal.setSelected(p.getVideoUseLocal());
1176
1177         /*
1178          * ファイル - コメント
1179          */
1180         fldCommentDir.setText(p.getCommentDir());
1181         fldCommentFileNamePattern.setText(p.getCommentFileNamePattern());
1182         cbCommentLocal.setSelected(p.getCommentUseLocal());
1183
1184         /*
1185          * ファイル - 変換動画
1186          */
1187         fldOutputDir.setText(p.getOutputDir());
1188         fldOutputFileNamePattern.setText(p.getOutputFileNamePattern());
1189         cbOutputEnable.setSelected(p.getOutputEnable());
1190         cbOutputCommentOverlay.setSelected(p.getOutputCommentOverlay());
1191         cbOutputDisplayProgress.setSelected(p.getOutputDisplayProgress());
1192
1193         /**
1194          * コメント
1195          */
1196         cbCommentSizeAuto.setSelected(p.getCommentSizeAutosize());
1197         fldCommentSizeManual.setText(p.getCommentSizeManual());
1198         cbCommentMinSizeAuto.setSelected(p.getCommentMinSizeAutosize());
1199         fldCommentSizeManual.setText(p.getCommentMinSizeManual());
1200         cbCommentDisplaySizeDefault.setSelected(p.getCommentDisplaySizeDefault());
1201         fldCommentDisplaySizeManual.setText(p.getCommentDisplaySizeManual());
1202
1203         /**
1204          * コメント - 高度な設定
1205          */
1206         fldFontPath.setText(p.getFontPath());
1207         fldFontIndex.setText(p.getFontIndex());
1208         // TODO 影の種類はコンボボックス
1209         cbFontSizeArrangeDisable.setSelected(p.getFontSizeArrangeDisable());
1210         cbCommentOpaque.setSelected(p.getCommentOpaque());
1211
1212         /*
1213          * ffmpeg - ファイルパス
1214          */
1215         fldFfmpegPath.setText(p.getFfmpegPath());
1216         fldFfmpegDllPath.setText(p.getFfmpegDllPath());
1217
1218         /*
1219          * ffmpeg - ffmpegパラメータ
1220          */
1221         rbFfmpegOptionFile.setSelected(!p.getFfmpegParamInputDirect());
1222         rbFfmpegOptionDirectInput.setSelected(p.getFfmpegParamInputDirect());
1223         // TODO cmbFfmpegOptionFile
1224         fldFfmpegOptionExtension.setText(p.getFfmpegExtension());
1225         fldFfmpegOptionMain.setText(p.getFfmpegMainOption());
1226         fldFfmpegOptionIn.setText(p.getFfmpegInOption());
1227         fldFfmpegOptionOut.setText(p.getFfmpegOutOption());
1228         fldFfmpegOptionAv.setText(p.getFfmpegAvOption());
1229         cbFfmpegOptionResize.setSelected(p.getFfmpegResizeEnable());
1230         fldFfmpegOptionResizeWidth.setText(p.getFfmpegResizeWidth());
1231         fldFfmpegOptionResizeHeight.setText(p.getFfmpegResizeHeight());
1232         cbFfmpegOptionKeepAspect.setSelected(p.getFfmpegKeepAspect());
1233
1234         /*
1235          * NG 設定
1236          */
1237         final List<String> ngWords = p.getNgWords();
1238         for (String s : ngWords) {
1239             mdlNgWord.addElement(s);
1240         }
1241         final List<String> ngIds = p.getNgIds();
1242         for (String s : ngIds) {
1243             mdlNgId.addElement(s);
1244         }
1245     }
1246     private void saveConfig() {
1247         final Config p = Config.INSTANCE;
1248
1249         /*
1250          * ネットワーク - アカウント
1251          */
1252
1253         p.setId(fldMail.getText());
1254         p.setPassword(fldPassword.getText());
1255
1256         /*
1257          * ネットワーク - プロキシ
1258          */
1259         p.setProxyUse(cbProxyUse.isSelected());
1260         p.setProxyHost(fldProxyHost.getText());
1261         p.setProxyPort(fldProxyPort.getText());
1262
1263         /*
1264          * ファイル - 動画
1265          */
1266         p.setVideoDir(fldVideoDir.getText());
1267         p.setVideoFileNamePattern(fldVideoFileNamePattern.getText());
1268         p.setVideoUseLocal(cbVideoLocal.isSelected());
1269
1270         /*
1271          * ファイル - コメント
1272          */
1273         p.setCommentDir(fldCommentDir.getText());
1274         p.setCommentFileNamePattern(fldCommentFileNamePattern.getText());
1275         p.setCommentUseLocal(cbCommentLocal.isSelected());
1276
1277         /*
1278          * ファイル - 変換動画
1279          */
1280         p.setOutputDir(fldOutputDir.getText());
1281         p.setOutputFileNamePattern(fldOutputFileNamePattern.getText());
1282         p.setOutputEnable(cbOutputEnable.isSelected());
1283         p.setOutputCommentOverlay(cbOutputCommentOverlay.isSelected());
1284         p.setOutputDisplayProgress(cbOutputDisplayProgress.isSelected());
1285
1286         /**
1287          * コメント
1288          */
1289         p.setCommentSizeAutosize(cbCommentSizeAuto.isSelected());
1290         p.setCommentSizeManual(fldCommentSizeManual.getText());
1291         p.setCommentMinSizeAutosize(cbCommentMinSizeAuto.isSelected());
1292         p.setCommentMinSizeManual(fldCommentSizeManual.getText());
1293         p.setCommentDisplaySizeDefault(cbCommentDisplaySizeDefault.isSelected());
1294         p.setCommentDisplaySizeManual(fldCommentDisplaySizeManual.getText());
1295
1296         /**
1297          * コメント - 高度な設定
1298          */
1299         p.setFontPath(fldFontPath.getText());
1300         p.setFontIndex(fldFontIndex.getText());
1301         // TODO 影の種類はコンボボックス
1302         p.setFontSizeArrangeDisable(cbFontSizeArrangeDisable.isSelected());
1303         p.setCommentOpaque(cbCommentOpaque.isSelected());
1304
1305         /*
1306          * ffmpeg - ファイルパス
1307          */
1308         p.setFfmpegPath(fldFfmpegPath.getText());
1309         p.setFfmpegDllPath(fldFfmpegDllPath.getText());
1310
1311         /*
1312          * ffmpeg - ffmpegパラメータ
1313          */
1314         p.setFfmpegParamInputDirect(rbFfmpegOptionDirectInput.isSelected());
1315         // TODO cmbFfmpegOptionFile
1316         p.setFfmpegExtension(fldFfmpegOptionExtension.getText());
1317         p.setFfmpegMainOption(fldFfmpegOptionMain.getText());
1318         p.setFfmpegInOption(fldFfmpegOptionIn.getText());
1319         p.setFfmpegOutOption(fldFfmpegOptionOut.getText());
1320         p.setFfmpegAvOption(fldFfmpegOptionAv.getText());
1321         p.setFfmpegResizeEnable(cbFfmpegOptionResize.isSelected());
1322         p.setFfmpegResizeWidth(fldFfmpegOptionResizeWidth.getText());
1323         p.setFfmpegResizeHeight(fldFfmpegOptionResizeHeight.getText());
1324         p.setFfmpegKeepAspect(cbFfmpegOptionKeepAspect.isSelected());
1325
1326         /*
1327          * NG 設定
1328          */
1329         p.setNgWords(Arrays.asList((String[]) mdlNgWord.toArray()));
1330         p.setNgIds(Arrays.asList((String[])mdlNgId.toArray()));
1331
1332     }
1333 }