OSDN Git Service

禁則文字設定項目を追加
[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         final JPanel pnlFileProhibit = new JPanel();
422         pnlFileProhibit.setBorder(BorderFactory.createTitledBorder("禁則文字"));
423         final JLabel lblReplaceFrom = new JLabel("置換対象文字");
424         final JLabel lblReplaceTo = new JLabel("置換後文字");
425
426         final GroupLayout glProhibit = new GroupLayout(pnlFileProhibit);
427         glProhibit.setAutoCreateContainerGaps(true);
428         glProhibit.setAutoCreateGaps(true);
429         pnlFileProhibit.setLayout(glProhibit);
430
431         glProhibit.setHorizontalGroup(glProhibit.createSequentialGroup()
432             .addGroup(glProhibit.createParallelGroup()
433                 .addComponent(lblReplaceFrom)
434                 .addComponent(lblReplaceTo)
435             )
436             .addGroup(glProhibit.createParallelGroup()
437                 .addComponent(fldReplaceFrom)
438                 .addComponent(fldReplaceTo)
439             )
440         );
441
442         glProhibit.setVerticalGroup(glProhibit.createSequentialGroup()
443             .addGroup(glProhibit.createParallelGroup(Alignment.BASELINE)
444                 .addComponent(lblReplaceFrom)
445                 .addComponent(fldReplaceFrom)
446             )
447             .addGroup(glProhibit.createParallelGroup(Alignment.BASELINE)
448                 .addComponent(lblReplaceTo)
449                 .addComponent(fldReplaceTo)
450             )
451         );
452
453         GroupLayout gl_pnlFile = new GroupLayout(pnlFile);
454         pnlFile.setLayout(gl_pnlFile);
455         gl_pnlFile.setHorizontalGroup(
456             gl_pnlFile.createParallelGroup(GroupLayout.Alignment.LEADING)
457             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFile.createSequentialGroup()
458                 .addContainerGap()
459                 .addGroup(gl_pnlFile.createParallelGroup(GroupLayout.Alignment.TRAILING)
460                     .addComponent(pnlFileOutput, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
461                     .addComponent(pnlFileVideo, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
462                     .addComponent(pnlFileComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
463                     .addComponent(pnlFileProhibit, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
464                 )
465                 .addContainerGap())
466         );
467         gl_pnlFile.setVerticalGroup(
468             gl_pnlFile.createParallelGroup(GroupLayout.Alignment.LEADING)
469             .addGroup(gl_pnlFile.createSequentialGroup()
470                 .addContainerGap()
471                 .addComponent(pnlFileVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
472                 .addPreferredGap(ComponentPlacement.RELATED)
473                 .addComponent(pnlFileComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
474                 .addPreferredGap(ComponentPlacement.RELATED)
475                 .addComponent(pnlFileOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
476                 .addPreferredGap(ComponentPlacement.RELATED)
477                 .addComponent(pnlFileProhibit, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
478                 .addContainerGap())
479         );
480
481         tabbedPane.addTab("ファイル", pnlFile);
482
483         pnlCommentStandard.setBorder(BorderFactory.createTitledBorder(""));
484
485         lblCommentSize.setText("再生時間に応じたコメントの取得数");
486
487         cbCommentSizeAuto.setText("自動調整");
488
489         lblCommentSizeManual.setText("手動取得");
490
491         lblCommentMinSize.setText("1分当たりのコメント取得数");
492
493         cbCommentMinSizeAuto.setText("自動調整");
494
495         lblCommentMinSizeManual.setText("手動取得");
496
497         lblCommentDisplayMax.setText("1画面に表示する最大コメント数");
498
499         cbCommentDisplaySizeDefault.setText("標準(30)");
500
501         lblCommentDisplayMaxManual.setText("手動設定");
502
503         GroupLayout gl_pnlCommentStandard = new GroupLayout(pnlCommentStandard);
504         pnlCommentStandard.setLayout(gl_pnlCommentStandard);
505         gl_pnlCommentStandard.setAutoCreateContainerGaps(true);
506         gl_pnlCommentStandard.setAutoCreateGaps(true);
507         gl_pnlCommentStandard.setHorizontalGroup(
508             gl_pnlCommentStandard.createSequentialGroup()
509                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
510                     .addComponent(lblCommentSize)
511                     .addComponent(lblCommentMinSize)
512                     .addComponent(lblCommentDisplayMax))
513                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
514                     .addComponent(cbCommentSizeAuto)
515                     .addComponent(cbCommentMinSizeAuto)
516                     .addComponent(cbCommentDisplaySizeDefault))
517                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
518                     .addComponent(lblCommentSizeManual)
519                     .addComponent(lblCommentMinSizeManual)
520                     .addComponent(lblCommentDisplayMaxManual))
521                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
522                     .addComponent(fldCommentSizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
523                     .addComponent(fldCommentMinSizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
524                     .addComponent(fldCommentDisplaySizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
525         );
526         gl_pnlCommentStandard.setVerticalGroup(
527             gl_pnlCommentStandard.createSequentialGroup()
528                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
529                     .addComponent(lblCommentSize)
530                     .addComponent(cbCommentSizeAuto)
531                     .addComponent(lblCommentSizeManual)
532                     .addComponent(fldCommentSizeManual))
533                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
534                     .addComponent(lblCommentMinSize)
535                     .addComponent(cbCommentMinSizeAuto)
536                     .addComponent(lblCommentMinSizeManual)
537                     .addComponent(fldCommentMinSizeManual))
538                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
539                     .addComponent(lblCommentDisplayMax)
540                     .addComponent(cbCommentDisplaySizeDefault)
541                     .addComponent(lblCommentDisplayMaxManual)
542                     .addComponent(fldCommentDisplaySizeManual))
543         );
544
545         pnlCommentAdvanced.setBorder(BorderFactory.createTitledBorder("高度な設定"));
546
547         lblFontPath.setText("フォントパス");
548
549         cbFontSizeArrangeDisable.setText("フォントサイズ調整を行わない");
550
551         cbCommentOpaque.setText("コメント透明化を行わない");
552
553         btnFontPath.setText("...");
554
555         lblFontIndex.setText("フォント番号");
556
557         lblFontShadow.setText("影の種類");
558
559         GroupLayout gl_pnlCommentAdvanced = new GroupLayout(pnlCommentAdvanced);
560         pnlCommentAdvanced.setLayout(gl_pnlCommentAdvanced);
561         gl_pnlCommentAdvanced.setHorizontalGroup(
562             gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
563             .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
564                 .addContainerGap()
565                 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
566                     .addComponent(cbCommentOpaque)
567                     .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
568                         .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
569                             .addComponent(lblFontPath)
570                             .addComponent(lblFontIndex)
571                             .addComponent(lblFontShadow))
572                         .addGap(18, 18, 18)
573                         .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
574                             .addComponent(fldFontPath, GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)
575                             .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
576                                 .addComponent(cmbFontShadow, GroupLayout.Alignment.LEADING)
577                                 .addComponent(fldFontIndex, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 48, Short.MAX_VALUE)))
578                         .addPreferredGap(ComponentPlacement.RELATED)
579                         .addComponent(btnFontPath))
580                     .addComponent(cbFontSizeArrangeDisable))
581                 .addContainerGap())
582         );
583         gl_pnlCommentAdvanced.setVerticalGroup(
584             gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
585             .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
586                 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
587                     .addComponent(lblFontPath)
588                     .addComponent(fldFontPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
589                     .addComponent(btnFontPath))
590                 .addPreferredGap(ComponentPlacement.RELATED)
591                 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
592                     .addComponent(lblFontIndex)
593                     .addComponent(fldFontIndex, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
594                 .addPreferredGap(ComponentPlacement.RELATED)
595                 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
596                     .addComponent(lblFontShadow)
597                     .addComponent(cmbFontShadow, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
598                 .addPreferredGap(ComponentPlacement.RELATED)
599                 .addComponent(cbFontSizeArrangeDisable)
600                 .addPreferredGap(ComponentPlacement.RELATED)
601                 .addComponent(cbCommentOpaque)
602                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
603         );
604
605         GroupLayout gl_pnlComment = new GroupLayout(pnlComment);
606         pnlComment.setLayout(gl_pnlComment);
607         gl_pnlComment.setHorizontalGroup(
608             gl_pnlComment.createParallelGroup(GroupLayout.Alignment.LEADING)
609             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlComment.createSequentialGroup()
610                 .addContainerGap()
611                 .addGroup(gl_pnlComment.createParallelGroup(GroupLayout.Alignment.TRAILING)
612                     .addComponent(pnlCommentAdvanced, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
613                     .addComponent(pnlCommentStandard, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
614                 .addContainerGap())
615         );
616         gl_pnlComment.setVerticalGroup(
617             gl_pnlComment.createParallelGroup(GroupLayout.Alignment.LEADING)
618             .addGroup(gl_pnlComment.createSequentialGroup()
619                 .addContainerGap()
620                 .addComponent(pnlCommentStandard, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
621                 .addPreferredGap(ComponentPlacement.RELATED)
622                 .addComponent(pnlCommentAdvanced, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
623                 .addContainerGap(168, Short.MAX_VALUE))
624         );
625
626         tabbedPane.addTab("コメント", pnlComment);
627
628         jPanel10.setBorder(BorderFactory.createTitledBorder("ファイルパス"));
629
630         lblFfmpegPath.setText("ffmpeg");
631
632         lblFfmpegDllPath.setText("拡張ライブラリ");
633
634         btnFfmpegPath.setText("...");
635
636         btnFfmpegDllPath.setText("...");
637
638         GroupLayout gl_jPanel10 = new GroupLayout(jPanel10);
639         jPanel10.setLayout(gl_jPanel10);
640         gl_jPanel10.setHorizontalGroup(
641             gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
642             .addGroup(gl_jPanel10.createSequentialGroup()
643                 .addContainerGap()
644                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
645                     .addComponent(lblFfmpegDllPath)
646                     .addComponent(lblFfmpegPath))
647                 .addPreferredGap(ComponentPlacement.RELATED)
648                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
649                     .addComponent(fldFfmpegDllPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)
650                     .addComponent(fldFfmpegPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE))
651                 .addPreferredGap(ComponentPlacement.RELATED)
652                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
653                     .addComponent(btnFfmpegPath, GroupLayout.Alignment.TRAILING)
654                     .addComponent(btnFfmpegDllPath, GroupLayout.Alignment.TRAILING))
655                 .addContainerGap())
656         );
657         gl_jPanel10.setVerticalGroup(
658             gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
659             .addGroup(gl_jPanel10.createSequentialGroup()
660                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.BASELINE)
661                     .addComponent(lblFfmpegPath)
662                     .addComponent(fldFfmpegPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
663                     .addComponent(btnFfmpegPath))
664                 .addPreferredGap(ComponentPlacement.RELATED)
665                 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.BASELINE)
666                     .addComponent(lblFfmpegDllPath)
667                     .addComponent(fldFfmpegDllPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
668                     .addComponent(btnFfmpegDllPath))
669                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
670         );
671
672         pnlFfmpegParam.setBorder(BorderFactory.createTitledBorder("ffmpegパラメータ"));
673
674         buttonGroup1.add(rbFfmpegOptionFile);
675         rbFfmpegOptionFile.setText("オプションファイル");
676
677         buttonGroup1.add(rbFfmpegOptionDirectInput);
678         rbFfmpegOptionDirectInput.setText("直接入力");
679
680         cmbFfmpegOptionFile.setModel(new DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
681
682         pnlFfmpegParamOption.setBorder(BorderFactory.createEtchedBorder());
683
684         lblFfmpegOptionExtension.setText("出力動画の拡張子");
685
686         lblFfmpegOptionMain.setText("メインオプション");
687
688         lblFfmpegOptionIn.setText("入力オプション");
689
690         lblFfmpegOptionOut.setText("出力オプション");
691
692         lblFfmpegOptionAvfilter.setText("avfilterオプション");
693
694         cbFfmpegOptionResize.setText("次のサイズに収まるよう縮小(-s)");
695
696         lblFfmpegOptionResizeWidth.setText("横");
697
698         lblFfmpegOptionResizeHeight.setText("縦");
699
700         cbFfmpegOptionKeepAspect.setText("アスペクト比を維持");
701
702         GroupLayout gl_pnlFfmpegParamOption = new GroupLayout(pnlFfmpegParamOption);
703         pnlFfmpegParamOption.setLayout(gl_pnlFfmpegParamOption);
704         gl_pnlFfmpegParamOption.setHorizontalGroup(
705             gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
706             .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
707                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
708                     .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
709                         .addContainerGap()
710                         .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
711                             .addComponent(lblFfmpegOptionAvfilter)
712                             .addComponent(lblFfmpegOptionExtension)
713                             .addComponent(lblFfmpegOptionMain)
714                             .addComponent(lblFfmpegOptionIn)
715                             .addComponent(lblFfmpegOptionOut))
716                         .addPreferredGap(ComponentPlacement.RELATED)
717                         .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
718                             .addComponent(fldFfmpegOptionExtension, GroupLayout.PREFERRED_SIZE, 51, GroupLayout.PREFERRED_SIZE)
719                             .addComponent(fldFfmpegOptionMain, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
720                             .addComponent(fldFfmpegOptionIn, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
721                             .addComponent(fldFfmpegOptionOut, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
722                             .addComponent(fldFfmpegOptionAv, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)))
723                     .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
724                         .addGap(12, 12, 12)
725                         .addComponent(cbFfmpegOptionResize)
726                         .addPreferredGap(ComponentPlacement.UNRELATED)
727                         .addComponent(lblFfmpegOptionResizeWidth)
728                         .addPreferredGap(ComponentPlacement.RELATED)
729                         .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE)
730                         .addGap(12, 12, 12)
731                         .addComponent(lblFfmpegOptionResizeHeight)
732                         .addPreferredGap(ComponentPlacement.RELATED)
733                         .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE))
734                     .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
735                         .addGap(33, 33, 33)
736                         .addComponent(cbFfmpegOptionKeepAspect)))
737                 .addContainerGap())
738         );
739         gl_pnlFfmpegParamOption.setVerticalGroup(
740             gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
741             .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
742                 .addContainerGap()
743                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
744                     .addComponent(lblFfmpegOptionExtension)
745                     .addComponent(fldFfmpegOptionExtension, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
746                 .addPreferredGap(ComponentPlacement.RELATED)
747                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
748                     .addComponent(lblFfmpegOptionMain)
749                     .addComponent(fldFfmpegOptionMain, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
750                 .addPreferredGap(ComponentPlacement.RELATED)
751                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
752                     .addComponent(lblFfmpegOptionIn)
753                     .addComponent(fldFfmpegOptionIn, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
754                 .addPreferredGap(ComponentPlacement.RELATED)
755                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
756                     .addComponent(lblFfmpegOptionOut)
757                     .addComponent(fldFfmpegOptionOut, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
758                 .addPreferredGap(ComponentPlacement.RELATED)
759                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
760                     .addComponent(lblFfmpegOptionAvfilter)
761                     .addComponent(fldFfmpegOptionAv, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
762                 .addPreferredGap(ComponentPlacement.RELATED)
763                 .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
764                     .addComponent(cbFfmpegOptionResize)
765                     .addComponent(lblFfmpegOptionResizeWidth)
766                     .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
767                     .addComponent(lblFfmpegOptionResizeHeight)
768                     .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
769                 .addPreferredGap(ComponentPlacement.RELATED)
770                 .addComponent(cbFfmpegOptionKeepAspect)
771                 .addContainerGap())
772         );
773
774         GroupLayout gl_pnlFfmpegParam = new GroupLayout(pnlFfmpegParam);
775         pnlFfmpegParam.setLayout(gl_pnlFfmpegParam);
776         gl_pnlFfmpegParam.setHorizontalGroup(
777             gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
778             .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
779                 .addContainerGap()
780                 .addGroup(gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
781                     .addComponent(pnlFfmpegParamOption, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
782                     .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
783                         .addComponent(rbFfmpegOptionFile)
784                         .addPreferredGap(ComponentPlacement.RELATED)
785                         .addComponent(cmbFfmpegOptionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
786                     .addComponent(rbFfmpegOptionDirectInput))
787                 .addContainerGap())
788         );
789         gl_pnlFfmpegParam.setVerticalGroup(
790             gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
791             .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
792                 .addContainerGap()
793                 .addGroup(gl_pnlFfmpegParam.createParallelGroup(Alignment.BASELINE)
794                     .addComponent(rbFfmpegOptionFile)
795                     .addComponent(cmbFfmpegOptionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
796                 .addPreferredGap(ComponentPlacement.RELATED)
797                 .addComponent(rbFfmpegOptionDirectInput)
798                 .addPreferredGap(ComponentPlacement.RELATED)
799                 .addComponent(pnlFfmpegParamOption, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
800                 .addContainerGap())
801         );
802
803         GroupLayout gl_pnlFfmpeg = new GroupLayout(pnlFfmpeg);
804         pnlFfmpeg.setLayout(gl_pnlFfmpeg);
805         gl_pnlFfmpeg.setHorizontalGroup(
806             gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
807             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFfmpeg.createSequentialGroup()
808                 .addContainerGap()
809                 .addGroup(gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.TRAILING)
810                     .addComponent(pnlFfmpegParam, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
811                     .addComponent(jPanel10, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
812                 .addContainerGap())
813         );
814         gl_pnlFfmpeg.setVerticalGroup(
815             gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
816             .addGroup(gl_pnlFfmpeg.createSequentialGroup()
817                 .addContainerGap()
818                 .addComponent(jPanel10, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
819                 .addPreferredGap(ComponentPlacement.RELATED)
820                 .addComponent(pnlFfmpegParam, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
821                 .addContainerGap())
822         );
823
824         tabbedPane.addTab("ffmpeg", pnlFfmpeg);
825
826         pnlNgWord.setBorder(BorderFactory.createTitledBorder("NGワード"));
827
828         lstNgWord.setModel(mdlNgWord);
829         scrNgWord.setViewportView(lstNgWord);
830
831         btnNgWordAdd.setText("追加");
832
833         btnNgWordDel.setText("削除");
834
835         GroupLayout gl_pnlNgWord = new GroupLayout(pnlNgWord);
836         pnlNgWord.setLayout(gl_pnlNgWord);
837         gl_pnlNgWord.setHorizontalGroup(
838             gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
839             .addGroup(gl_pnlNgWord.createSequentialGroup()
840                 .addContainerGap()
841                 .addGroup(gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
842                     .addComponent(scrNgWord, GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
843                     .addGroup(gl_pnlNgWord.createSequentialGroup()
844                         .addComponent(fldNgWord, GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
845                         .addPreferredGap(ComponentPlacement.RELATED)
846                         .addComponent(btnNgWordAdd)
847                         .addGap(18, 18, 18)
848                         .addComponent(btnNgWordDel)))
849                 .addContainerGap())
850         );
851         gl_pnlNgWord.setVerticalGroup(
852             gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
853             .addGroup(gl_pnlNgWord.createSequentialGroup()
854                 .addComponent(scrNgWord, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
855                 .addPreferredGap(ComponentPlacement.RELATED)
856                 .addGroup(gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.BASELINE)
857                     .addComponent(fldNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
858                     .addComponent(btnNgWordDel)
859                     .addComponent(btnNgWordAdd))
860                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
861         );
862
863         pnlNgId.setBorder(BorderFactory.createTitledBorder("NGID"));
864
865         lstNgId.setModel(mdlNgId);
866         scrNgId.setViewportView(lstNgId);
867
868         btnNgIdAdd.setText("追加");
869
870         btnNgIdDel.setText("削除");
871
872         GroupLayout gl_pnlNgId = new GroupLayout(pnlNgId);
873         pnlNgId.setLayout(gl_pnlNgId);
874         gl_pnlNgId.setHorizontalGroup(
875             gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
876             .addGroup(gl_pnlNgId.createSequentialGroup()
877                 .addContainerGap()
878                 .addGroup(gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
879                     .addComponent(scrNgId, GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
880                     .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNgId.createSequentialGroup()
881                         .addComponent(fldNgId, GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
882                         .addPreferredGap(ComponentPlacement.RELATED)
883                         .addComponent(btnNgIdAdd)
884                         .addGap(18, 18, 18)
885                         .addComponent(btnNgIdDel)))
886                 .addContainerGap())
887         );
888         gl_pnlNgId.setVerticalGroup(
889             gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
890             .addGroup(gl_pnlNgId.createSequentialGroup()
891                 .addComponent(scrNgId, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
892                 .addPreferredGap(ComponentPlacement.RELATED)
893                 .addGroup(gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.BASELINE)
894                     .addComponent(fldNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
895                     .addComponent(btnNgIdDel)
896                     .addComponent(btnNgIdAdd))
897                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
898         );
899
900         GroupLayout gl_pnlNgSetting = new GroupLayout(pnlNgSetting);
901         pnlNgSetting.setLayout(gl_pnlNgSetting);
902         gl_pnlNgSetting.setHorizontalGroup(
903             gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
904             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNgSetting.createSequentialGroup()
905                 .addContainerGap()
906                 .addGroup(gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.TRAILING)
907                     .addComponent(pnlNgId, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
908                     .addComponent(pnlNgWord, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
909                 .addContainerGap())
910         );
911         gl_pnlNgSetting.setVerticalGroup(
912             gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
913             .addGroup(gl_pnlNgSetting.createSequentialGroup()
914                 .addContainerGap()
915                 .addComponent(pnlNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
916                 .addPreferredGap(ComponentPlacement.RELATED)
917                 .addComponent(pnlNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
918                 .addContainerGap(82, Short.MAX_VALUE))
919         );
920
921         tabbedPane.addTab("NG設定", pnlNgSetting);
922
923         pnlSearchVideo.setBorder(BorderFactory.createTitledBorder("動画検索対象フォルダ"));
924
925         lstSearchVideo.setModel(mdlSearchVideo);
926         srcSearchVideo.setViewportView(lstSearchVideo);
927
928         btnSearchVideoAdd.setText("追加...");
929
930         btnSearchVideoDel.setText("削除");
931
932         GroupLayout gl_pnlSearchVideo = new GroupLayout(pnlSearchVideo);
933         pnlSearchVideo.setLayout(gl_pnlSearchVideo);
934         gl_pnlSearchVideo.setHorizontalGroup(
935             gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
936             .addComponent(srcSearchVideo, GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE)
937             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearchVideo.createSequentialGroup()
938                 .addContainerGap(269, Short.MAX_VALUE)
939                 .addComponent(btnSearchVideoAdd)
940                 .addGap(18, 18, 18)
941                 .addComponent(btnSearchVideoDel)
942                 .addContainerGap())
943         );
944         gl_pnlSearchVideo.setVerticalGroup(
945             gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
946             .addGroup(gl_pnlSearchVideo.createSequentialGroup()
947                 .addComponent(srcSearchVideo, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
948                 .addPreferredGap(ComponentPlacement.RELATED)
949                 .addGroup(gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
950                     .addComponent(btnSearchVideoDel)
951                     .addComponent(btnSearchVideoAdd))
952                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
953         );
954
955         pnlSearchComment.setBorder(BorderFactory.createTitledBorder("コメント検索対象フォルダ"));
956
957         lstSearchComment.setModel(mdlSearchComment);
958         srcSearchComment.setViewportView(lstSearchComment);
959
960         btnSearchCommentAdd.setText("追加...");
961
962         btnSearchCommentDel.setText("削除");
963
964         GroupLayout gl_pnlSearchComment = new GroupLayout(pnlSearchComment);
965         pnlSearchComment.setLayout(gl_pnlSearchComment);
966         gl_pnlSearchComment.setHorizontalGroup(
967             gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.LEADING)
968             .addComponent(srcSearchComment, GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE)
969             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearchComment.createSequentialGroup()
970                 .addContainerGap(269, Short.MAX_VALUE)
971                 .addComponent(btnSearchCommentAdd)
972                 .addGap(18, 18, 18)
973                 .addComponent(btnSearchCommentDel)
974                 .addContainerGap())
975         );
976         gl_pnlSearchComment.setVerticalGroup(
977             gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.LEADING)
978             .addGroup(gl_pnlSearchComment.createSequentialGroup()
979                 .addComponent(srcSearchComment, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
980                 .addPreferredGap(ComponentPlacement.RELATED)
981                 .addGroup(gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
982                     .addComponent(btnSearchCommentDel)
983                     .addComponent(btnSearchCommentAdd))
984                 .addContainerGap(16, Short.MAX_VALUE))
985         );
986
987         pnlSearchCache.setBorder(BorderFactory.createEtchedBorder());
988
989         lblSearchCache.setText("キャッシュ更新(秒)");
990
991         GroupLayout gl_pnlSearchCache = new GroupLayout(pnlSearchCache);
992         pnlSearchCache.setLayout(gl_pnlSearchCache);
993         gl_pnlSearchCache.setHorizontalGroup(
994             gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.LEADING)
995             .addGroup(gl_pnlSearchCache.createSequentialGroup()
996                 .addContainerGap()
997                 .addComponent(lblSearchCache)
998                 .addPreferredGap(ComponentPlacement.RELATED)
999                 .addComponent(fldSearchCache, GroupLayout.PREFERRED_SIZE, 55, GroupLayout.PREFERRED_SIZE)
1000                 .addContainerGap(269, Short.MAX_VALUE))
1001         );
1002         gl_pnlSearchCache.setVerticalGroup(
1003             gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.LEADING)
1004             .addGroup(gl_pnlSearchCache.createSequentialGroup()
1005                 .addContainerGap()
1006                 .addGroup(gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.BASELINE)
1007                     .addComponent(lblSearchCache)
1008                     .addComponent(fldSearchCache, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
1009                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
1010         );
1011
1012         GroupLayout gl_pnlSearch = new GroupLayout(pnlSearch);
1013         pnlSearch.setLayout(gl_pnlSearch);
1014         gl_pnlSearch.setHorizontalGroup(
1015             gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
1016             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearch.createSequentialGroup()
1017                 .addContainerGap()
1018                 .addGroup(gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.TRAILING)
1019                     .addComponent(pnlSearchCache, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1020                     .addComponent(pnlSearchComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1021                     .addComponent(pnlSearchVideo, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
1022                 .addContainerGap())
1023         );
1024         gl_pnlSearch.setVerticalGroup(
1025             gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
1026             .addGroup(gl_pnlSearch.createSequentialGroup()
1027                 .addContainerGap()
1028                 .addComponent(pnlSearchVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
1029                 .addPreferredGap(ComponentPlacement.RELATED)
1030                 .addComponent(pnlSearchComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
1031                 .addPreferredGap(ComponentPlacement.RELATED)
1032                 .addComponent(pnlSearchCache, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
1033                 .addContainerGap(27, Short.MAX_VALUE))
1034         );
1035
1036         tabbedPane.addTab("検索", pnlSearch);
1037
1038         final JPanel pnlButton = new JPanel();
1039         final JButton btnOk = new JButton("OK");
1040         final JButton btnCancel = new JButton("Cancel");
1041         pnlButton.add(btnOk);
1042         pnlButton.add(btnCancel);
1043
1044         GroupLayout layout = new GroupLayout(getContentPane());
1045         getContentPane().setLayout(layout);
1046         layout.setHorizontalGroup(
1047             layout.createParallelGroup(GroupLayout.Alignment.LEADING)
1048             .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, 460, Short.MAX_VALUE)
1049             .addComponent(pnlButton)
1050         );
1051         layout.setVerticalGroup(
1052             layout.createSequentialGroup()
1053                 .addComponent(tabbedPane,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
1054                 .addComponent(pnlButton)
1055         );
1056
1057         pack();
1058         setResizable(false);
1059         loadConfig();
1060     }
1061
1062     /**
1063      * @param args the command line arguments
1064      */
1065     public static void main(String args[]) {
1066         /* Set the Nimbus look and feel */
1067         //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
1068         /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
1069          * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
1070          */
1071         try {
1072             for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
1073                 if ("Nimbus".equals(info.getName())) {
1074                     UIManager.setLookAndFeel(info.getClassName());
1075                     break;
1076                 }
1077             }
1078         } catch (ClassNotFoundException ex) {
1079             java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
1080         } catch (InstantiationException ex) {
1081             java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
1082         } catch (IllegalAccessException ex) {
1083             java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
1084         } catch (UnsupportedLookAndFeelException ex) {
1085             java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
1086         }
1087         //</editor-fold>
1088
1089         /* Create and display the form */
1090         java.awt.EventQueue.invokeLater(new Runnable() {
1091
1092             @Override
1093             public void run() {
1094                 new ConfigDialog().setVisible(true);
1095             }
1096         });
1097     }
1098     // Variables declaration - do not modify//GEN-BEGIN:variables
1099
1100     // ネットワーク
1101     // ネットワーク - アカウント
1102     private final JTextField fldMail;
1103     private final JTextField fldPassword;
1104     // ネットワーク - プロキシ
1105     private final JCheckBox cbProxyUse;
1106     private final JTextField fldProxyHost;
1107     private final JTextField fldProxyPort;
1108     // ファイル
1109     // ファイル - 動画
1110     private final JTextField fldVideoDir;
1111     private final JButton btnVideoDir;
1112     private final JTextField fldVideoFileNamePattern;
1113     private final JCheckBox cbVideoLocal;
1114     // ファイル - コメント
1115     private final JTextField fldCommentDir;
1116     private final JButton btnCommentDir;
1117     private final JTextField fldCommentFileNamePattern;
1118     private final JCheckBox cbCommentLocal;
1119     // ファイル - 変換動画
1120     private final JTextField fldOutputDir;
1121     private final JTextField fldOutputFileNamePattern;
1122     private final JButton btnOutputDir;
1123     private final JCheckBox cbOutputEnable;
1124     private final JCheckBox cbOutputCommentOverlay;
1125     private final JCheckBox cbOutputDisplayProgress;
1126     // ファイル - 禁則文字
1127     private final JTextField fldReplaceFrom = new JTextField();
1128     private final JTextField fldReplaceTo = new JTextField();
1129     // コメント
1130     // コメント
1131     private final JCheckBox cbCommentSizeAuto;
1132     private final JTextField fldCommentSizeManual;
1133     private final JCheckBox cbCommentMinSizeAuto;
1134     private final JTextField fldCommentMinSizeManual;
1135     private final JCheckBox cbCommentDisplaySizeDefault;
1136     private final JTextField fldCommentDisplaySizeManual;
1137     // コメント - 高度な設定
1138     private final JTextField fldFontPath;
1139     private final JButton btnFontPath;
1140     private final JTextField fldFontIndex;
1141     private final JComboBox<String> cmbFontShadow = new JComboBox<>();
1142     private final JCheckBox cbFontSizeArrangeDisable;
1143     private final JCheckBox cbCommentOpaque;
1144     // ffmpeg
1145     // ffmpeg - ファイルパス
1146     private final JTextField fldFfmpegPath;
1147     private final JButton btnFfmpegPath;
1148     private final JTextField fldFfmpegDllPath;
1149     private final JButton btnFfmpegDllPath;
1150     // ffmpeg - ffmpegパラメータ
1151     private final JRadioButton rbFfmpegOptionFile;
1152     private final JRadioButton rbFfmpegOptionDirectInput;
1153     private final JComboBox cmbFfmpegOptionFile;
1154     private final JTextField fldFfmpegOptionExtension;
1155     private final JTextField fldFfmpegOptionMain;
1156     private final JTextField fldFfmpegOptionIn;
1157     private final JTextField fldFfmpegOptionOut;
1158     private final JTextField fldFfmpegOptionAv;
1159     private final JCheckBox cbFfmpegOptionResize;
1160     private final JTextField fldFfmpegOptionResizeWidth;
1161     private final JTextField fldFfmpegOptionResizeHeight;
1162     private final JCheckBox cbFfmpegOptionKeepAspect;
1163     // NG設定
1164     // NG設定 - NGワード
1165     private final JList<String> lstNgWord;
1166     private final DefaultListModel<String> mdlNgWord = new DefaultListModel<>();
1167     private final JTextField fldNgWord;
1168     private final JButton btnNgWordAdd;
1169     private final JButton btnNgWordDel;
1170     // NG設定 - NGID
1171     private final JList<String> lstNgId;
1172     private final DefaultListModel<String> mdlNgId = new DefaultListModel<>();
1173     private final JTextField fldNgId;
1174     private final JButton btnNgIdAdd;
1175     private final JButton btnNgIdDel;
1176     // 検索
1177     // 検索 - 動画検索対象フォルダ
1178     private final JList<String> lstSearchVideo;
1179     private final DefaultListModel<String> mdlSearchVideo = new DefaultListModel<>();
1180     private final JButton btnSearchVideoAdd;
1181     private final JButton btnSearchVideoDel;
1182     // 検索 - コメント検索対象フォルダ
1183     private final JList<String> lstSearchComment;
1184     private final DefaultListModel<String> mdlSearchComment = new DefaultListModel<>();
1185     private final JButton btnSearchCommentAdd;
1186     private final JButton btnSearchCommentDel;
1187     // 検索 - キャッシュ更新(秒)
1188     private final JTextField fldSearchCache;
1189
1190
1191     // End of variables declaration//GEN-END:variables
1192
1193     private void loadConfig() {
1194         final Config p = Config.INSTANCE;
1195
1196         /*
1197          * ネットワーク - アカウント
1198          */
1199         fldMail.setText(p.getId());
1200         fldPassword.setText(p.getPassword());
1201
1202         /*
1203          * ネットワーク - プロキシ
1204          */
1205         cbProxyUse.setSelected(p.getProxyUse());
1206         fldProxyHost.setText(p.getProxyHost());
1207         fldProxyPort.setText(p.getProxyPort());
1208
1209         /*
1210          * ファイル - 動画
1211          */
1212         fldVideoDir.setText(p.getVideoDir());
1213         fldVideoFileNamePattern.setText(p.getVideoFileNamePattern());
1214         cbVideoLocal.setSelected(p.getVideoUseLocal());
1215
1216         /*
1217          * ファイル - コメント
1218          */
1219         fldCommentDir.setText(p.getCommentDir());
1220         fldCommentFileNamePattern.setText(p.getCommentFileNamePattern());
1221         cbCommentLocal.setSelected(p.getCommentUseLocal());
1222
1223         /*
1224          * ファイル - 変換動画
1225          */
1226         fldOutputDir.setText(p.getOutputDir());
1227         fldOutputFileNamePattern.setText(p.getOutputFileNamePattern());
1228         cbOutputEnable.setSelected(p.getOutputEnable());
1229         cbOutputCommentOverlay.setSelected(p.getOutputCommentOverlay());
1230         cbOutputDisplayProgress.setSelected(p.getOutputDisplayProgress());
1231
1232         /*
1233          * ファイル - 禁則文字
1234          */
1235         // TODO ファイル - 禁則文字
1236
1237         /**
1238          * コメント
1239          */
1240         cbCommentSizeAuto.setSelected(p.getCommentSizeAutosize());
1241         fldCommentSizeManual.setText(p.getCommentSizeManual());
1242         cbCommentMinSizeAuto.setSelected(p.getCommentMinSizeAutosize());
1243         fldCommentSizeManual.setText(p.getCommentMinSizeManual());
1244         cbCommentDisplaySizeDefault.setSelected(p.getCommentDisplaySizeDefault());
1245         fldCommentDisplaySizeManual.setText(p.getCommentDisplaySizeManual());
1246
1247         /**
1248          * コメント - 高度な設定
1249          */
1250         fldFontPath.setText(p.getFontPath());
1251         fldFontIndex.setText(p.getFontIndex());
1252         // TODO 影の種類はコンボボックス
1253         cbFontSizeArrangeDisable.setSelected(p.getFontSizeArrangeDisable());
1254         cbCommentOpaque.setSelected(p.getCommentOpaque());
1255
1256         /*
1257          * ffmpeg - ファイルパス
1258          */
1259         fldFfmpegPath.setText(p.getFfmpegPath());
1260         fldFfmpegDllPath.setText(p.getFfmpegDllPath());
1261
1262         /*
1263          * ffmpeg - ffmpegパラメータ
1264          */
1265         rbFfmpegOptionFile.setSelected(!p.getFfmpegParamInputDirect());
1266         rbFfmpegOptionDirectInput.setSelected(p.getFfmpegParamInputDirect());
1267         // TODO cmbFfmpegOptionFile
1268         fldFfmpegOptionExtension.setText(p.getFfmpegExtension());
1269         fldFfmpegOptionMain.setText(p.getFfmpegMainOption());
1270         fldFfmpegOptionIn.setText(p.getFfmpegInOption());
1271         fldFfmpegOptionOut.setText(p.getFfmpegOutOption());
1272         fldFfmpegOptionAv.setText(p.getFfmpegAvOption());
1273         cbFfmpegOptionResize.setSelected(p.getFfmpegResizeEnable());
1274         fldFfmpegOptionResizeWidth.setText(p.getFfmpegResizeWidth());
1275         fldFfmpegOptionResizeHeight.setText(p.getFfmpegResizeHeight());
1276         cbFfmpegOptionKeepAspect.setSelected(p.getFfmpegKeepAspect());
1277
1278         /*
1279          * NG 設定
1280          */
1281         final List<String> ngWords = p.getNgWords();
1282         for (String s : ngWords) {
1283             mdlNgWord.addElement(s);
1284         }
1285         final List<String> ngIds = p.getNgIds();
1286         for (String s : ngIds) {
1287             mdlNgId.addElement(s);
1288         }
1289     }
1290     private void saveConfig() {
1291         final Config p = Config.INSTANCE;
1292
1293         /*
1294          * ネットワーク - アカウント
1295          */
1296
1297         p.setId(fldMail.getText());
1298         p.setPassword(fldPassword.getText());
1299
1300         /*
1301          * ネットワーク - プロキシ
1302          */
1303         p.setProxyUse(cbProxyUse.isSelected());
1304         p.setProxyHost(fldProxyHost.getText());
1305         p.setProxyPort(fldProxyPort.getText());
1306
1307         /*
1308          * ファイル - 動画
1309          */
1310         p.setVideoDir(fldVideoDir.getText());
1311         p.setVideoFileNamePattern(fldVideoFileNamePattern.getText());
1312         p.setVideoUseLocal(cbVideoLocal.isSelected());
1313
1314         /*
1315          * ファイル - コメント
1316          */
1317         p.setCommentDir(fldCommentDir.getText());
1318         p.setCommentFileNamePattern(fldCommentFileNamePattern.getText());
1319         p.setCommentUseLocal(cbCommentLocal.isSelected());
1320
1321         /*
1322          * ファイル - 変換動画
1323          */
1324         p.setOutputDir(fldOutputDir.getText());
1325         p.setOutputFileNamePattern(fldOutputFileNamePattern.getText());
1326         p.setOutputEnable(cbOutputEnable.isSelected());
1327         p.setOutputCommentOverlay(cbOutputCommentOverlay.isSelected());
1328         p.setOutputDisplayProgress(cbOutputDisplayProgress.isSelected());
1329
1330         /**
1331          * コメント
1332          */
1333         p.setCommentSizeAutosize(cbCommentSizeAuto.isSelected());
1334         p.setCommentSizeManual(fldCommentSizeManual.getText());
1335         p.setCommentMinSizeAutosize(cbCommentMinSizeAuto.isSelected());
1336         p.setCommentMinSizeManual(fldCommentSizeManual.getText());
1337         p.setCommentDisplaySizeDefault(cbCommentDisplaySizeDefault.isSelected());
1338         p.setCommentDisplaySizeManual(fldCommentDisplaySizeManual.getText());
1339
1340         /**
1341          * コメント - 高度な設定
1342          */
1343         p.setFontPath(fldFontPath.getText());
1344         p.setFontIndex(fldFontIndex.getText());
1345         // TODO 影の種類はコンボボックス
1346         p.setFontSizeArrangeDisable(cbFontSizeArrangeDisable.isSelected());
1347         p.setCommentOpaque(cbCommentOpaque.isSelected());
1348
1349         /*
1350          * ffmpeg - ファイルパス
1351          */
1352         p.setFfmpegPath(fldFfmpegPath.getText());
1353         p.setFfmpegDllPath(fldFfmpegDllPath.getText());
1354
1355         /*
1356          * ffmpeg - ffmpegパラメータ
1357          */
1358         p.setFfmpegParamInputDirect(rbFfmpegOptionDirectInput.isSelected());
1359         // TODO cmbFfmpegOptionFile
1360         p.setFfmpegExtension(fldFfmpegOptionExtension.getText());
1361         p.setFfmpegMainOption(fldFfmpegOptionMain.getText());
1362         p.setFfmpegInOption(fldFfmpegOptionIn.getText());
1363         p.setFfmpegOutOption(fldFfmpegOptionOut.getText());
1364         p.setFfmpegAvOption(fldFfmpegOptionAv.getText());
1365         p.setFfmpegResizeEnable(cbFfmpegOptionResize.isSelected());
1366         p.setFfmpegResizeWidth(fldFfmpegOptionResizeWidth.getText());
1367         p.setFfmpegResizeHeight(fldFfmpegOptionResizeHeight.getText());
1368         p.setFfmpegKeepAspect(cbFfmpegOptionKeepAspect.isSelected());
1369
1370         /*
1371          * NG 設定
1372          */
1373         p.setNgWords(Arrays.asList((String[]) mdlNgWord.toArray()));
1374         p.setNgIds(Arrays.asList((String[])mdlNgId.toArray()));
1375
1376     }
1377 }