4 * Created on 2011/08/20, 16:33:03
6 package yukihane.inqubus.gui;
8 import static javax.swing.GroupLayout.DEFAULT_SIZE;
9 import static javax.swing.GroupLayout.PREFERRED_SIZE;
11 import java.awt.event.ActionEvent;
12 import java.awt.event.ActionListener;
14 import java.util.List;
15 import java.util.logging.Level;
16 import java.util.logging.Logger;
17 import javax.swing.BorderFactory;
18 import javax.swing.ComboBoxModel;
19 import javax.swing.DefaultComboBoxModel;
20 import javax.swing.GroupLayout;
21 import javax.swing.GroupLayout.Alignment;
22 import javax.swing.JButton;
23 import javax.swing.JCheckBox;
24 import javax.swing.JComboBox;
25 import javax.swing.JDialog;
26 import javax.swing.JFrame;
27 import javax.swing.JLabel;
28 import javax.swing.JPanel;
29 import javax.swing.JTabbedPane;
30 import javax.swing.JTextField;
31 import javax.swing.LayoutStyle.ComponentPlacement;
32 import javax.swing.UIManager;
33 import javax.swing.UnsupportedLookAndFeelException;
34 import javax.swing.WindowConstants;
35 import org.apache.commons.configuration.ConfigurationException;
36 import yukihane.inqubus.Config;
42 public class ConfigDialog extends JDialog {
43 private static final long serialVersionUID = 1L;
44 private static final Logger logger = Logger.getLogger(ConfigDialog.class.getName());
46 /** Creates new form Properties */
47 public ConfigDialog() {
51 public ConfigDialog(JFrame owner){
54 final JTabbedPane tabbedPane = new JTabbedPane();
55 final JPanel pnlNetwork = new JPanel();
56 final JPanel pnlAccount = new JPanel();
57 final JLabel lblMail = new JLabel();
58 fldMail = new JTextField();
59 final JLabel lblPassword = new JLabel();
60 fldPassword = new JTextField();
61 final JPanel pnlProxy = new JPanel();
62 cbProxyUse = new JCheckBox();
63 final JLabel lblProxyHost = new JLabel();
64 final JLabel lblProxyPort = new JLabel();
65 fldProxyHost = new JTextField();
66 fldProxyPort = new JTextField();
67 final JPanel pnlFile = new JPanel();
68 final JPanel pnlFileVideo = new JPanel();
69 final JLabel lblVideoDir = new JLabel();
70 final JLabel lblVideoFileNamepattern = new JLabel();
71 fldVideoDir = new JTextField();
72 fldVideoFileNamePattern = new JTextField();
73 btnVideoDir = new JButton();
74 cbVideoLocal = new JCheckBox();
75 final JPanel pnlFileComment = new JPanel();
76 final JLabel lblCommentDir = new JLabel();
77 final JLabel lblCommentFileNamePattern = new JLabel();
78 fldCommentDir = new JTextField();
79 fldCommentFileNamePattern = new JTextField();
80 btnCommentDir = new JButton();
81 cbCommentLocal = new JCheckBox();
82 final JPanel pnlFileOutput = new JPanel();
83 final JLabel lblOutputDir = new JLabel();
84 final JLabel lblOutputFileNamePattern = new JLabel();
85 fldOutputDir = new JTextField();
86 fldOutputFileNamePattern = new JTextField();
87 btnOutputDir = new JButton();
88 cbOutputEnable = new JCheckBox();
89 cbOutputCommentOverlay = new JCheckBox();
90 cbOutputDisplayProgress = new JCheckBox();
91 final JPanel pnlComment = new JPanel();
92 final JPanel pnlCommentStandard = new JPanel();
93 final JLabel lblCommentSize = new JLabel();
94 cbCommentSizeAuto = new JCheckBox();
95 final JLabel lblCommentSizeManual = new JLabel();
96 fldCommentSizeManual = new JTextField();
97 final JLabel lblCommentMinSize = new JLabel();
98 cbCommentMinSizeAuto = new JCheckBox();
99 fldCommentMinSizeManual = new JTextField();
100 final JLabel lblCommentMinSizeManual = new JLabel();
101 final JLabel lblCommentDisplayMax = new JLabel();
102 cbCommentDisplaySizeDefault = new JCheckBox();
103 final JLabel lblCommentDisplayMaxManual = new JLabel();
104 fldCommentDisplaySizeManual = new JTextField();
105 final JPanel pnlCommentAdvanced = new JPanel();
106 final JLabel lblFontPath = new JLabel();
107 cbFontSizeArrangeDisable = new JCheckBox();
108 cbCommentOpaque = new JCheckBox();
109 fldFontPath = new JTextField();
110 btnFontPath = new JButton();
111 final JLabel lblFontIndex = new JLabel();
112 final JLabel lblFontShadow = new JLabel();
113 fldFontIndex = new JTextField();
114 final JPanel pnlFfmpeg = new JPanel();
115 final JPanel jPanel10 = new JPanel();
116 final JLabel lblFfmpegPath = new JLabel();
117 final JLabel lblFfmpegDllPath = new JLabel();
118 fldFfmpegPath = new JTextField();
119 fldFfmpegDllPath = new JTextField();
120 btnFfmpegPath = new JButton();
121 btnFfmpegDllPath = new JButton();
122 final JPanel pnlNgSetting = new JPanel();
123 final JPanel pnlSearch = new JPanel();
124 final JPanel pnlSearchCache = new JPanel();
125 final JLabel lblSearchCache = new JLabel();
126 fldSearchCache = new JTextField();
128 setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
130 pnlNetwork.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
132 pnlAccount.setBorder(BorderFactory.createTitledBorder("アカウント"));
134 lblMail.setText("ID(メールアドレス)");
136 lblPassword.setText("パスワード");
138 GroupLayout gl_pnlAccount = new GroupLayout(pnlAccount);
139 pnlAccount.setLayout(gl_pnlAccount);
140 gl_pnlAccount.setHorizontalGroup(
141 gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
142 .addGroup(gl_pnlAccount.createSequentialGroup()
144 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
145 .addComponent(lblMail)
146 .addComponent(lblPassword))
147 .addPreferredGap(ComponentPlacement.RELATED)
148 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
149 .addComponent(fldPassword, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE)
150 .addComponent(fldMail, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE))
153 gl_pnlAccount.setVerticalGroup(
154 gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
155 .addGroup(gl_pnlAccount.createSequentialGroup()
157 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.BASELINE)
158 .addComponent(lblMail)
159 .addComponent(fldMail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
160 .addPreferredGap(ComponentPlacement.RELATED)
161 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.BASELINE)
162 .addComponent(lblPassword)
163 .addComponent(fldPassword, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
164 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
167 pnlProxy.setBorder(BorderFactory.createTitledBorder("プロキシ"));
169 cbProxyUse.setText("プロキシを使用する");
171 lblProxyHost.setText("ホスト名");
173 lblProxyPort.setText("ポート番号");
175 GroupLayout gl_pnlProxy = new GroupLayout(pnlProxy);
176 pnlProxy.setLayout(gl_pnlProxy);
177 gl_pnlProxy.setHorizontalGroup(
178 gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
179 .addGroup(gl_pnlProxy.createSequentialGroup()
181 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
182 .addComponent(cbProxyUse)
183 .addGroup(gl_pnlProxy.createSequentialGroup()
184 .addComponent(lblProxyHost)
186 .addComponent(fldProxyHost, GroupLayout.PREFERRED_SIZE, 168, GroupLayout.PREFERRED_SIZE))
187 .addGroup(gl_pnlProxy.createSequentialGroup()
188 .addComponent(lblProxyPort)
189 .addPreferredGap(ComponentPlacement.RELATED)
190 .addComponent(fldProxyPort, GroupLayout.PREFERRED_SIZE, 76, GroupLayout.PREFERRED_SIZE)))
191 .addContainerGap(181, Short.MAX_VALUE))
193 gl_pnlProxy.setVerticalGroup(
194 gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
195 .addGroup(gl_pnlProxy.createSequentialGroup()
197 .addComponent(cbProxyUse)
198 .addPreferredGap(ComponentPlacement.RELATED)
199 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.BASELINE)
200 .addComponent(lblProxyHost)
201 .addComponent(fldProxyHost, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
202 .addPreferredGap(ComponentPlacement.RELATED)
203 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.BASELINE)
204 .addComponent(lblProxyPort)
205 .addComponent(fldProxyPort, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
206 .addContainerGap(39, Short.MAX_VALUE))
209 GroupLayout gl_pnlNetwork = new GroupLayout(pnlNetwork);
210 pnlNetwork.setLayout(gl_pnlNetwork);
211 gl_pnlNetwork.setHorizontalGroup(
212 gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.LEADING)
213 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNetwork.createSequentialGroup()
215 .addGroup(gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.TRAILING)
216 .addComponent(pnlProxy, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
217 .addComponent(pnlAccount, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
220 gl_pnlNetwork.setVerticalGroup(
221 gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.LEADING)
222 .addGroup(gl_pnlNetwork.createSequentialGroup()
224 .addComponent(pnlAccount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
225 .addPreferredGap(ComponentPlacement.RELATED)
226 .addComponent(pnlProxy, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
227 .addContainerGap(178, Short.MAX_VALUE))
230 tabbedPane.addTab("ネットワーク", pnlNetwork);
232 pnlFileVideo.setBorder(BorderFactory.createTitledBorder("動画"));
234 lblVideoDir.setText("保存フォルダ");
236 lblVideoFileNamepattern.setText("ファイル名規則");
238 btnVideoDir.setText("...");
240 cbVideoLocal.setText("local");
242 GroupLayout gl_pnlFileVideo = new GroupLayout(pnlFileVideo);
243 pnlFileVideo.setLayout(gl_pnlFileVideo);
244 gl_pnlFileVideo.setHorizontalGroup(
245 gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
246 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileVideo.createSequentialGroup()
248 .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
249 .addComponent(lblVideoFileNamepattern)
250 .addComponent(lblVideoDir))
251 .addPreferredGap(ComponentPlacement.RELATED)
252 .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
253 .addGroup(gl_pnlFileVideo.createSequentialGroup()
254 .addComponent(fldVideoDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
255 .addPreferredGap(ComponentPlacement.RELATED)
256 .addComponent(btnVideoDir))
257 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileVideo.createSequentialGroup()
258 .addComponent(fldVideoFileNamePattern, GroupLayout.PREFERRED_SIZE, 165, GroupLayout.PREFERRED_SIZE)
259 .addPreferredGap(ComponentPlacement.RELATED, 94, Short.MAX_VALUE)
260 .addComponent(cbVideoLocal)))
263 gl_pnlFileVideo.setVerticalGroup(
264 gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
265 .addGroup(gl_pnlFileVideo.createSequentialGroup()
266 .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
267 .addComponent(lblVideoDir)
268 .addComponent(fldVideoDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
269 .addComponent(btnVideoDir))
270 .addPreferredGap(ComponentPlacement.RELATED)
271 .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
272 .addComponent(lblVideoFileNamepattern)
273 .addComponent(fldVideoFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
274 .addComponent(cbVideoLocal))
275 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
278 pnlFileComment.setBorder(BorderFactory.createTitledBorder("コメント"));
280 lblCommentDir.setText("保存フォルダ");
282 lblCommentFileNamePattern.setText("ファイル名規則");
284 btnCommentDir.setText("...");
286 cbCommentLocal.setText("local");
288 GroupLayout gl_pnlFileComment = new GroupLayout(pnlFileComment);
289 pnlFileComment.setLayout(gl_pnlFileComment);
290 gl_pnlFileComment.setHorizontalGroup(
291 gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
292 .addGroup(gl_pnlFileComment.createSequentialGroup()
294 .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
295 .addComponent(lblCommentFileNamePattern)
296 .addComponent(lblCommentDir))
297 .addPreferredGap(ComponentPlacement.RELATED)
298 .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
299 .addGroup(gl_pnlFileComment.createSequentialGroup()
300 .addComponent(fldCommentFileNamePattern, GroupLayout.PREFERRED_SIZE, 166, GroupLayout.PREFERRED_SIZE)
301 .addPreferredGap(ComponentPlacement.RELATED, 93, Short.MAX_VALUE)
302 .addComponent(cbCommentLocal))
303 .addGroup(gl_pnlFileComment.createSequentialGroup()
304 .addComponent(fldCommentDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
305 .addPreferredGap(ComponentPlacement.RELATED)
306 .addComponent(btnCommentDir)))
309 gl_pnlFileComment.setVerticalGroup(
310 gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
311 .addGroup(gl_pnlFileComment.createSequentialGroup()
312 .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
313 .addComponent(lblCommentDir)
314 .addComponent(fldCommentDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
315 .addComponent(btnCommentDir))
316 .addPreferredGap(ComponentPlacement.RELATED)
317 .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
318 .addComponent(lblCommentFileNamePattern)
319 .addComponent(fldCommentFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
320 .addComponent(cbCommentLocal))
321 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
324 pnlFileOutput.setBorder(BorderFactory.createTitledBorder("変換動画"));
326 lblOutputDir.setText("保存フォルダ");
328 lblOutputFileNamePattern.setText("ファイル名規則");
330 btnOutputDir.setText("...");
332 cbOutputEnable.setText("変換");
334 cbOutputCommentOverlay.setText("コメント付与");
336 cbOutputDisplayProgress.setText("変換中動画表示");
338 GroupLayout gl_pnlFileOutput = new GroupLayout(pnlFileOutput);
339 pnlFileOutput.setLayout(gl_pnlFileOutput);
340 gl_pnlFileOutput.setHorizontalGroup(
341 gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
342 .addGroup(gl_pnlFileOutput.createSequentialGroup()
344 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
345 .addComponent(lblOutputFileNamePattern)
346 .addComponent(lblOutputDir))
347 .addPreferredGap(ComponentPlacement.RELATED)
348 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
349 .addGroup(gl_pnlFileOutput.createSequentialGroup()
350 .addComponent(fldOutputDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
351 .addPreferredGap(ComponentPlacement.RELATED)
352 .addComponent(btnOutputDir)
354 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileOutput.createSequentialGroup()
355 .addComponent(fldOutputFileNamePattern, GroupLayout.PREFERRED_SIZE, 167, GroupLayout.PREFERRED_SIZE)
356 .addPreferredGap(ComponentPlacement.RELATED, 23, Short.MAX_VALUE)
357 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
358 .addComponent(cbOutputDisplayProgress)
359 .addGroup(gl_pnlFileOutput.createSequentialGroup()
360 .addComponent(cbOutputEnable)
361 .addPreferredGap(ComponentPlacement.RELATED)
362 .addComponent(cbOutputCommentOverlay))))))
364 gl_pnlFileOutput.setVerticalGroup(
365 gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
366 .addGroup(gl_pnlFileOutput.createSequentialGroup()
367 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.BASELINE)
368 .addComponent(lblOutputDir)
369 .addComponent(fldOutputDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
370 .addComponent(btnOutputDir))
371 .addPreferredGap(ComponentPlacement.RELATED)
372 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.BASELINE)
373 .addComponent(lblOutputFileNamePattern)
374 .addComponent(fldOutputFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
375 .addComponent(cbOutputCommentOverlay)
376 .addComponent(cbOutputEnable))
377 .addPreferredGap(ComponentPlacement.RELATED)
378 .addComponent(cbOutputDisplayProgress)
379 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
382 final JPanel pnlFileProhibit = new JPanel();
383 pnlFileProhibit.setBorder(BorderFactory.createTitledBorder("禁則文字"));
384 final JLabel lblReplaceFrom = new JLabel("置換対象文字");
385 final JLabel lblReplaceTo = new JLabel("置換後文字");
387 final GroupLayout glProhibit = new GroupLayout(pnlFileProhibit);
388 glProhibit.setAutoCreateContainerGaps(true);
389 glProhibit.setAutoCreateGaps(true);
390 pnlFileProhibit.setLayout(glProhibit);
392 glProhibit.setHorizontalGroup(glProhibit.createSequentialGroup()
393 .addGroup(glProhibit.createParallelGroup()
394 .addComponent(lblReplaceFrom)
395 .addComponent(lblReplaceTo)
397 .addGroup(glProhibit.createParallelGroup()
398 .addComponent(fldReplaceFrom)
399 .addComponent(fldReplaceTo)
403 glProhibit.setVerticalGroup(glProhibit.createSequentialGroup()
404 .addGroup(glProhibit.createParallelGroup(Alignment.BASELINE)
405 .addComponent(lblReplaceFrom)
406 .addComponent(fldReplaceFrom)
408 .addGroup(glProhibit.createParallelGroup(Alignment.BASELINE)
409 .addComponent(lblReplaceTo)
410 .addComponent(fldReplaceTo)
414 GroupLayout gl_pnlFile = new GroupLayout(pnlFile);
415 pnlFile.setLayout(gl_pnlFile);
416 gl_pnlFile.setHorizontalGroup(
417 gl_pnlFile.createParallelGroup(GroupLayout.Alignment.LEADING)
418 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFile.createSequentialGroup()
420 .addGroup(gl_pnlFile.createParallelGroup(GroupLayout.Alignment.TRAILING)
421 .addComponent(pnlFileOutput, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
422 .addComponent(pnlFileVideo, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
423 .addComponent(pnlFileComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
424 .addComponent(pnlFileProhibit, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
428 gl_pnlFile.setVerticalGroup(
429 gl_pnlFile.createParallelGroup(GroupLayout.Alignment.LEADING)
430 .addGroup(gl_pnlFile.createSequentialGroup()
432 .addComponent(pnlFileVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
433 .addPreferredGap(ComponentPlacement.RELATED)
434 .addComponent(pnlFileComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
435 .addPreferredGap(ComponentPlacement.RELATED)
436 .addComponent(pnlFileOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
437 .addPreferredGap(ComponentPlacement.RELATED)
438 .addComponent(pnlFileProhibit, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
442 tabbedPane.addTab("ファイル", pnlFile);
444 pnlCommentStandard.setBorder(BorderFactory.createTitledBorder(""));
446 lblCommentSize.setText("再生時間に応じたコメントの取得数");
448 cbCommentSizeAuto.setText("自動調整");
450 lblCommentSizeManual.setText("手動取得");
452 lblCommentMinSize.setText("1分当たりのコメント取得数");
454 cbCommentMinSizeAuto.setText("自動調整");
456 lblCommentMinSizeManual.setText("手動取得");
458 lblCommentDisplayMax.setText("1画面に表示する最大コメント数");
460 cbCommentDisplaySizeDefault.setText("標準(30)");
462 lblCommentDisplayMaxManual.setText("手動設定");
464 GroupLayout gl_pnlCommentStandard = new GroupLayout(pnlCommentStandard);
465 pnlCommentStandard.setLayout(gl_pnlCommentStandard);
466 gl_pnlCommentStandard.setAutoCreateContainerGaps(true);
467 gl_pnlCommentStandard.setAutoCreateGaps(true);
468 gl_pnlCommentStandard.setHorizontalGroup(
469 gl_pnlCommentStandard.createSequentialGroup()
470 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
471 .addComponent(lblCommentSize)
472 .addComponent(lblCommentMinSize)
473 .addComponent(lblCommentDisplayMax))
474 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
475 .addComponent(cbCommentSizeAuto)
476 .addComponent(cbCommentMinSizeAuto)
477 .addComponent(cbCommentDisplaySizeDefault))
478 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
479 .addComponent(lblCommentSizeManual)
480 .addComponent(lblCommentMinSizeManual)
481 .addComponent(lblCommentDisplayMaxManual))
482 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
483 .addComponent(fldCommentSizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
484 .addComponent(fldCommentMinSizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
485 .addComponent(fldCommentDisplaySizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
487 gl_pnlCommentStandard.setVerticalGroup(
488 gl_pnlCommentStandard.createSequentialGroup()
489 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
490 .addComponent(lblCommentSize)
491 .addComponent(cbCommentSizeAuto)
492 .addComponent(lblCommentSizeManual)
493 .addComponent(fldCommentSizeManual))
494 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
495 .addComponent(lblCommentMinSize)
496 .addComponent(cbCommentMinSizeAuto)
497 .addComponent(lblCommentMinSizeManual)
498 .addComponent(fldCommentMinSizeManual))
499 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
500 .addComponent(lblCommentDisplayMax)
501 .addComponent(cbCommentDisplaySizeDefault)
502 .addComponent(lblCommentDisplayMaxManual)
503 .addComponent(fldCommentDisplaySizeManual))
506 pnlCommentAdvanced.setBorder(BorderFactory.createTitledBorder("高度な設定"));
508 lblFontPath.setText("フォントパス");
510 cbFontSizeArrangeDisable.setText("フォントサイズ調整を行わない");
512 cbCommentOpaque.setText("コメント透明化を行わない");
514 btnFontPath.setText("...");
516 lblFontIndex.setText("フォント番号");
518 lblFontShadow.setText("影の種類");
519 final ComboBoxModel<String> cbmFontShadow
520 = new DefaultComboBoxModel<>(new String[]{"0:なし", "1:ニコニコ動画風", "2:右下", "3:囲い込み"});
521 cmbFontShadow.setModel(cbmFontShadow);
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()
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))
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))
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))
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()
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))
580 gl_pnlComment.setVerticalGroup(
581 gl_pnlComment.createParallelGroup(GroupLayout.Alignment.LEADING)
582 .addGroup(gl_pnlComment.createSequentialGroup()
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))
590 tabbedPane.addTab("コメント", pnlComment);
592 jPanel10.setBorder(BorderFactory.createTitledBorder("ファイルパス"));
594 lblFfmpegPath.setText("ffmpeg");
596 lblFfmpegDllPath.setText("拡張ライブラリ");
598 btnFfmpegPath.setText("...");
600 btnFfmpegDllPath.setText("...");
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()
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))
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))
636 pnlFfmpegParam.setBorder(BorderFactory.createTitledBorder("ffmpegパラメータ"));
640 GroupLayout gl_pnlFfmpeg = new GroupLayout(pnlFfmpeg);
641 pnlFfmpeg.setLayout(gl_pnlFfmpeg);
642 gl_pnlFfmpeg.setHorizontalGroup(
643 gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
644 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFfmpeg.createSequentialGroup()
646 .addGroup(gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.TRAILING)
647 .addComponent(pnlFfmpegParam, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
648 .addComponent(jPanel10, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
651 gl_pnlFfmpeg.setVerticalGroup(
652 gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
653 .addGroup(gl_pnlFfmpeg.createSequentialGroup()
655 .addComponent(jPanel10, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
656 .addPreferredGap(ComponentPlacement.RELATED)
657 .addComponent(pnlFfmpegParam, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
661 tabbedPane.addTab("ffmpeg", pnlFfmpeg);
663 pnlNgWord.setBorder(BorderFactory.createTitledBorder("NGワード"));
664 pnlNgId.setBorder(BorderFactory.createTitledBorder("NGID"));
666 GroupLayout gl_pnlNgSetting = new GroupLayout(pnlNgSetting);
667 pnlNgSetting.setLayout(gl_pnlNgSetting);
668 gl_pnlNgSetting.setHorizontalGroup(
669 gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
670 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNgSetting.createSequentialGroup()
672 .addGroup(gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.TRAILING)
673 .addComponent(pnlNgId, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
674 .addComponent(pnlNgWord, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
677 gl_pnlNgSetting.setVerticalGroup(
678 gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
679 .addGroup(gl_pnlNgSetting.createSequentialGroup()
681 .addComponent(pnlNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
682 .addPreferredGap(ComponentPlacement.RELATED)
683 .addComponent(pnlNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
687 tabbedPane.addTab("NG設定", pnlNgSetting);
689 pnlSearchVideo.setBorder(BorderFactory.createTitledBorder("動画検索対象フォルダ"));
690 pnlSearchComment.setBorder(BorderFactory.createTitledBorder("コメント検索対象フォルダ"));
692 pnlSearchCache.setBorder(BorderFactory.createEtchedBorder());
694 lblSearchCache.setText("キャッシュ更新(秒)");
696 GroupLayout gl_pnlSearchCache = new GroupLayout(pnlSearchCache);
697 pnlSearchCache.setLayout(gl_pnlSearchCache);
698 gl_pnlSearchCache.setHorizontalGroup(
699 gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.LEADING)
700 .addGroup(gl_pnlSearchCache.createSequentialGroup()
702 .addComponent(lblSearchCache)
703 .addPreferredGap(ComponentPlacement.RELATED)
704 .addComponent(fldSearchCache, GroupLayout.PREFERRED_SIZE, 55, GroupLayout.PREFERRED_SIZE)
705 .addContainerGap(269, Short.MAX_VALUE))
707 gl_pnlSearchCache.setVerticalGroup(
708 gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.LEADING)
709 .addGroup(gl_pnlSearchCache.createSequentialGroup()
711 .addGroup(gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.BASELINE)
712 .addComponent(lblSearchCache)
713 .addComponent(fldSearchCache, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
714 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
717 GroupLayout gl_pnlSearch = new GroupLayout(pnlSearch);
718 pnlSearch.setLayout(gl_pnlSearch);
719 gl_pnlSearch.setHorizontalGroup(
720 gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
721 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearch.createSequentialGroup()
723 .addGroup(gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.TRAILING)
724 .addComponent(pnlSearchCache, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
725 .addComponent(pnlSearchComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
726 .addComponent(pnlSearchVideo, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
729 gl_pnlSearch.setVerticalGroup(
730 gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
731 .addGroup(gl_pnlSearch.createSequentialGroup()
733 .addComponent(pnlSearchVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
734 .addPreferredGap(ComponentPlacement.RELATED)
735 .addComponent(pnlSearchComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
736 .addPreferredGap(ComponentPlacement.RELATED)
737 .addComponent(pnlSearchCache, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
738 .addContainerGap(27, Short.MAX_VALUE))
741 tabbedPane.addTab("検索", pnlSearch);
743 final JPanel pnlButton = new JPanel();
744 final JButton btnOk = new JButton("OK");
745 btnOk.addActionListener(new ActionListener() {
748 public void actionPerformed(ActionEvent e) {
753 final JButton btnCancel = new JButton("Cancel");
754 btnCancel.addActionListener(new ActionListener() {
757 public void actionPerformed(ActionEvent e) {
761 pnlButton.add(btnOk);
762 pnlButton.add(btnCancel);
764 GroupLayout layout = new GroupLayout(getContentPane());
765 getContentPane().setLayout(layout);
766 layout.setHorizontalGroup(
767 layout.createParallelGroup(GroupLayout.Alignment.LEADING)
768 .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, 460, Short.MAX_VALUE)
769 .addComponent(pnlButton)
771 layout.setVerticalGroup(
772 layout.createSequentialGroup()
773 .addComponent(tabbedPane,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
774 .addComponent(pnlButton)
777 final JLabel lblSystemThreadDownload = new JLabel("ダウンロードスレッド数");
778 final JLabel lblSystemWaitDownload = new JLabel("ダウンロード開始最小間隔(秒)");
779 final JLabel lblSystemThreadConvert = new JLabel("変換スレッド数");
780 final JLabel lblSystemTempDir = new JLabel("作業フォルダ");
782 final JPanel pnlSystemGeneral = new JPanel();
783 pnlSystemGeneral.setBorder(BorderFactory.createTitledBorder("システム"));
784 final GroupLayout glSystemGenegal = new GroupLayout(pnlSystemGeneral);
785 glSystemGenegal.setAutoCreateGaps(true);
786 glSystemGenegal.setAutoCreateContainerGaps(true);
787 pnlSystemGeneral.setLayout(glSystemGenegal);
789 glSystemGenegal.setHorizontalGroup(glSystemGenegal.createParallelGroup()
790 .addGroup(glSystemGenegal.createSequentialGroup()
791 .addGroup(glSystemGenegal.createParallelGroup()
792 .addComponent(lblSystemThreadDownload)
793 .addComponent(lblSystemWaitDownload)
794 .addComponent(lblSystemThreadConvert))
795 .addGroup(glSystemGenegal.createParallelGroup()
796 .addComponent(fldSystemThreadDownload, PREFERRED_SIZE, 40, PREFERRED_SIZE)
797 .addComponent(fldSystemWaitDownload, PREFERRED_SIZE, 40, PREFERRED_SIZE)
798 .addComponent(fldSystemThreadConvert, PREFERRED_SIZE, 40, PREFERRED_SIZE)
801 .addGroup(glSystemGenegal.createSequentialGroup()
802 .addComponent(lblSystemTempDir)
803 .addComponent(fldSystemTempDir, DEFAULT_SIZE, 400, Short.MAX_VALUE)
807 glSystemGenegal.setVerticalGroup(glSystemGenegal.createSequentialGroup()
808 .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
809 .addComponent(lblSystemThreadDownload)
810 .addComponent(fldSystemThreadDownload, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
811 .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
812 .addComponent(lblSystemWaitDownload)
813 .addComponent(fldSystemWaitDownload, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
814 .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
815 .addComponent(lblSystemThreadConvert)
816 .addComponent(fldSystemThreadConvert, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
817 .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
818 .addComponent(lblSystemTempDir)
819 .addComponent(fldSystemTempDir, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE)));
821 final JPanel pnlSystem = new JPanel();
822 pnlSystem.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
823 final GroupLayout glSystem = new GroupLayout(pnlSystem);
824 glSystem.setAutoCreateGaps(true);
825 glSystem.setAutoCreateContainerGaps(true);
826 pnlSystem.setLayout(glSystem);
828 glSystem.setHorizontalGroup(glSystem.createParallelGroup()
829 .addComponent(pnlSystemGeneral));
831 glSystem.setVerticalGroup(glSystem.createSequentialGroup()
832 .addComponent(pnlSystemGeneral));
834 tabbedPane.add("システム", pnlSystem);
842 * @param args the command line arguments
844 public static void main(String args[]) {
845 /* Set the Nimbus look and feel */
846 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
847 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
850 for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
851 if ("Nimbus".equals(info.getName())) {
852 UIManager.setLookAndFeel(info.getClassName());
856 } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
857 java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
860 /* Create and display the form */
861 java.awt.EventQueue.invokeLater(new Runnable() {
865 new ConfigDialog().setVisible(true);
869 // Variables declaration - do not modify//GEN-BEGIN:variables
873 private final JTextField fldMail;
874 private final JTextField fldPassword;
876 private final JCheckBox cbProxyUse;
877 private final JTextField fldProxyHost;
878 private final JTextField fldProxyPort;
881 private final JTextField fldVideoDir;
882 private final JButton btnVideoDir;
883 private final JTextField fldVideoFileNamePattern;
884 private final JCheckBox cbVideoLocal;
886 private final JTextField fldCommentDir;
887 private final JButton btnCommentDir;
888 private final JTextField fldCommentFileNamePattern;
889 private final JCheckBox cbCommentLocal;
891 private final JTextField fldOutputDir;
892 private final JTextField fldOutputFileNamePattern;
893 private final JButton btnOutputDir;
894 private final JCheckBox cbOutputEnable;
895 private final JCheckBox cbOutputCommentOverlay;
896 private final JCheckBox cbOutputDisplayProgress;
898 private final JTextField fldReplaceFrom = new JTextField();
899 private final JTextField fldReplaceTo = new JTextField();
902 private final JCheckBox cbCommentSizeAuto;
903 private final JTextField fldCommentSizeManual;
904 private final JCheckBox cbCommentMinSizeAuto;
905 private final JTextField fldCommentMinSizeManual;
906 private final JCheckBox cbCommentDisplaySizeDefault;
907 private final JTextField fldCommentDisplaySizeManual;
909 private final JTextField fldFontPath;
910 private final JButton btnFontPath;
911 private final JTextField fldFontIndex;
912 private final JComboBox<String> cmbFontShadow = new JComboBox<>();
913 private final JCheckBox cbFontSizeArrangeDisable;
914 private final JCheckBox cbCommentOpaque;
917 private final JTextField fldFfmpegPath;
918 private final JButton btnFfmpegPath;
919 private final JTextField fldFfmpegDllPath;
920 private final JButton btnFfmpegDllPath;
921 // ffmpeg - ffmpegパラメータ
922 private final FfmpegParamPanel pnlFfmpegParam = new FfmpegParamPanel();
925 private final NgRegisterPanel pnlNgWord = new NgRegisterPanel();
927 private final NgRegisterPanel pnlNgId = new NgRegisterPanel();
930 private final DirectoryRegisterPanel pnlSearchVideo = new DirectoryRegisterPanel();
932 private final DirectoryRegisterPanel pnlSearchComment = new DirectoryRegisterPanel();
934 private final JTextField fldSearchCache;
936 private final JTextField fldSystemThreadDownload = new JTextField();
937 private final JTextField fldSystemWaitDownload = new JTextField();
938 private final JTextField fldSystemThreadConvert = new JTextField();
939 private final JTextField fldSystemTempDir = new JTextField();
942 // End of variables declaration//GEN-END:variables
944 private void loadConfig() {
945 final Config p = Config.INSTANCE;
950 fldMail.setText(p.getId());
951 fldPassword.setText(p.getPassword());
956 cbProxyUse.setSelected(p.getProxyUse());
957 fldProxyHost.setText(p.getProxyHost());
958 fldProxyPort.setText(p.getProxyPort());
963 fldVideoDir.setText(p.getVideoDir());
964 fldVideoFileNamePattern.setText(p.getVideoFileNamePattern());
965 cbVideoLocal.setSelected(p.getVideoUseLocal());
970 fldCommentDir.setText(p.getCommentDir());
971 fldCommentFileNamePattern.setText(p.getCommentFileNamePattern());
972 cbCommentLocal.setSelected(p.getCommentUseLocal());
977 fldOutputDir.setText(p.getOutputDir());
978 fldOutputFileNamePattern.setText(p.getOutputFileNamePattern());
979 cbOutputEnable.setSelected(p.getOutputEnable());
980 cbOutputCommentOverlay.setSelected(p.getOutputCommentOverlay());
981 cbOutputDisplayProgress.setSelected(p.getOutputDisplayProgress());
986 fldReplaceFrom.setText(p.getReplaceFrom());
987 fldReplaceTo.setText(p.getReplaceTo());
992 cbCommentSizeAuto.setSelected(p.getCommentSizeAutosize());
993 fldCommentSizeManual.setText(p.getCommentSizeManual());
994 cbCommentMinSizeAuto.setSelected(p.getCommentMinSizeAutosize());
995 fldCommentSizeManual.setText(p.getCommentMinSizeManual());
996 cbCommentDisplaySizeDefault.setSelected(p.getCommentDisplaySizeDefault());
997 fldCommentDisplaySizeManual.setText(p.getCommentDisplaySizeManual());
1002 fldFontPath.setText(p.getFontPath());
1003 fldFontIndex.setText(p.getFontIndex());
1004 cmbFontShadow.setSelectedIndex(p.getFontShadow());
1005 cbFontSizeArrangeDisable.setSelected(p.getFontSizeArrangeDisable());
1006 cbCommentOpaque.setSelected(p.getCommentOpaque());
1011 fldFfmpegPath.setText(p.getFfmpegPath());
1012 fldFfmpegDllPath.setText(p.getFfmpegDllPath());
1015 * ffmpeg - ffmpegパラメータ
1017 pnlFfmpegParam.init(p);
1022 final List<String> ngWords = p.getNgWords();
1023 pnlNgWord.init(ngWords);
1024 final List<String> ngIds = p.getNgIds();
1025 pnlNgId.init(ngIds);
1030 pnlSearchVideo.init(p.getSearchVideoDirs());
1031 pnlSearchComment.init(p.getSearchCommentDirs());
1036 fldSystemThreadDownload.setText(Integer.toString(p.getSystemDownloadThread()));
1037 fldSystemWaitDownload.setText(Integer.toString(p.getSystemDownloadWait()));
1038 fldSystemThreadConvert.setText(Integer.toString(p.getSystemConvertThread()));
1039 fldSystemTempDir.setText(p.getSystemTempDir());
1042 private void saveConfig() {
1043 final Config p = Config.INSTANCE;
1049 p.setId(fldMail.getText());
1050 p.setPassword(fldPassword.getText());
1055 p.setProxyUse(cbProxyUse.isSelected());
1056 p.setProxyHost(fldProxyHost.getText());
1057 p.setProxyPort(fldProxyPort.getText());
1062 p.setVideoDir(fldVideoDir.getText());
1063 p.setVideoFileNamePattern(fldVideoFileNamePattern.getText());
1064 p.setVideoUseLocal(cbVideoLocal.isSelected());
1069 p.setCommentDir(fldCommentDir.getText());
1070 p.setCommentFileNamePattern(fldCommentFileNamePattern.getText());
1071 p.setCommentUseLocal(cbCommentLocal.isSelected());
1076 p.setOutputDir(fldOutputDir.getText());
1077 p.setOutputFileNamePattern(fldOutputFileNamePattern.getText());
1078 p.setOutputEnable(cbOutputEnable.isSelected());
1079 p.setOutputCommentOverlay(cbOutputCommentOverlay.isSelected());
1080 p.setOutputDisplayProgress(cbOutputDisplayProgress.isSelected());
1085 p.setReplaceFrom(fldReplaceFrom.getText());
1086 p.setReplaceTo(fldReplaceTo.getText());
1091 p.setCommentSizeAutosize(cbCommentSizeAuto.isSelected());
1092 p.setCommentSizeManual(fldCommentSizeManual.getText());
1093 p.setCommentMinSizeAutosize(cbCommentMinSizeAuto.isSelected());
1094 p.setCommentMinSizeManual(fldCommentSizeManual.getText());
1095 p.setCommentDisplaySizeDefault(cbCommentDisplaySizeDefault.isSelected());
1096 p.setCommentDisplaySizeManual(fldCommentDisplaySizeManual.getText());
1101 p.setFontPath(fldFontPath.getText());
1102 p.setFontIndex(fldFontIndex.getText());
1103 p.setFontShadow(cmbFontShadow.getSelectedIndex());
1104 p.setFontSizeArrangeDisable(cbFontSizeArrangeDisable.isSelected());
1105 p.setCommentOpaque(cbCommentOpaque.isSelected());
1110 p.setFfmpegPath(fldFfmpegPath.getText());
1111 p.setFfmpegDllPath(fldFfmpegDllPath.getText());
1114 * ffmpeg - ffmpegパラメータ
1116 final File fileFfmpegOption = pnlFfmpegParam.mdlFfmpegOption.getSelectedFile();
1117 p.setFfmpegOptionFile(fileFfmpegOption != null ? fileFfmpegOption.getPath() : null);
1118 p.setFfmpegExtension(pnlFfmpegParam.fldFfmpegOptionExtension.getText());
1119 p.setFfmpegMainOption(pnlFfmpegParam.fldFfmpegOptionMain.getText());
1120 p.setFfmpegInOption(pnlFfmpegParam.fldFfmpegOptionIn.getText());
1121 p.setFfmpegOutOption(pnlFfmpegParam.fldFfmpegOptionOut.getText());
1122 p.setFfmpegAvOption(pnlFfmpegParam.fldFfmpegOptionAv.getText());
1123 p.setFfmpegResizeEnable(pnlFfmpegParam.cbFfmpegOptionResize.isSelected());
1124 p.setFfmpegResizeWidth(pnlFfmpegParam.fldFfmpegOptionResizeWidth.getText());
1125 p.setFfmpegResizeHeight(pnlFfmpegParam.fldFfmpegOptionResizeHeight.getText());
1126 p.setFfmpegKeepAspect(pnlFfmpegParam.cbFfmpegOptionKeepAspect.isSelected());
1131 p.setNgWords(pnlNgWord.getAllElements());
1132 p.setNgIds(pnlNgId.getAllElements());
1137 p.setSearchVideoDirs(pnlSearchVideo.getAllElements());
1138 p.setSearchCommentDirs(pnlSearchComment.getAllElements());
1143 p.setSystemDownloadThread(Integer.parseInt(fldSystemThreadDownload.getText()));
1144 p.setSystemDownloadWait(Integer.parseInt(fldSystemWaitDownload.getText()));
1145 p.setSystemConvertThread(Integer.parseInt(fldSystemThreadConvert.getText()));
1146 p.setSystemTempDir(fldSystemTempDir.getText());
1150 } catch (ConfigurationException ex) {
1151 logger.log(Level.SEVERE, "コンフィグファイル保存に失敗", ex);