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.JFileChooser;
27 import javax.swing.JFrame;
28 import javax.swing.JLabel;
29 import javax.swing.JPanel;
30 import javax.swing.JSpinner;
31 import javax.swing.JTabbedPane;
32 import javax.swing.JTextField;
33 import javax.swing.LayoutStyle.ComponentPlacement;
34 import javax.swing.SpinnerNumberModel;
35 import javax.swing.UIManager;
36 import javax.swing.UnsupportedLookAndFeelException;
37 import javax.swing.WindowConstants;
38 import org.apache.commons.configuration.ConfigurationException;
39 import yukihane.inqubus.Config;
45 public class ConfigDialog extends JDialog {
46 private static final long serialVersionUID = 1L;
47 private static final Logger logger = Logger.getLogger(ConfigDialog.class.getName());
49 /** Creates new form Properties */
50 public ConfigDialog() {
54 public ConfigDialog(JFrame owner){
57 final JTabbedPane tabbedPane = new JTabbedPane();
58 final JPanel pnlNetwork = new JPanel();
59 final JPanel pnlAccount = new JPanel();
60 final JLabel lblMail = new JLabel();
61 fldMail = new JTextField();
62 final JLabel lblPassword = new JLabel();
63 fldPassword = new JTextField();
64 final JPanel pnlProxy = new JPanel();
65 cbProxyUse = new JCheckBox();
66 final JLabel lblProxyHost = new JLabel();
67 final JLabel lblProxyPort = new JLabel();
68 fldProxyHost = new JTextField();
69 fldProxyPort = new JTextField();
70 final JPanel pnlFile = new JPanel();
71 final JPanel pnlFileOutput = new JPanel();
72 final JLabel lblOutputDir = new JLabel();
73 final JLabel lblOutputFileNamePattern = new JLabel();
74 fldOutputDir = new JTextField();
75 fldOutputFileNamePattern = new JTextField();
76 cbOutputEnable = new JCheckBox();
77 cbOutputCommentOverlay = new JCheckBox();
78 cbOutputDisplayProgress = new JCheckBox();
79 final JPanel pnlComment = new JPanel();
80 final JPanel pnlCommentStandard = new JPanel();
81 final JLabel lblCommentSize = new JLabel();
82 cbCommentSizeAuto = new JCheckBox();
83 final JLabel lblCommentSizeManual = new JLabel();
84 fldCommentSizeManual = new JTextField();
85 final JLabel lblCommentMinSize = new JLabel();
86 cbCommentMinSizeAuto = new JCheckBox();
87 fldCommentMinSizeManual = new JTextField();
88 final JLabel lblCommentMinSizeManual = new JLabel();
89 final JLabel lblCommentDisplayMax = new JLabel();
90 cbCommentDisplaySizeDefault = new JCheckBox();
91 final JLabel lblCommentDisplayMaxManual = new JLabel();
92 fldCommentDisplaySizeManual = new JTextField();
93 final JPanel pnlCommentAdvanced = new JPanel();
94 final JLabel lblFontPath = new JLabel();
95 cbFontSizeArrangeDisable = new JCheckBox();
96 cbCommentOpaque = new JCheckBox();
97 fldFontPath = new JTextField();
98 final JLabel lblFontIndex = new JLabel();
99 final JLabel lblFontShadow = new JLabel();
100 fldFontIndex = new JTextField();
101 final JPanel pnlFfmpeg = new JPanel();
102 final JPanel pnlFfmpegBinPath = new JPanel();
103 final JLabel lblFfmpegPath = new JLabel();
104 final JLabel lblFfmpegDllPath = new JLabel();
105 fldFfmpegPath = new JTextField();
106 fldFfmpegDllPath = new JTextField();
107 final JPanel pnlNgSetting = new JPanel();
108 final JPanel pnlSearch = new JPanel();
110 setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
112 pnlNetwork.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
114 pnlAccount.setBorder(BorderFactory.createTitledBorder("アカウント"));
116 lblMail.setText("ID(メールアドレス)");
118 lblPassword.setText("パスワード");
120 GroupLayout gl_pnlAccount = new GroupLayout(pnlAccount);
121 pnlAccount.setLayout(gl_pnlAccount);
122 gl_pnlAccount.setHorizontalGroup(
123 gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
124 .addGroup(gl_pnlAccount.createSequentialGroup()
126 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
127 .addComponent(lblMail)
128 .addComponent(lblPassword))
129 .addPreferredGap(ComponentPlacement.RELATED)
130 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
131 .addComponent(fldPassword, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE)
132 .addComponent(fldMail, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE))
135 gl_pnlAccount.setVerticalGroup(
136 gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
137 .addGroup(gl_pnlAccount.createSequentialGroup()
139 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.BASELINE)
140 .addComponent(lblMail)
141 .addComponent(fldMail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
142 .addPreferredGap(ComponentPlacement.RELATED)
143 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.BASELINE)
144 .addComponent(lblPassword)
145 .addComponent(fldPassword, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
146 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
149 pnlProxy.setBorder(BorderFactory.createTitledBorder("プロキシ"));
151 cbProxyUse.setText("プロキシを使用する");
153 lblProxyHost.setText("ホスト名");
155 lblProxyPort.setText("ポート番号");
157 GroupLayout gl_pnlProxy = new GroupLayout(pnlProxy);
158 pnlProxy.setLayout(gl_pnlProxy);
159 gl_pnlProxy.setHorizontalGroup(
160 gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
161 .addGroup(gl_pnlProxy.createSequentialGroup()
163 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
164 .addComponent(cbProxyUse)
165 .addGroup(gl_pnlProxy.createSequentialGroup()
166 .addComponent(lblProxyHost)
168 .addComponent(fldProxyHost, GroupLayout.PREFERRED_SIZE, 168, GroupLayout.PREFERRED_SIZE))
169 .addGroup(gl_pnlProxy.createSequentialGroup()
170 .addComponent(lblProxyPort)
171 .addPreferredGap(ComponentPlacement.RELATED)
172 .addComponent(fldProxyPort, GroupLayout.PREFERRED_SIZE, 76, GroupLayout.PREFERRED_SIZE)))
173 .addContainerGap(181, Short.MAX_VALUE))
175 gl_pnlProxy.setVerticalGroup(
176 gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.LEADING)
177 .addGroup(gl_pnlProxy.createSequentialGroup()
179 .addComponent(cbProxyUse)
180 .addPreferredGap(ComponentPlacement.RELATED)
181 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.BASELINE)
182 .addComponent(lblProxyHost)
183 .addComponent(fldProxyHost, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
184 .addPreferredGap(ComponentPlacement.RELATED)
185 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.BASELINE)
186 .addComponent(lblProxyPort)
187 .addComponent(fldProxyPort, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
188 .addContainerGap(39, Short.MAX_VALUE))
191 GroupLayout gl_pnlNetwork = new GroupLayout(pnlNetwork);
192 pnlNetwork.setLayout(gl_pnlNetwork);
193 gl_pnlNetwork.setHorizontalGroup(
194 gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.LEADING)
195 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNetwork.createSequentialGroup()
197 .addGroup(gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.TRAILING)
198 .addComponent(pnlProxy, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
199 .addComponent(pnlAccount, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
202 gl_pnlNetwork.setVerticalGroup(
203 gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.LEADING)
204 .addGroup(gl_pnlNetwork.createSequentialGroup()
206 .addComponent(pnlAccount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
207 .addPreferredGap(ComponentPlacement.RELATED)
208 .addComponent(pnlProxy, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
209 .addContainerGap(178, Short.MAX_VALUE))
212 tabbedPane.addTab("ネットワーク", pnlNetwork);
214 pnlFileVideo.setBorder(BorderFactory.createTitledBorder("動画"));
216 pnlFileComment.setBorder(BorderFactory.createTitledBorder("コメント"));
218 pnlFileOutput.setBorder(BorderFactory.createTitledBorder("変換動画"));
220 lblOutputDir.setText("保存フォルダ");
222 lblOutputFileNamePattern.setText("ファイル名規則");
224 btnOutputDir.addActionListener(
225 new FileChooseAction(ConfigDialog.this, JFileChooser.DIRECTORIES_ONLY, fldOutputDir));
227 cbOutputEnable.setText("変換");
229 cbOutputCommentOverlay.setText("コメント付与");
231 cbOutputDisplayProgress.setText("変換中動画表示");
233 GroupLayout gl_pnlFileOutput = new GroupLayout(pnlFileOutput);
234 pnlFileOutput.setLayout(gl_pnlFileOutput);
235 gl_pnlFileOutput.setHorizontalGroup(
236 gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
237 .addGroup(gl_pnlFileOutput.createSequentialGroup()
239 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
240 .addComponent(lblOutputFileNamePattern)
241 .addComponent(lblOutputDir))
242 .addPreferredGap(ComponentPlacement.RELATED)
243 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
244 .addGroup(gl_pnlFileOutput.createSequentialGroup()
245 .addComponent(fldOutputDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
246 .addPreferredGap(ComponentPlacement.RELATED)
247 .addComponent(btnOutputDir)
249 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileOutput.createSequentialGroup()
250 .addComponent(fldOutputFileNamePattern, GroupLayout.PREFERRED_SIZE, 167, GroupLayout.PREFERRED_SIZE)
251 .addPreferredGap(ComponentPlacement.RELATED, 23, Short.MAX_VALUE)
252 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
253 .addComponent(cbOutputDisplayProgress)
254 .addGroup(gl_pnlFileOutput.createSequentialGroup()
255 .addComponent(cbOutputEnable)
256 .addPreferredGap(ComponentPlacement.RELATED)
257 .addComponent(cbOutputCommentOverlay))))))
259 gl_pnlFileOutput.setVerticalGroup(
260 gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.LEADING)
261 .addGroup(gl_pnlFileOutput.createSequentialGroup()
262 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.BASELINE)
263 .addComponent(lblOutputDir)
264 .addComponent(fldOutputDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
265 .addComponent(btnOutputDir))
266 .addPreferredGap(ComponentPlacement.RELATED)
267 .addGroup(gl_pnlFileOutput.createParallelGroup(GroupLayout.Alignment.BASELINE)
268 .addComponent(lblOutputFileNamePattern)
269 .addComponent(fldOutputFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
270 .addComponent(cbOutputCommentOverlay)
271 .addComponent(cbOutputEnable))
272 .addPreferredGap(ComponentPlacement.RELATED)
273 .addComponent(cbOutputDisplayProgress)
274 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
277 final JPanel pnlFileProhibit = new JPanel();
278 pnlFileProhibit.setBorder(BorderFactory.createTitledBorder("禁則文字"));
279 final JLabel lblReplaceFrom = new JLabel("置換対象文字");
280 final JLabel lblReplaceTo = new JLabel("置換後文字");
282 final GroupLayout glProhibit = new GroupLayout(pnlFileProhibit);
283 glProhibit.setAutoCreateContainerGaps(true);
284 glProhibit.setAutoCreateGaps(true);
285 pnlFileProhibit.setLayout(glProhibit);
287 glProhibit.setHorizontalGroup(glProhibit.createSequentialGroup()
288 .addGroup(glProhibit.createParallelGroup()
289 .addComponent(lblReplaceFrom)
290 .addComponent(lblReplaceTo)
292 .addGroup(glProhibit.createParallelGroup()
293 .addComponent(fldReplaceFrom)
294 .addComponent(fldReplaceTo)
298 glProhibit.setVerticalGroup(glProhibit.createSequentialGroup()
299 .addGroup(glProhibit.createParallelGroup(Alignment.BASELINE)
300 .addComponent(lblReplaceFrom)
301 .addComponent(fldReplaceFrom)
303 .addGroup(glProhibit.createParallelGroup(Alignment.BASELINE)
304 .addComponent(lblReplaceTo)
305 .addComponent(fldReplaceTo)
309 GroupLayout gl_pnlFile = new GroupLayout(pnlFile);
310 pnlFile.setLayout(gl_pnlFile);
311 gl_pnlFile.setHorizontalGroup(
312 gl_pnlFile.createParallelGroup(GroupLayout.Alignment.LEADING)
313 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFile.createSequentialGroup()
315 .addGroup(gl_pnlFile.createParallelGroup(GroupLayout.Alignment.TRAILING)
316 .addComponent(pnlFileOutput, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
317 .addComponent(pnlFileVideo, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
318 .addComponent(pnlFileComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
319 .addComponent(pnlFileProhibit, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
323 gl_pnlFile.setVerticalGroup(
324 gl_pnlFile.createParallelGroup(GroupLayout.Alignment.LEADING)
325 .addGroup(gl_pnlFile.createSequentialGroup()
327 .addComponent(pnlFileVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
328 .addPreferredGap(ComponentPlacement.RELATED)
329 .addComponent(pnlFileComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
330 .addPreferredGap(ComponentPlacement.RELATED)
331 .addComponent(pnlFileOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
332 .addPreferredGap(ComponentPlacement.RELATED)
333 .addComponent(pnlFileProhibit, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
337 tabbedPane.addTab("ファイル", pnlFile);
339 pnlCommentStandard.setBorder(BorderFactory.createTitledBorder(""));
341 lblCommentSize.setText("再生時間に応じたコメントの取得数");
343 cbCommentSizeAuto.setText("自動調整");
345 lblCommentSizeManual.setText("手動取得");
347 lblCommentMinSize.setText("1分当たりのコメント取得数");
349 cbCommentMinSizeAuto.setText("自動調整");
351 lblCommentMinSizeManual.setText("手動取得");
353 lblCommentDisplayMax.setText("1画面に表示する最大コメント数");
355 cbCommentDisplaySizeDefault.setText("標準(30)");
357 lblCommentDisplayMaxManual.setText("手動設定");
359 GroupLayout gl_pnlCommentStandard = new GroupLayout(pnlCommentStandard);
360 pnlCommentStandard.setLayout(gl_pnlCommentStandard);
361 gl_pnlCommentStandard.setAutoCreateContainerGaps(true);
362 gl_pnlCommentStandard.setAutoCreateGaps(true);
363 gl_pnlCommentStandard.setHorizontalGroup(
364 gl_pnlCommentStandard.createSequentialGroup()
365 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
366 .addComponent(lblCommentSize)
367 .addComponent(lblCommentMinSize)
368 .addComponent(lblCommentDisplayMax))
369 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
370 .addComponent(cbCommentSizeAuto)
371 .addComponent(cbCommentMinSizeAuto)
372 .addComponent(cbCommentDisplaySizeDefault))
373 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
374 .addComponent(lblCommentSizeManual)
375 .addComponent(lblCommentMinSizeManual)
376 .addComponent(lblCommentDisplayMaxManual))
377 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
378 .addComponent(fldCommentSizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
379 .addComponent(fldCommentMinSizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
380 .addComponent(fldCommentDisplaySizeManual, 48, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
382 gl_pnlCommentStandard.setVerticalGroup(
383 gl_pnlCommentStandard.createSequentialGroup()
384 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
385 .addComponent(lblCommentSize)
386 .addComponent(cbCommentSizeAuto)
387 .addComponent(lblCommentSizeManual)
388 .addComponent(fldCommentSizeManual))
389 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
390 .addComponent(lblCommentMinSize)
391 .addComponent(cbCommentMinSizeAuto)
392 .addComponent(lblCommentMinSizeManual)
393 .addComponent(fldCommentMinSizeManual))
394 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
395 .addComponent(lblCommentDisplayMax)
396 .addComponent(cbCommentDisplaySizeDefault)
397 .addComponent(lblCommentDisplayMaxManual)
398 .addComponent(fldCommentDisplaySizeManual))
401 pnlCommentAdvanced.setBorder(BorderFactory.createTitledBorder("高度な設定"));
403 lblFontPath.setText("フォントパス");
405 cbFontSizeArrangeDisable.setText("フォントサイズ調整を行わない");
407 cbCommentOpaque.setText("コメント透明化を行わない");
409 final JButton btnFontPath = new JButton("...");
410 btnFontPath.addActionListener(
411 new FileChooseAction(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFontPath));
413 lblFontIndex.setText("フォント番号");
415 lblFontShadow.setText("影の種類");
416 final ComboBoxModel<String> cbmFontShadow
417 = new DefaultComboBoxModel<>(new String[]{"0:なし", "1:ニコニコ動画風", "2:右下", "3:囲い込み"});
418 cmbFontShadow.setModel(cbmFontShadow);
420 GroupLayout gl_pnlCommentAdvanced = new GroupLayout(pnlCommentAdvanced);
421 pnlCommentAdvanced.setLayout(gl_pnlCommentAdvanced);
422 gl_pnlCommentAdvanced.setHorizontalGroup(
423 gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
424 .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
426 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
427 .addComponent(cbCommentOpaque)
428 .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
429 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
430 .addComponent(lblFontPath)
431 .addComponent(lblFontIndex)
432 .addComponent(lblFontShadow))
434 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
435 .addComponent(fldFontPath, GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)
436 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
437 .addComponent(cmbFontShadow, GroupLayout.Alignment.LEADING)
438 .addComponent(fldFontIndex, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 48, Short.MAX_VALUE)))
439 .addPreferredGap(ComponentPlacement.RELATED)
440 .addComponent(btnFontPath))
441 .addComponent(cbFontSizeArrangeDisable))
444 gl_pnlCommentAdvanced.setVerticalGroup(
445 gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
446 .addGroup(gl_pnlCommentAdvanced.createSequentialGroup()
447 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
448 .addComponent(lblFontPath)
449 .addComponent(fldFontPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
450 .addComponent(btnFontPath))
451 .addPreferredGap(ComponentPlacement.RELATED)
452 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
453 .addComponent(lblFontIndex)
454 .addComponent(fldFontIndex, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
455 .addPreferredGap(ComponentPlacement.RELATED)
456 .addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
457 .addComponent(lblFontShadow)
458 .addComponent(cmbFontShadow, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
459 .addPreferredGap(ComponentPlacement.RELATED)
460 .addComponent(cbFontSizeArrangeDisable)
461 .addPreferredGap(ComponentPlacement.RELATED)
462 .addComponent(cbCommentOpaque)
463 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
466 GroupLayout gl_pnlComment = new GroupLayout(pnlComment);
467 pnlComment.setLayout(gl_pnlComment);
468 gl_pnlComment.setHorizontalGroup(
469 gl_pnlComment.createParallelGroup(GroupLayout.Alignment.LEADING)
470 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlComment.createSequentialGroup()
472 .addGroup(gl_pnlComment.createParallelGroup(GroupLayout.Alignment.TRAILING)
473 .addComponent(pnlCommentAdvanced, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
474 .addComponent(pnlCommentStandard, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
477 gl_pnlComment.setVerticalGroup(
478 gl_pnlComment.createParallelGroup(GroupLayout.Alignment.LEADING)
479 .addGroup(gl_pnlComment.createSequentialGroup()
481 .addComponent(pnlCommentStandard, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
482 .addPreferredGap(ComponentPlacement.RELATED)
483 .addComponent(pnlCommentAdvanced, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
484 .addContainerGap(168, Short.MAX_VALUE))
487 tabbedPane.addTab("コメント", pnlComment);
489 pnlFfmpegBinPath.setBorder(BorderFactory.createTitledBorder("ファイルパス"));
491 lblFfmpegPath.setText("ffmpeg");
493 lblFfmpegDllPath.setText("拡張ライブラリ");
495 final JButton btnFfmpegPath = new JButton("...");
496 btnFfmpegPath.addActionListener(
497 new FileChooseAction(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFfmpegPath));
499 final JButton btnFfmpegDllPath = new JButton("...");
500 btnFfmpegDllPath.addActionListener(
501 new FileChooseAction(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFfmpegDllPath));
504 GroupLayout gl_jPanel10 = new GroupLayout(pnlFfmpegBinPath);
505 pnlFfmpegBinPath.setLayout(gl_jPanel10);
506 gl_jPanel10.setHorizontalGroup(
507 gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
508 .addGroup(gl_jPanel10.createSequentialGroup()
510 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
511 .addComponent(lblFfmpegDllPath)
512 .addComponent(lblFfmpegPath))
513 .addPreferredGap(ComponentPlacement.RELATED)
514 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
515 .addComponent(fldFfmpegDllPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)
516 .addComponent(fldFfmpegPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE))
517 .addPreferredGap(ComponentPlacement.RELATED)
518 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
519 .addComponent(btnFfmpegPath, GroupLayout.Alignment.TRAILING)
520 .addComponent(btnFfmpegDllPath, GroupLayout.Alignment.TRAILING))
523 gl_jPanel10.setVerticalGroup(
524 gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
525 .addGroup(gl_jPanel10.createSequentialGroup()
526 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.BASELINE)
527 .addComponent(lblFfmpegPath)
528 .addComponent(fldFfmpegPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
529 .addComponent(btnFfmpegPath))
530 .addPreferredGap(ComponentPlacement.RELATED)
531 .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.BASELINE)
532 .addComponent(lblFfmpegDllPath)
533 .addComponent(fldFfmpegDllPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
534 .addComponent(btnFfmpegDllPath))
535 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
538 pnlFfmpegParam.setBorder(BorderFactory.createTitledBorder("ffmpegパラメータ"));
542 final GroupLayout glFfmpeg = new GroupLayout(pnlFfmpeg);
543 glFfmpeg.setAutoCreateContainerGaps(true);
544 pnlFfmpeg.setLayout(glFfmpeg);
545 glFfmpeg.setHorizontalGroup(glFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
546 .addComponent(pnlFfmpegBinPath)
547 .addComponent(pnlFfmpegParam)
549 glFfmpeg.setVerticalGroup(glFfmpeg.createSequentialGroup()
550 .addComponent(pnlFfmpegBinPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
551 .addPreferredGap(ComponentPlacement.RELATED)
552 .addComponent(pnlFfmpegParam)
555 tabbedPane.addTab("ffmpeg", pnlFfmpeg);
557 pnlNgWord.setBorder(BorderFactory.createTitledBorder("NGワード"));
558 pnlNgId.setBorder(BorderFactory.createTitledBorder("NGID"));
560 GroupLayout gl_pnlNgSetting = new GroupLayout(pnlNgSetting);
561 pnlNgSetting.setLayout(gl_pnlNgSetting);
562 gl_pnlNgSetting.setHorizontalGroup(
563 gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
564 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNgSetting.createSequentialGroup()
566 .addGroup(gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.TRAILING)
567 .addComponent(pnlNgId, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
568 .addComponent(pnlNgWord, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
571 gl_pnlNgSetting.setVerticalGroup(
572 gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
573 .addGroup(gl_pnlNgSetting.createSequentialGroup()
575 .addComponent(pnlNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
576 .addPreferredGap(ComponentPlacement.RELATED)
577 .addComponent(pnlNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
581 tabbedPane.addTab("NG設定", pnlNgSetting);
583 pnlSearchVideo.setBorder(BorderFactory.createTitledBorder("動画検索対象フォルダ"));
584 pnlSearchComment.setBorder(BorderFactory.createTitledBorder("コメント検索対象フォルダ"));
586 GroupLayout gl_pnlSearch = new GroupLayout(pnlSearch);
587 pnlSearch.setLayout(gl_pnlSearch);
588 gl_pnlSearch.setHorizontalGroup(
589 gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
590 .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearch.createSequentialGroup()
592 .addGroup(gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.TRAILING)
593 .addComponent(pnlSearchComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
594 .addComponent(pnlSearchVideo, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
597 gl_pnlSearch.setVerticalGroup(
598 gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
599 .addGroup(gl_pnlSearch.createSequentialGroup()
601 .addComponent(pnlSearchVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
602 .addPreferredGap(ComponentPlacement.RELATED)
603 .addComponent(pnlSearchComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
608 tabbedPane.addTab("検索", pnlSearch);
610 final JButton btnOk = new JButton("保存");
611 btnOk.addActionListener(new ActionListener() {
614 public void actionPerformed(ActionEvent e) {
619 final JButton btnCancel = new JButton("取消");
620 btnCancel.addActionListener(new ActionListener() {
623 public void actionPerformed(ActionEvent e) {
627 final JPanel pnlButton = new JPanel();
629 final GroupLayout glButton = new GroupLayout(pnlButton);
630 pnlButton.setLayout(glButton);
631 glButton.setHorizontalGroup(glButton.createSequentialGroup()
632 .addPreferredGap(ComponentPlacement.UNRELATED, PREFERRED_SIZE, Short.MAX_VALUE)
634 .addPreferredGap(ComponentPlacement.UNRELATED)
635 .addComponent(btnCancel)
638 glButton.setVerticalGroup(glButton.createSequentialGroup()
639 .addGroup(glButton.createParallelGroup(Alignment.BASELINE)
641 .addComponent(btnCancel)
645 GroupLayout layout = new GroupLayout(getContentPane());
646 layout.setAutoCreateContainerGaps(true);
647 getContentPane().setLayout(layout);
648 layout.setHorizontalGroup(
649 layout.createParallelGroup(GroupLayout.Alignment.LEADING)
650 .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE, 460, Short.MAX_VALUE)
651 .addComponent(pnlButton)
653 layout.setVerticalGroup(
654 layout.createSequentialGroup()
655 .addComponent(tabbedPane,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)
656 .addComponent(pnlButton)
659 final JLabel lblSystemThreadDownload = new JLabel("ダウンロードスレッド数");
660 final JLabel lblSystemWaitDownload = new JLabel("ダウンロード開始最小間隔(秒)");
661 final JLabel lblSystemThreadConvert = new JLabel("変換スレッド数");
662 final JLabel lblSystemTempDir = new JLabel("作業フォルダ");
663 final JButton btnSystemTempDir = new JButton("...");
664 btnSystemTempDir.addActionListener(
665 new FileChooseAction(ConfigDialog.this, JFileChooser.DIRECTORIES_ONLY, fldSystemTempDir));
667 mdlSystemThreadDownload.setMinimum(1);
668 final JSpinner fldSystemThreadDownload = new JSpinner(mdlSystemThreadDownload);
669 mdlSystemWaitDownload.setMinimum(0);
670 final JSpinner fldSystemWaitDownload = new JSpinner(mdlSystemWaitDownload);
671 mdlSystemThreadConvert.setMinimum(1);
672 final JSpinner fldSystemThreadConvert = new JSpinner(mdlSystemThreadConvert);
674 final JPanel pnlSystemGeneral = new JPanel();
675 pnlSystemGeneral.setBorder(BorderFactory.createTitledBorder("システム"));
676 final GroupLayout glSystemGenegal = new GroupLayout(pnlSystemGeneral);
677 glSystemGenegal.setAutoCreateGaps(true);
678 glSystemGenegal.setAutoCreateContainerGaps(true);
679 pnlSystemGeneral.setLayout(glSystemGenegal);
681 glSystemGenegal.setHorizontalGroup(glSystemGenegal.createParallelGroup()
682 .addGroup(glSystemGenegal.createSequentialGroup()
683 .addGroup(glSystemGenegal.createParallelGroup()
684 .addComponent(lblSystemThreadDownload)
685 .addComponent(lblSystemWaitDownload)
686 .addComponent(lblSystemThreadConvert))
687 .addGroup(glSystemGenegal.createParallelGroup()
688 .addComponent(fldSystemThreadDownload, PREFERRED_SIZE, 50, PREFERRED_SIZE)
689 .addComponent(fldSystemWaitDownload, PREFERRED_SIZE, 55, PREFERRED_SIZE)
690 .addComponent(fldSystemThreadConvert, PREFERRED_SIZE, 50, PREFERRED_SIZE)
693 .addGroup(glSystemGenegal.createSequentialGroup()
694 .addComponent(lblSystemTempDir)
695 .addComponent(fldSystemTempDir, DEFAULT_SIZE, 400, Short.MAX_VALUE)
696 .addComponent(btnSystemTempDir)
700 glSystemGenegal.setVerticalGroup(glSystemGenegal.createSequentialGroup()
701 .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
702 .addComponent(lblSystemThreadDownload)
703 .addComponent(fldSystemThreadDownload, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
704 .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
705 .addComponent(lblSystemWaitDownload)
706 .addComponent(fldSystemWaitDownload, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
707 .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
708 .addComponent(lblSystemThreadConvert)
709 .addComponent(fldSystemThreadConvert, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
710 .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
711 .addComponent(lblSystemTempDir)
712 .addComponent(fldSystemTempDir, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE)
713 .addComponent(btnSystemTempDir)
717 final JPanel pnlSystem = new JPanel();
718 pnlSystem.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
719 final GroupLayout glSystem = new GroupLayout(pnlSystem);
720 glSystem.setAutoCreateGaps(true);
721 glSystem.setAutoCreateContainerGaps(true);
722 pnlSystem.setLayout(glSystem);
724 glSystem.setHorizontalGroup(glSystem.createParallelGroup()
725 .addComponent(pnlSystemGeneral));
727 glSystem.setVerticalGroup(glSystem.createSequentialGroup()
728 .addComponent(pnlSystemGeneral));
730 tabbedPane.add("システム", pnlSystem);
733 setMinimumSize(getSize());
738 * @param args the command line arguments
740 public static void main(String args[]) {
741 /* Set the Nimbus look and feel */
742 /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
743 * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
746 for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
747 if ("Nimbus".equals(info.getName())) {
748 UIManager.setLookAndFeel(info.getClassName());
752 } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
753 java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
756 /* Create and display the form */
757 java.awt.EventQueue.invokeLater(new Runnable() {
761 new ConfigDialog().setVisible(true);
765 // Variables declaration - do not modify//GEN-BEGIN:variables
769 private final JTextField fldMail;
770 private final JTextField fldPassword;
772 private final JCheckBox cbProxyUse;
773 private final JTextField fldProxyHost;
774 private final JTextField fldProxyPort;
777 private final DownloadLocationPanel pnlFileVideo = new DownloadLocationPanel();
779 private final DownloadLocationPanel pnlFileComment = new DownloadLocationPanel();
781 private final JTextField fldOutputDir;
782 private final JTextField fldOutputFileNamePattern;
783 private final JButton btnOutputDir = new JButton("...");
784 private final JCheckBox cbOutputEnable;
785 private final JCheckBox cbOutputCommentOverlay;
786 private final JCheckBox cbOutputDisplayProgress;
788 private final JTextField fldReplaceFrom = new JTextField();
789 private final JTextField fldReplaceTo = new JTextField();
792 private final JCheckBox cbCommentSizeAuto;
793 private final JTextField fldCommentSizeManual;
794 private final JCheckBox cbCommentMinSizeAuto;
795 private final JTextField fldCommentMinSizeManual;
796 private final JCheckBox cbCommentDisplaySizeDefault;
797 private final JTextField fldCommentDisplaySizeManual;
799 private final JTextField fldFontPath;
800 private final JTextField fldFontIndex;
801 private final JComboBox<String> cmbFontShadow = new JComboBox<>();
802 private final JCheckBox cbFontSizeArrangeDisable;
803 private final JCheckBox cbCommentOpaque;
806 private final JTextField fldFfmpegPath;
807 private final JTextField fldFfmpegDllPath;
808 // ffmpeg - ffmpegパラメータ
809 private final FfmpegParamPanel pnlFfmpegParam = new FfmpegParamPanel();
812 private final NgRegisterPanel pnlNgWord = new NgRegisterPanel();
814 private final NgRegisterPanel pnlNgId = new NgRegisterPanel();
817 private final DirectoryRegisterPanel pnlSearchVideo = new DirectoryRegisterPanel();
819 private final DirectoryRegisterPanel pnlSearchComment = new DirectoryRegisterPanel();
821 private final SpinnerNumberModel mdlSystemThreadDownload = new SpinnerNumberModel();
822 private final SpinnerNumberModel mdlSystemWaitDownload = new SpinnerNumberModel();
823 private final SpinnerNumberModel mdlSystemThreadConvert = new SpinnerNumberModel();
824 private final JTextField fldSystemTempDir = new JTextField();
827 // End of variables declaration//GEN-END:variables
829 private void loadConfig() {
830 final Config p = Config.INSTANCE;
835 fldMail.setText(p.getId());
836 fldPassword.setText(p.getPassword());
841 cbProxyUse.setSelected(p.getProxyUse());
842 fldProxyHost.setText(p.getProxyHost());
843 fldProxyPort.setText(p.getProxyPort());
848 pnlFileVideo.fldDir.setText(p.getVideoDir());
849 pnlFileVideo.fldFileNamePattern.setText(p.getVideoFileNamePattern());
850 pnlFileVideo.cbLocal.setSelected(p.getVideoUseLocal());
855 pnlFileComment.fldDir.setText(p.getCommentDir());
856 pnlFileComment.fldFileNamePattern.setText(p.getCommentFileNamePattern());
857 pnlFileComment.cbLocal.setSelected(p.getCommentUseLocal());
862 fldOutputDir.setText(p.getOutputDir());
863 fldOutputFileNamePattern.setText(p.getOutputFileNamePattern());
864 cbOutputEnable.setSelected(p.getOutputEnable());
865 cbOutputCommentOverlay.setSelected(p.getOutputCommentOverlay());
866 cbOutputDisplayProgress.setSelected(p.getOutputDisplayProgress());
871 fldReplaceFrom.setText(p.getReplaceFrom());
872 fldReplaceTo.setText(p.getReplaceTo());
877 cbCommentSizeAuto.setSelected(p.getCommentSizeAutosize());
878 fldCommentSizeManual.setText(p.getCommentSizeManual());
879 cbCommentMinSizeAuto.setSelected(p.getCommentMinSizeAutosize());
880 fldCommentSizeManual.setText(p.getCommentMinSizeManual());
881 cbCommentDisplaySizeDefault.setSelected(p.getCommentDisplaySizeDefault());
882 fldCommentDisplaySizeManual.setText(p.getCommentDisplaySizeManual());
887 fldFontPath.setText(p.getFontPath());
888 fldFontIndex.setText(p.getFontIndex());
889 cmbFontShadow.setSelectedIndex(p.getFontShadow());
890 cbFontSizeArrangeDisable.setSelected(p.getFontSizeArrangeDisable());
891 cbCommentOpaque.setSelected(p.getCommentOpaque());
896 fldFfmpegPath.setText(p.getFfmpegPath());
897 fldFfmpegDllPath.setText(p.getFfmpegDllPath());
900 * ffmpeg - ffmpegパラメータ
902 pnlFfmpegParam.init(p);
907 final List<String> ngWords = p.getNgWords();
908 pnlNgWord.init(ngWords);
909 final List<String> ngIds = p.getNgIds();
915 pnlSearchVideo.init(p.getSearchVideoDirs());
916 pnlSearchComment.init(p.getSearchCommentDirs());
921 mdlSystemThreadDownload.setValue(p.getSystemDownloadThread());
922 mdlSystemWaitDownload.setValue(p.getSystemDownloadWait());
923 mdlSystemThreadConvert.setValue(p.getSystemConvertThread());
924 fldSystemTempDir.setText(p.getSystemTempDir());
927 private void saveConfig() {
928 final Config p = Config.INSTANCE;
934 p.setId(fldMail.getText());
935 p.setPassword(fldPassword.getText());
940 p.setProxyUse(cbProxyUse.isSelected());
941 p.setProxyHost(fldProxyHost.getText());
942 p.setProxyPort(fldProxyPort.getText());
947 p.setVideoDir(pnlFileVideo.fldDir.getText());
948 p.setVideoFileNamePattern(pnlFileVideo.fldFileNamePattern.getText());
949 p.setVideoUseLocal(pnlFileVideo.cbLocal.isSelected());
954 p.setCommentDir(pnlFileComment.fldDir.getText());
955 p.setCommentFileNamePattern(pnlFileComment.fldFileNamePattern.getText());
956 p.setCommentUseLocal(pnlFileComment.cbLocal.isSelected());
961 p.setOutputDir(fldOutputDir.getText());
962 p.setOutputFileNamePattern(fldOutputFileNamePattern.getText());
963 p.setOutputEnable(cbOutputEnable.isSelected());
964 p.setOutputCommentOverlay(cbOutputCommentOverlay.isSelected());
965 p.setOutputDisplayProgress(cbOutputDisplayProgress.isSelected());
970 p.setReplaceFrom(fldReplaceFrom.getText());
971 p.setReplaceTo(fldReplaceTo.getText());
976 p.setCommentSizeAutosize(cbCommentSizeAuto.isSelected());
977 p.setCommentSizeManual(fldCommentSizeManual.getText());
978 p.setCommentMinSizeAutosize(cbCommentMinSizeAuto.isSelected());
979 p.setCommentMinSizeManual(fldCommentSizeManual.getText());
980 p.setCommentDisplaySizeDefault(cbCommentDisplaySizeDefault.isSelected());
981 p.setCommentDisplaySizeManual(fldCommentDisplaySizeManual.getText());
986 p.setFontPath(fldFontPath.getText());
987 p.setFontIndex(fldFontIndex.getText());
988 p.setFontShadow(cmbFontShadow.getSelectedIndex());
989 p.setFontSizeArrangeDisable(cbFontSizeArrangeDisable.isSelected());
990 p.setCommentOpaque(cbCommentOpaque.isSelected());
995 p.setFfmpegPath(fldFfmpegPath.getText());
996 p.setFfmpegDllPath(fldFfmpegDllPath.getText());
999 * ffmpeg - ffmpegパラメータ
1001 final File fileFfmpegOption = pnlFfmpegParam.mdlFfmpegOption.getSelectedFile();
1002 p.setFfmpegOptionFile(fileFfmpegOption != null ? fileFfmpegOption.getPath() : null);
1003 p.setFfmpegExtension(pnlFfmpegParam.fldFfmpegOptionExtension.getText());
1004 p.setFfmpegMainOption(pnlFfmpegParam.fldFfmpegOptionMain.getText());
1005 p.setFfmpegInOption(pnlFfmpegParam.fldFfmpegOptionIn.getText());
1006 p.setFfmpegOutOption(pnlFfmpegParam.fldFfmpegOptionOut.getText());
1007 p.setFfmpegAvOption(pnlFfmpegParam.fldFfmpegOptionAv.getText());
1008 p.setFfmpegResizeEnable(pnlFfmpegParam.cbFfmpegOptionResize.isSelected());
1009 p.setFfmpegResizeWidth(pnlFfmpegParam.fldFfmpegOptionResizeWidth.getText());
1010 p.setFfmpegResizeHeight(pnlFfmpegParam.fldFfmpegOptionResizeHeight.getText());
1011 p.setFfmpegKeepAspect(pnlFfmpegParam.cbFfmpegOptionKeepAspect.isSelected());
1016 p.setNgWords(pnlNgWord.getAllElements());
1017 p.setNgIds(pnlNgId.getAllElements());
1022 p.setSearchVideoDirs(pnlSearchVideo.getAllElements());
1023 p.setSearchCommentDirs(pnlSearchComment.getAllElements());
1028 p.setSystemDownloadThread(mdlSystemThreadDownload.getNumber().intValue());
1029 p.setSystemDownloadWait(mdlSystemWaitDownload.getNumber().intValue());
1030 p.setSystemConvertThread(mdlSystemThreadConvert.getNumber().intValue());
1031 p.setSystemTempDir(fldSystemTempDir.getText());
1035 } catch (ConfigurationException ex) {
1036 logger.log(Level.SEVERE, "コンフィグファイル保存に失敗", ex);
1041 class DownloadLocationPanel extends JPanel {
1042 final JTextField fldDir = new JTextField();
1043 final JTextField fldFileNamePattern = new JTextField();
1044 final JCheckBox cbLocal = new JCheckBox("local");
1046 DownloadLocationPanel(){
1049 final JLabel lblVideoDir = new JLabel("保存フォルダ");
1050 final JLabel lblVideoFileNamepattern = new JLabel("ファイル名規則");
1052 final JButton btnDir = new JButton("...");
1053 btnDir.addActionListener(
1054 new FileChooseAction(DownloadLocationPanel.this, JFileChooser.DIRECTORIES_ONLY, fldDir));
1056 final GroupLayout gl = new GroupLayout(this);
1058 gl.setHorizontalGroup(
1059 gl.createParallelGroup(GroupLayout.Alignment.LEADING)
1060 .addGroup(GroupLayout.Alignment.TRAILING, gl.createSequentialGroup()
1062 .addGroup(gl.createParallelGroup(GroupLayout.Alignment.LEADING)
1063 .addComponent(lblVideoFileNamepattern)
1064 .addComponent(lblVideoDir))
1065 .addPreferredGap(ComponentPlacement.RELATED)
1066 .addGroup(gl.createParallelGroup(GroupLayout.Alignment.LEADING)
1067 .addGroup(gl.createSequentialGroup()
1068 .addComponent(fldDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
1069 .addPreferredGap(ComponentPlacement.RELATED)
1070 .addComponent(btnDir))
1071 .addGroup(GroupLayout.Alignment.TRAILING, gl.createSequentialGroup()
1072 .addComponent(fldFileNamePattern, GroupLayout.PREFERRED_SIZE, 165, GroupLayout.PREFERRED_SIZE)
1073 .addPreferredGap(ComponentPlacement.RELATED, 94, Short.MAX_VALUE)
1074 .addComponent(cbLocal)))
1077 gl.setVerticalGroup(
1078 gl.createParallelGroup(GroupLayout.Alignment.LEADING)
1079 .addGroup(gl.createSequentialGroup()
1080 .addGroup(gl.createParallelGroup(GroupLayout.Alignment.BASELINE)
1081 .addComponent(lblVideoDir)
1082 .addComponent(fldDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
1083 .addComponent(btnDir))
1084 .addPreferredGap(ComponentPlacement.RELATED)
1085 .addGroup(gl.createParallelGroup(GroupLayout.Alignment.BASELINE)
1086 .addComponent(lblVideoFileNamepattern)
1087 .addComponent(fldFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
1088 .addComponent(cbLocal))
1089 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))