*/
package yukihane.inqubus.gui;
-import java.util.Arrays;
+import static javax.swing.GroupLayout.DEFAULT_SIZE;
+import static javax.swing.GroupLayout.PREFERRED_SIZE;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
+import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListModel;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
+import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
-import javax.swing.JList;
import javax.swing.JPanel;
+import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
-import javax.swing.JScrollPane;
+import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
-import javax.swing.UIManager;
-import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.SpinnerNumberModel;
import javax.swing.WindowConstants;
-import yukihane.inqubus.Config;
+import org.apache.commons.configuration.ConfigurationException;
+import yukihane.inqubus.config.Config;
+import yukihane.inqubus.config.Config.CookieBrowser;
/**
*
*/
public class ConfigDialog extends JDialog {
private static final long serialVersionUID = 1L;
+ private static final Logger logger = LoggerFactory.getLogger(ConfigDialog.class);
+ private static final String NEED_REBOOT = "設定を有効にするにはいんきゅばすの再起動が必要です";
/** Creates new form Properties */
public ConfigDialog() {
public ConfigDialog(JFrame owner){
super(owner);
- final ButtonGroup buttonGroup1 = new ButtonGroup();
final JTabbedPane tabbedPane = new JTabbedPane();
final JPanel pnlNetwork = new JPanel();
final JPanel pnlAccount = new JPanel();
- final JLabel lblMail = new JLabel();
fldMail = new JTextField();
- final JLabel lblPassword = new JLabel();
- fldPassword = new JTextField();
+ fldPassword.setEchoChar('*');
final JPanel pnlProxy = new JPanel();
cbProxyUse = new JCheckBox();
final JLabel lblProxyHost = new JLabel();
final JLabel lblProxyPort = new JLabel();
- fldProxyHost = new JTextField();
- fldProxyPort = new JTextField();
final JPanel pnlFile = new JPanel();
- final JPanel pnlFileVideo = new JPanel();
- final JLabel lblVideoDir = new JLabel();
- final JLabel lblVideoFileNamepattern = new JLabel();
- fldVideoDir = new JTextField();
- fldVideoFileNamePattern = new JTextField();
- btnVideoDir = new JButton();
- cbVideoLocal = new JCheckBox();
- final JPanel pnlFileComment = new JPanel();
- final JLabel lblCommentDir = new JLabel();
- final JLabel lblCommentFileNamePattern = new JLabel();
- fldCommentDir = new JTextField();
- fldCommentFileNamePattern = new JTextField();
- btnCommentDir = new JButton();
- cbCommentLocal = new JCheckBox();
final JPanel pnlFileOutput = new JPanel();
final JLabel lblOutputDir = new JLabel();
final JLabel lblOutputFileNamePattern = new JLabel();
fldOutputDir = new JTextField();
fldOutputFileNamePattern = new JTextField();
- btnOutputDir = new JButton();
cbOutputEnable = new JCheckBox();
cbOutputCommentOverlay = new JCheckBox();
cbOutputDisplayProgress = new JCheckBox();
final JPanel pnlComment = new JPanel();
final JPanel pnlCommentStandard = new JPanel();
final JLabel lblCommentSize = new JLabel();
- cbCommentSizeAuto = new JCheckBox();
final JLabel lblCommentSizeManual = new JLabel();
- fldCommentSizeManual = new JTextField();
final JLabel lblCommentMinSize = new JLabel();
- cbCommentMinSizeAuto = new JCheckBox();
- fldCommentMinSizeManual = new JTextField();
final JLabel lblCommentMinSizeManual = new JLabel();
final JLabel lblCommentDisplayMax = new JLabel();
- cbCommentDisplaySizeDefault = new JCheckBox();
final JLabel lblCommentDisplayMaxManual = new JLabel();
- fldCommentDisplaySizeManual = new JTextField();
final JPanel pnlCommentAdvanced = new JPanel();
final JLabel lblFontPath = new JLabel();
cbFontSizeArrangeDisable = new JCheckBox();
cbCommentOpaque = new JCheckBox();
fldFontPath = new JTextField();
- btnFontPath = new JButton();
final JLabel lblFontIndex = new JLabel();
final JLabel lblFontShadow = new JLabel();
fldFontIndex = new JTextField();
- fldFontShadow = new JTextField();
final JPanel pnlFfmpeg = new JPanel();
- final JPanel jPanel10 = new JPanel();
- final JLabel lblFfmpegPath = new JLabel();
- final JLabel lblFfmpegDllPath = new JLabel();
- fldFfmpegPath = new JTextField();
- fldFfmpegDllPath = new JTextField();
- btnFfmpegPath = new JButton();
- btnFfmpegDllPath = new JButton();
- final JPanel pnlFfmpegParam = new JPanel();
- rbFfmpegOptionFile = new JRadioButton();
- rbFfmpegOptionDirectInput = new JRadioButton();
- cmbFfmpegOptionFile = new JComboBox();
- final JPanel pnlFfmpegParamOption = new JPanel();
- final JLabel lblFfmpegOptionExtension = new JLabel();
- final JLabel lblFfmpegOptionMain = new JLabel();
- final JLabel lblFfmpegOptionIn = new JLabel();
- final JLabel lblFfmpegOptionOut = new JLabel();
- final JLabel lblFfmpegOptionAvfilter = new JLabel();
- cbFfmpegOptionResize = new JCheckBox();
- final JLabel lblFfmpegOptionResizeWidth = new JLabel();
- fldFfmpegOptionResizeWidth = new JTextField();
- final JLabel lblFfmpegOptionResizeHeight = new JLabel();
- fldFfmpegOptionResizeHeight = new JTextField();
- cbFfmpegOptionKeepAspect = new JCheckBox();
- fldFfmpegOptionExtension = new JTextField();
- fldFfmpegOptionMain = new JTextField();
- fldFfmpegOptionIn = new JTextField();
- fldFfmpegOptionOut = new JTextField();
- fldFfmpegOptionAv = new JTextField();
+ final JPanel pnlFfmpegBinPath = new JPanel();
+ final JLabel lblFfmpegPath = new JLabel("ffmpeg");
+ final JLabel lblFfmpegDllPath = new JLabel("拡張ライブラリ");
+ final JLabel lblMediaInfoPath = new JLabel("MediaInfo");
final JPanel pnlNgSetting = new JPanel();
- final JPanel pnlNgWord = new JPanel();
- final JScrollPane scrNgWord = new JScrollPane();
- lstNgWord = new JList<>();
- fldNgWord = new JTextField();
- btnNgWordAdd = new JButton();
- btnNgWordDel = new JButton();
- final JPanel pnlNgId = new JPanel();
- final JScrollPane scrNgId = new JScrollPane();
- lstNgId = new JList<>();
- fldNgId = new JTextField();
- btnNgIdAdd = new JButton();
- btnNgIdDel = new JButton();
final JPanel pnlSearch = new JPanel();
- final JPanel pnlSearchVideo = new JPanel();
- final JScrollPane srcSearchVideo = new JScrollPane();
- lstSearchVideo = new JList<>();
- btnSearchVideoAdd = new JButton();
- btnSearchVideoDel = new JButton();
- final JPanel pnlSearchComment = new JPanel();
- final JScrollPane srcSearchComment = new JScrollPane();
- lstSearchComment = new JList<>();
- btnSearchCommentAdd = new JButton();
- btnSearchCommentDel = new JButton();
- final JPanel pnlSearchCache = new JPanel();
- final JLabel lblSearchCache = new JLabel();
- fldSearchCache = new JTextField();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
pnlAccount.setBorder(BorderFactory.createTitledBorder("アカウント"));
- lblMail.setText("ID(メールアドレス)");
-
- lblPassword.setText("パスワード");
+ final JLabel lblMail = new JLabel("ID(メールアドレス)");
+ final JLabel lblPassword = new JLabel("パスワード");
GroupLayout gl_pnlAccount = new GroupLayout(pnlAccount);
pnlAccount.setLayout(gl_pnlAccount);
- gl_pnlAccount.setHorizontalGroup(
- gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
+ gl_pnlAccount.setHorizontalGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
+ .addComponent(btnAccount)
.addGroup(gl_pnlAccount.createSequentialGroup()
.addContainerGap()
+ .addGap(10)
.addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lblMail)
- .addComponent(lblPassword))
+ .addComponent(lblPassword)
+ )
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(fldPassword, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE)
- .addComponent(fldMail, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE))
- .addContainerGap())
+ .addComponent(fldMail, GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE)
+ )
+ .addContainerGap()
+ )
);
gl_pnlAccount.setVerticalGroup(
gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(gl_pnlAccount.createSequentialGroup()
.addContainerGap()
+ .addComponent(btnAccount)
+ .addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblMail)
.addComponent(fldMail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
+
+ final JButton btnCookie = new JButton("...");
+ btnCookie.addActionListener(new FileChooseActionListener(this, JFileChooser.DIRECTORIES_ONLY, fldCookie));
+
+ final ButtonGroup grpLoginType = new ButtonGroup();
+ grpLoginType.add(btnAccount);
+ grpLoginType.add(btnLoginCookie);
+
+ final ButtonGroup grpCookie = new ButtonGroup();
+ grpCookie.add(btnCookieIe);
+ grpCookie.add(btnCookieFirefox);
+ grpCookie.add(btnCookieChrome);
+ grpCookie.add(btnCookieChromium);
+ grpCookie.add(btnCookieOpera);
+ grpCookie.add(btnCookieOther);
+
+ final JPanel pnlCookie = new JPanel();
+ pnlCookie.setBorder(BorderFactory.createTitledBorder("cookie"));
+ final GroupLayout glCookie = new GroupLayout(pnlCookie);
+ pnlCookie.setLayout(glCookie);
+ glCookie.setAutoCreateContainerGaps(true);
+ glCookie.setAutoCreateGaps(true);
+
+ glCookie.setHorizontalGroup(glCookie.createParallelGroup()
+ .addComponent(btnLoginCookie)
+ .addGroup(glCookie.createSequentialGroup()
+ .addGap(10)
+ .addGroup(glCookie.createParallelGroup()
+ .addComponent(btnCookieIe)
+ .addComponent(btnCookieFirefox)
+ .addComponent(btnCookieChrome)
+ .addComponent(btnCookieChromium)
+ .addComponent(btnCookieOpera)
+ .addComponent(btnCookieOther)
+ .addGroup(glCookie.createSequentialGroup()
+ .addComponent(fldCookie)
+ .addComponent(btnCookie)
+ )
+ )
+ )
+ );
+
+ glCookie.setVerticalGroup(glCookie.createSequentialGroup()
+ .addComponent(btnLoginCookie)
+ .addComponent(btnCookieIe)
+ .addComponent(btnCookieFirefox)
+ .addComponent(btnCookieChrome)
+ .addComponent(btnCookieChromium)
+ .addComponent(btnCookieOpera)
+ .addComponent(btnCookieOther)
+ .addGroup(glCookie.createParallelGroup(Alignment.BASELINE)
+ .addComponent(fldCookie)
+ .addComponent(btnCookie)
+ )
+ );
+
+
pnlProxy.setBorder(BorderFactory.createTitledBorder("プロキシ"));
cbProxyUse.setText("プロキシを使用する");
.addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblProxyPort)
.addComponent(fldProxyPort, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addContainerGap(39, Short.MAX_VALUE))
+ .addContainerGap())
);
+
GroupLayout gl_pnlNetwork = new GroupLayout(pnlNetwork);
pnlNetwork.setLayout(gl_pnlNetwork);
gl_pnlNetwork.setHorizontalGroup(
.addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNetwork.createSequentialGroup()
.addContainerGap()
.addGroup(gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.TRAILING)
+ .addComponent(pnlAccount, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(pnlCookie, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pnlProxy, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(pnlAccount, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ )
.addContainerGap())
);
gl_pnlNetwork.setVerticalGroup(
.addContainerGap()
.addComponent(pnlAccount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(pnlCookie, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(ComponentPlacement.RELATED)
.addComponent(pnlProxy, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addContainerGap(178, Short.MAX_VALUE))
+ .addContainerGap()
+ )
);
tabbedPane.addTab("ネットワーク", pnlNetwork);
pnlFileVideo.setBorder(BorderFactory.createTitledBorder("動画"));
- lblVideoDir.setText("保存フォルダ");
-
- lblVideoFileNamepattern.setText("ファイル名規則");
-
- btnVideoDir.setText("...");
-
- cbVideoLocal.setText("local");
-
- GroupLayout gl_pnlFileVideo = new GroupLayout(pnlFileVideo);
- pnlFileVideo.setLayout(gl_pnlFileVideo);
- gl_pnlFileVideo.setHorizontalGroup(
- gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileVideo.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addComponent(lblVideoFileNamepattern)
- .addComponent(lblVideoDir))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFileVideo.createSequentialGroup()
- .addComponent(fldVideoDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(btnVideoDir))
- .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFileVideo.createSequentialGroup()
- .addComponent(fldVideoFileNamePattern, GroupLayout.PREFERRED_SIZE, 165, GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(ComponentPlacement.RELATED, 94, Short.MAX_VALUE)
- .addComponent(cbVideoLocal)))
- .addContainerGap())
- );
- gl_pnlFileVideo.setVerticalGroup(
- gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFileVideo.createSequentialGroup()
- .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblVideoDir)
- .addComponent(fldVideoDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(btnVideoDir))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFileVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblVideoFileNamepattern)
- .addComponent(fldVideoFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(cbVideoLocal))
- .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- );
-
pnlFileComment.setBorder(BorderFactory.createTitledBorder("コメント"));
- lblCommentDir.setText("保存フォルダ");
-
- lblCommentFileNamePattern.setText("ファイル名規則");
-
- btnCommentDir.setText("...");
-
- cbCommentLocal.setText("local");
-
- GroupLayout gl_pnlFileComment = new GroupLayout(pnlFileComment);
- pnlFileComment.setLayout(gl_pnlFileComment);
- gl_pnlFileComment.setHorizontalGroup(
- gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFileComment.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addComponent(lblCommentFileNamePattern)
- .addComponent(lblCommentDir))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFileComment.createSequentialGroup()
- .addComponent(fldCommentFileNamePattern, GroupLayout.PREFERRED_SIZE, 166, GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(ComponentPlacement.RELATED, 93, Short.MAX_VALUE)
- .addComponent(cbCommentLocal))
- .addGroup(gl_pnlFileComment.createSequentialGroup()
- .addComponent(fldCommentDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(btnCommentDir)))
- .addContainerGap())
- );
- gl_pnlFileComment.setVerticalGroup(
- gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFileComment.createSequentialGroup()
- .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblCommentDir)
- .addComponent(fldCommentDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(btnCommentDir))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFileComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblCommentFileNamePattern)
- .addComponent(fldCommentFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(cbCommentLocal))
- .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- );
-
pnlFileOutput.setBorder(BorderFactory.createTitledBorder("変換動画"));
lblOutputDir.setText("保存フォルダ");
lblOutputFileNamePattern.setText("ファイル名規則");
- btnOutputDir.setText("...");
+ btnOutputDir.addActionListener(
+ new FileChooseActionListener(ConfigDialog.this, JFileChooser.DIRECTORIES_ONLY, fldOutputDir));
cbOutputEnable.setText("変換");
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
+ final JPanel pnlFileProhibit = new JPanel();
+ pnlFileProhibit.setBorder(BorderFactory.createTitledBorder("禁則文字"));
+ final JLabel lblReplaceFrom = new JLabel("置換対象文字");
+ final JLabel lblReplaceTo = new JLabel("置換後文字");
+
+ final GroupLayout glProhibit = new GroupLayout(pnlFileProhibit);
+ glProhibit.setAutoCreateContainerGaps(true);
+ glProhibit.setAutoCreateGaps(true);
+ pnlFileProhibit.setLayout(glProhibit);
+
+ glProhibit.setHorizontalGroup(glProhibit.createSequentialGroup()
+ .addGroup(glProhibit.createParallelGroup()
+ .addComponent(lblReplaceFrom)
+ .addComponent(lblReplaceTo)
+ )
+ .addGroup(glProhibit.createParallelGroup()
+ .addComponent(fldReplaceFrom)
+ .addComponent(fldReplaceTo)
+ )
+ );
+
+ glProhibit.setVerticalGroup(glProhibit.createSequentialGroup()
+ .addGroup(glProhibit.createParallelGroup(Alignment.BASELINE)
+ .addComponent(lblReplaceFrom)
+ .addComponent(fldReplaceFrom)
+ )
+ .addGroup(glProhibit.createParallelGroup(Alignment.BASELINE)
+ .addComponent(lblReplaceTo)
+ .addComponent(fldReplaceTo)
+ )
+ );
+
GroupLayout gl_pnlFile = new GroupLayout(pnlFile);
pnlFile.setLayout(gl_pnlFile);
gl_pnlFile.setHorizontalGroup(
.addGroup(gl_pnlFile.createParallelGroup(GroupLayout.Alignment.TRAILING)
.addComponent(pnlFileOutput, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pnlFileVideo, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(pnlFileComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(pnlFileComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(pnlFileProhibit, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ )
.addContainerGap())
);
gl_pnlFile.setVerticalGroup(
.addComponent(pnlFileComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(pnlFileOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(pnlFileProhibit, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
lblCommentSize.setText("再生時間に応じたコメントの取得数");
- cbCommentSizeAuto.setText("自動調整");
-
lblCommentSizeManual.setText("手動取得");
lblCommentMinSize.setText("1分当たりのコメント取得数");
- cbCommentMinSizeAuto.setText("自動調整");
-
lblCommentMinSizeManual.setText("手動取得");
lblCommentDisplayMax.setText("1画面に表示する最大コメント数");
- cbCommentDisplaySizeDefault.setText("標準(30)");
-
lblCommentDisplayMaxManual.setText("手動設定");
GroupLayout gl_pnlCommentStandard = new GroupLayout(pnlCommentStandard);
.addComponent(lblCommentDisplayMax))
.addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(cbCommentSizeAuto)
+ .addComponent(cbCommentMinDisable)
.addComponent(cbCommentMinSizeAuto)
.addComponent(cbCommentDisplaySizeDefault))
.addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(fldCommentSizeManual))
.addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblCommentMinSize)
+ .addComponent(cbCommentMinDisable)
+ )
+ .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(cbCommentMinSizeAuto)
.addComponent(lblCommentMinSizeManual)
.addComponent(fldCommentMinSizeManual))
cbCommentOpaque.setText("コメント透明化を行わない");
- btnFontPath.setText("...");
+ final JButton btnFontPath = new JButton("...");
+ btnFontPath.addActionListener(
+ new FileChooseActionListener(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFontPath));
lblFontIndex.setText("フォント番号");
lblFontShadow.setText("影の種類");
+ final ComboBoxModel<String> cbmFontShadow
+ = new DefaultComboBoxModel<>(new String[]{"0:なし", "1:ニコニコ動画風", "2:右下", "3:囲い込み"});
+ cmbFontShadow.setModel(cbmFontShadow);
GroupLayout gl_pnlCommentAdvanced = new GroupLayout(pnlCommentAdvanced);
pnlCommentAdvanced.setLayout(gl_pnlCommentAdvanced);
.addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(fldFontPath, GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)
.addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
- .addComponent(fldFontShadow, GroupLayout.Alignment.LEADING)
+ .addComponent(cmbFontShadow, GroupLayout.Alignment.LEADING)
.addComponent(fldFontIndex, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 48, Short.MAX_VALUE)))
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(btnFontPath))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_pnlCommentAdvanced.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblFontShadow)
- .addComponent(fldFontShadow, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
+ .addComponent(cmbFontShadow, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(cbFontSizeArrangeDisable)
.addPreferredGap(ComponentPlacement.RELATED)
tabbedPane.addTab("コメント", pnlComment);
- jPanel10.setBorder(BorderFactory.createTitledBorder("ファイルパス"));
-
- lblFfmpegPath.setText("ffmpeg");
+ pnlFfmpegBinPath.setBorder(BorderFactory.createTitledBorder("ファイルパス"));
- lblFfmpegDllPath.setText("拡張ライブラリ");
+ final JButton btnFfmpegPath = new JButton("...");
+ btnFfmpegPath.addActionListener(
+ new FileChooseActionListener(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFfmpegPath));
- btnFfmpegPath.setText("...");
+ final JButton btnFfmpegDllPath = new JButton("...");
+ btnFfmpegDllPath.addActionListener(
+ new FileChooseActionListener(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFfmpegDllPath));
- btnFfmpegDllPath.setText("...");
+ final JButton btnMediaInfoPath = new JButton("...");
+ btnMediaInfoPath.addActionListener(
+ new FileChooseActionListener(ConfigDialog.this, JFileChooser.FILES_ONLY, fldMediaInfoPath));
- GroupLayout gl_jPanel10 = new GroupLayout(jPanel10);
- jPanel10.setLayout(gl_jPanel10);
+ GroupLayout gl_jPanel10 = new GroupLayout(pnlFfmpegBinPath);
+ pnlFfmpegBinPath.setLayout(gl_jPanel10);
gl_jPanel10.setHorizontalGroup(
gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(gl_jPanel10.createSequentialGroup()
.addContainerGap()
.addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
+ .addComponent(lblFfmpegPath)
.addComponent(lblFfmpegDllPath)
- .addComponent(lblFfmpegPath))
+ .addComponent(lblMediaInfoPath)
+ )
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(fldFfmpegDllPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)
- .addComponent(fldFfmpegPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE))
+ .addComponent(fldFfmpegPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)
+ .addComponent(fldMediaInfoPath, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)
+ )
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(btnFfmpegPath, GroupLayout.Alignment.TRAILING)
- .addComponent(btnFfmpegDllPath, GroupLayout.Alignment.TRAILING))
+ .addComponent(btnFfmpegDllPath, GroupLayout.Alignment.TRAILING)
+ .addComponent(btnMediaInfoPath, GroupLayout.Alignment.TRAILING)
+ )
.addContainerGap())
);
gl_jPanel10.setVerticalGroup(
.addComponent(lblFfmpegPath)
.addComponent(fldFfmpegPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(btnFfmpegPath))
- .addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblFfmpegDllPath)
.addComponent(fldFfmpegDllPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(btnFfmpegDllPath))
- .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(gl_jPanel10.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(lblMediaInfoPath)
+ .addComponent(fldMediaInfoPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addComponent(btnMediaInfoPath))
+ )
);
pnlFfmpegParam.setBorder(BorderFactory.createTitledBorder("ffmpegパラメータ"));
- buttonGroup1.add(rbFfmpegOptionFile);
- rbFfmpegOptionFile.setText("オプションファイル");
-
- buttonGroup1.add(rbFfmpegOptionDirectInput);
- rbFfmpegOptionDirectInput.setText("直接入力");
-
- cmbFfmpegOptionFile.setModel(new DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
-
- pnlFfmpegParamOption.setBorder(BorderFactory.createEtchedBorder());
-
- lblFfmpegOptionExtension.setText("出力動画の拡張子");
-
- lblFfmpegOptionMain.setText("メインオプション");
-
- lblFfmpegOptionIn.setText("入力オプション");
-
- lblFfmpegOptionOut.setText("出力オプション");
-
- lblFfmpegOptionAvfilter.setText("avfilterオプション");
-
- cbFfmpegOptionResize.setText("次のサイズに収まるよう縮小(-s)");
-
- lblFfmpegOptionResizeWidth.setText("横");
-
- lblFfmpegOptionResizeHeight.setText("縦");
-
- cbFfmpegOptionKeepAspect.setText("アスペクト比を維持");
-
- GroupLayout gl_pnlFfmpegParamOption = new GroupLayout(pnlFfmpegParamOption);
- pnlFfmpegParamOption.setLayout(gl_pnlFfmpegParamOption);
- gl_pnlFfmpegParamOption.setHorizontalGroup(
- gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addComponent(lblFfmpegOptionAvfilter)
- .addComponent(lblFfmpegOptionExtension)
- .addComponent(lblFfmpegOptionMain)
- .addComponent(lblFfmpegOptionIn)
- .addComponent(lblFfmpegOptionOut))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addComponent(fldFfmpegOptionExtension, GroupLayout.PREFERRED_SIZE, 51, GroupLayout.PREFERRED_SIZE)
- .addComponent(fldFfmpegOptionMain, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
- .addComponent(fldFfmpegOptionIn, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
- .addComponent(fldFfmpegOptionOut, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
- .addComponent(fldFfmpegOptionAv, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)))
- .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
- .addGap(12, 12, 12)
- .addComponent(cbFfmpegOptionResize)
- .addPreferredGap(ComponentPlacement.UNRELATED)
- .addComponent(lblFfmpegOptionResizeWidth)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE)
- .addGap(12, 12, 12)
- .addComponent(lblFfmpegOptionResizeHeight)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE))
- .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
- .addGap(33, 33, 33)
- .addComponent(cbFfmpegOptionKeepAspect)))
- .addContainerGap())
- );
- gl_pnlFfmpegParamOption.setVerticalGroup(
- gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFfmpegParamOption.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblFfmpegOptionExtension)
- .addComponent(fldFfmpegOptionExtension, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblFfmpegOptionMain)
- .addComponent(fldFfmpegOptionMain, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblFfmpegOptionIn)
- .addComponent(fldFfmpegOptionIn, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblFfmpegOptionOut)
- .addComponent(fldFfmpegOptionOut, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblFfmpegOptionAvfilter)
- .addComponent(fldFfmpegOptionAv, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlFfmpegParamOption.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(cbFfmpegOptionResize)
- .addComponent(lblFfmpegOptionResizeWidth)
- .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(lblFfmpegOptionResizeHeight)
- .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(cbFfmpegOptionKeepAspect)
- .addContainerGap())
- );
-
- GroupLayout gl_pnlFfmpegParam = new GroupLayout(pnlFfmpegParam);
- pnlFfmpegParam.setLayout(gl_pnlFfmpegParam);
- gl_pnlFfmpegParam.setHorizontalGroup(
- gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
- .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
- .addComponent(pnlFfmpegParamOption, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
- .addComponent(rbFfmpegOptionFile)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(cmbFfmpegOptionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addComponent(rbFfmpegOptionDirectInput))
- .addContainerGap())
+ // ffmpeg - その他
+ final JPanel pnlFffmpegEtc = new JPanel();
+ pnlFffmpegEtc.setBorder(BorderFactory.createTitledBorder("その他"));
+ final GroupLayout glFfmpegEtc = new GroupLayout(pnlFffmpegEtc);
+ glFfmpegEtc.setAutoCreateContainerGaps(true);
+ glFfmpegEtc.setAutoCreateGaps(true);
+ pnlFffmpegEtc.setLayout(glFfmpegEtc);
+
+ glFfmpegEtc.setHorizontalGroup(glFfmpegEtc.createParallelGroup()
+ .addComponent(cbDisplayConverting)
+ .addComponent(cbDllDisabled)
);
- gl_pnlFfmpegParam.setVerticalGroup(
- gl_pnlFfmpegParam.createParallelGroup(Alignment.LEADING)
- .addGroup(gl_pnlFfmpegParam.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlFfmpegParam.createParallelGroup(Alignment.BASELINE)
- .addComponent(rbFfmpegOptionFile)
- .addComponent(cmbFfmpegOptionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(rbFfmpegOptionDirectInput)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(pnlFfmpegParamOption, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addContainerGap())
+ glFfmpegEtc.setVerticalGroup(glFfmpegEtc.createSequentialGroup()
+ .addComponent(cbDisplayConverting)
+ .addComponent(cbDllDisabled)
);
- GroupLayout gl_pnlFfmpeg = new GroupLayout(pnlFfmpeg);
- pnlFfmpeg.setLayout(gl_pnlFfmpeg);
- gl_pnlFfmpeg.setHorizontalGroup(
- gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlFfmpeg.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.TRAILING)
- .addComponent(pnlFfmpegParam, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jPanel10, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addContainerGap())
+ final GroupLayout glFfmpeg = new GroupLayout(pnlFfmpeg);
+ glFfmpeg.setAutoCreateContainerGaps(true);
+ pnlFfmpeg.setLayout(glFfmpeg);
+ glFfmpeg.setHorizontalGroup(glFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
+ .addComponent(pnlFfmpegBinPath)
+ .addComponent(pnlFfmpegParam)
+ .addComponent(pnlFffmpegEtc)
);
- gl_pnlFfmpeg.setVerticalGroup(
- gl_pnlFfmpeg.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlFfmpeg.createSequentialGroup()
- .addContainerGap()
- .addComponent(jPanel10, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(pnlFfmpegParam, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addContainerGap())
+ glFfmpeg.setVerticalGroup(glFfmpeg.createSequentialGroup()
+ .addComponent(pnlFfmpegBinPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(pnlFfmpegParam)
+ .addComponent(pnlFffmpegEtc)
);
tabbedPane.addTab("ffmpeg", pnlFfmpeg);
pnlNgWord.setBorder(BorderFactory.createTitledBorder("NGワード"));
-
- lstNgWord.setModel(mdlNgWord);
- scrNgWord.setViewportView(lstNgWord);
-
- btnNgWordAdd.setText("追加");
-
- btnNgWordDel.setText("削除");
-
- GroupLayout gl_pnlNgWord = new GroupLayout(pnlNgWord);
- pnlNgWord.setLayout(gl_pnlNgWord);
- gl_pnlNgWord.setHorizontalGroup(
- gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlNgWord.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addComponent(scrNgWord, GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
- .addGroup(gl_pnlNgWord.createSequentialGroup()
- .addComponent(fldNgWord, GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(btnNgWordAdd)
- .addGap(18, 18, 18)
- .addComponent(btnNgWordDel)))
- .addContainerGap())
- );
- gl_pnlNgWord.setVerticalGroup(
- gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlNgWord.createSequentialGroup()
- .addComponent(scrNgWord, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlNgWord.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(fldNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(btnNgWordDel)
- .addComponent(btnNgWordAdd))
- .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- );
-
pnlNgId.setBorder(BorderFactory.createTitledBorder("NGID"));
- lstNgId.setModel(mdlNgId);
- scrNgId.setViewportView(lstNgId);
-
- btnNgIdAdd.setText("追加");
-
- btnNgIdDel.setText("削除");
-
- GroupLayout gl_pnlNgId = new GroupLayout(pnlNgId);
- pnlNgId.setLayout(gl_pnlNgId);
- gl_pnlNgId.setHorizontalGroup(
- gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlNgId.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addComponent(scrNgId, GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
- .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNgId.createSequentialGroup()
- .addComponent(fldNgId, GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(btnNgIdAdd)
- .addGap(18, 18, 18)
- .addComponent(btnNgIdDel)))
- .addContainerGap())
- );
- gl_pnlNgId.setVerticalGroup(
- gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlNgId.createSequentialGroup()
- .addComponent(scrNgId, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlNgId.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(fldNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(btnNgIdDel)
- .addComponent(btnNgIdAdd))
- .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- );
-
GroupLayout gl_pnlNgSetting = new GroupLayout(pnlNgSetting);
pnlNgSetting.setLayout(gl_pnlNgSetting);
gl_pnlNgSetting.setHorizontalGroup(
gl_pnlNgSetting.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(gl_pnlNgSetting.createSequentialGroup()
.addContainerGap()
- .addComponent(pnlNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addComponent(pnlNgWord, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(pnlNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addContainerGap(82, Short.MAX_VALUE))
+ .addComponent(pnlNgId, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addContainerGap())
);
tabbedPane.addTab("NG設定", pnlNgSetting);
pnlSearchVideo.setBorder(BorderFactory.createTitledBorder("動画検索対象フォルダ"));
-
- lstSearchVideo.setModel(mdlSearchVideo);
- srcSearchVideo.setViewportView(lstSearchVideo);
-
- btnSearchVideoAdd.setText("追加...");
-
- btnSearchVideoDel.setText("削除");
-
- GroupLayout gl_pnlSearchVideo = new GroupLayout(pnlSearchVideo);
- pnlSearchVideo.setLayout(gl_pnlSearchVideo);
- gl_pnlSearchVideo.setHorizontalGroup(
- gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addComponent(srcSearchVideo, GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE)
- .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearchVideo.createSequentialGroup()
- .addContainerGap(269, Short.MAX_VALUE)
- .addComponent(btnSearchVideoAdd)
- .addGap(18, 18, 18)
- .addComponent(btnSearchVideoDel)
- .addContainerGap())
- );
- gl_pnlSearchVideo.setVerticalGroup(
- gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlSearchVideo.createSequentialGroup()
- .addComponent(srcSearchVideo, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlSearchVideo.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(btnSearchVideoDel)
- .addComponent(btnSearchVideoAdd))
- .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- );
-
pnlSearchComment.setBorder(BorderFactory.createTitledBorder("コメント検索対象フォルダ"));
- lstSearchComment.setModel(mdlSearchComment);
- srcSearchComment.setViewportView(lstSearchComment);
-
- btnSearchCommentAdd.setText("追加...");
-
- btnSearchCommentDel.setText("削除");
-
- GroupLayout gl_pnlSearchComment = new GroupLayout(pnlSearchComment);
- pnlSearchComment.setLayout(gl_pnlSearchComment);
- gl_pnlSearchComment.setHorizontalGroup(
- gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addComponent(srcSearchComment, GroupLayout.DEFAULT_SIZE, 419, Short.MAX_VALUE)
- .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearchComment.createSequentialGroup()
- .addContainerGap(269, Short.MAX_VALUE)
- .addComponent(btnSearchCommentAdd)
- .addGap(18, 18, 18)
- .addComponent(btnSearchCommentDel)
- .addContainerGap())
- );
- gl_pnlSearchComment.setVerticalGroup(
- gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlSearchComment.createSequentialGroup()
- .addComponent(srcSearchComment, GroupLayout.PREFERRED_SIZE, 100, GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_pnlSearchComment.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(btnSearchCommentDel)
- .addComponent(btnSearchCommentAdd))
- .addContainerGap(16, Short.MAX_VALUE))
- );
-
- pnlSearchCache.setBorder(BorderFactory.createEtchedBorder());
-
- lblSearchCache.setText("キャッシュ更新(秒)");
-
- GroupLayout gl_pnlSearchCache = new GroupLayout(pnlSearchCache);
- pnlSearchCache.setLayout(gl_pnlSearchCache);
- gl_pnlSearchCache.setHorizontalGroup(
- gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlSearchCache.createSequentialGroup()
- .addContainerGap()
- .addComponent(lblSearchCache)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(fldSearchCache, GroupLayout.PREFERRED_SIZE, 55, GroupLayout.PREFERRED_SIZE)
- .addContainerGap(269, Short.MAX_VALUE))
- );
- gl_pnlSearchCache.setVerticalGroup(
- gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlSearchCache.createSequentialGroup()
- .addContainerGap()
- .addGroup(gl_pnlSearchCache.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(lblSearchCache)
- .addComponent(fldSearchCache, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
- .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- );
+ final JLabel lblSearchNeedReboot = new JLabel(NEED_REBOOT);
GroupLayout gl_pnlSearch = new GroupLayout(pnlSearch);
pnlSearch.setLayout(gl_pnlSearch);
.addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearch.createSequentialGroup()
.addContainerGap()
.addGroup(gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.TRAILING)
- .addComponent(pnlSearchCache, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(lblSearchNeedReboot, Alignment.CENTER)
.addComponent(pnlSearchComment, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pnlSearchVideo, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(gl_pnlSearch.createSequentialGroup()
.addContainerGap()
- .addComponent(pnlSearchVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(pnlSearchComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addComponent(lblSearchNeedReboot)
+ .addComponent(pnlSearchVideo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(pnlSearchCache, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addContainerGap(27, Short.MAX_VALUE))
+ .addComponent(pnlSearchComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addContainerGap()
+ )
);
tabbedPane.addTab("検索", pnlSearch);
+ final JButton btnOk = new JButton("保存");
+ btnOk.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ saveConfig();
+ dispose();
+ }
+ });
+ final JButton btnCancel = new JButton("取消");
+ btnCancel.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ dispose();
+ }
+ });
final JPanel pnlButton = new JPanel();
- final JButton btnOk = new JButton("OK");
- final JButton btnCancel = new JButton("Cancel");
- pnlButton.add(btnOk);
- pnlButton.add(btnCancel);
+
+ final GroupLayout glButton = new GroupLayout(pnlButton);
+ pnlButton.setLayout(glButton);
+ glButton.setHorizontalGroup(glButton.createSequentialGroup()
+ .addPreferredGap(ComponentPlacement.UNRELATED, PREFERRED_SIZE, Short.MAX_VALUE)
+ .addComponent(btnOk)
+ .addPreferredGap(ComponentPlacement.UNRELATED)
+ .addComponent(btnCancel)
+ .addContainerGap()
+ );
+ glButton.setVerticalGroup(glButton.createSequentialGroup()
+ .addGroup(glButton.createParallelGroup(Alignment.BASELINE)
+ .addComponent(btnOk)
+ .addComponent(btnCancel)
+ )
+ );
GroupLayout layout = new GroupLayout(getContentPane());
+ layout.setAutoCreateContainerGaps(true);
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
);
layout.setVerticalGroup(
layout.createSequentialGroup()
- .addComponent(tabbedPane,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addComponent(tabbedPane,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)
.addComponent(pnlButton)
);
- pack();
- setResizable(false);
- loadConfig();
- }
+ final JLabel lblSystemThreadDownload = new JLabel("ダウンロードスレッド数");
+ final JLabel lblSystemWaitDownload = new JLabel("ダウンロード開始最小間隔(秒)");
+ final JLabel lblSystemThreadConvert = new JLabel("変換スレッド数");
+ final JLabel lblSystemTempDir = new JLabel("作業フォルダ");
+ final JButton btnSystemTempDir = new JButton("...");
+ btnSystemTempDir.addActionListener(
+ new FileChooseActionListener(ConfigDialog.this, JFileChooser.DIRECTORIES_ONLY, fldSystemTempDir));
+
+ mdlSystemThreadDownload.setMinimum(1);
+ final JSpinner fldSystemThreadDownload = new JSpinner(mdlSystemThreadDownload);
+ mdlSystemWaitDownload.setMinimum(0);
+ final JSpinner fldSystemWaitDownload = new JSpinner(mdlSystemWaitDownload);
+ mdlSystemThreadConvert.setMinimum(1);
+ final JSpinner fldSystemThreadConvert = new JSpinner(mdlSystemThreadConvert);
+
+ final JPanel pnlSystemGeneral = new JPanel();
+ pnlSystemGeneral.setBorder(BorderFactory.createTitledBorder("システム"));
+ final GroupLayout glSystemGenegal = new GroupLayout(pnlSystemGeneral);
+ glSystemGenegal.setAutoCreateGaps(true);
+ glSystemGenegal.setAutoCreateContainerGaps(true);
+ pnlSystemGeneral.setLayout(glSystemGenegal);
+
+ glSystemGenegal.setHorizontalGroup(glSystemGenegal.createParallelGroup()
+ .addGroup(glSystemGenegal.createSequentialGroup()
+ .addGroup(glSystemGenegal.createParallelGroup()
+ .addComponent(lblSystemThreadDownload)
+ .addComponent(lblSystemWaitDownload)
+ .addComponent(lblSystemThreadConvert))
+ .addGroup(glSystemGenegal.createParallelGroup()
+ .addComponent(fldSystemThreadDownload, PREFERRED_SIZE, 50, PREFERRED_SIZE)
+ .addComponent(fldSystemWaitDownload, PREFERRED_SIZE, 55, PREFERRED_SIZE)
+ .addComponent(fldSystemThreadConvert, PREFERRED_SIZE, 50, PREFERRED_SIZE)
+ )
+ )
+ .addGroup(glSystemGenegal.createSequentialGroup()
+ .addComponent(lblSystemTempDir)
+ .addComponent(fldSystemTempDir, DEFAULT_SIZE, 400, Short.MAX_VALUE)
+ .addComponent(btnSystemTempDir)
+ )
+ );
+
+ glSystemGenegal.setVerticalGroup(glSystemGenegal.createSequentialGroup()
+ .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
+ .addComponent(lblSystemThreadDownload)
+ .addComponent(fldSystemThreadDownload, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
+ .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
+ .addComponent(lblSystemWaitDownload)
+ .addComponent(fldSystemWaitDownload, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
+ .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
+ .addComponent(lblSystemThreadConvert)
+ .addComponent(fldSystemThreadConvert, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
+ .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
+ .addComponent(lblSystemTempDir)
+ .addComponent(fldSystemTempDir, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE)
+ .addComponent(btnSystemTempDir)
+ )
+ );
- /**
- * @param args the command line arguments
- */
- public static void main(String args[]) {
- /* Set the Nimbus look and feel */
- //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
- /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
- * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
- */
- try {
- for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
- if ("Nimbus".equals(info.getName())) {
- UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- } catch (ClassNotFoundException ex) {
- java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (InstantiationException ex) {
- java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (IllegalAccessException ex) {
- java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (UnsupportedLookAndFeelException ex) {
- java.util.logging.Logger.getLogger(ConfigDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- }
- //</editor-fold>
+ final JLabel lblSystemNeedReboot = new JLabel("設定を有効にするにはいんきゅばすの再起動が必要です");
- /* Create and display the form */
- java.awt.EventQueue.invokeLater(new Runnable() {
+ final JPanel pnlSystem = new JPanel();
+ pnlSystem.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
+ final GroupLayout glSystem = new GroupLayout(pnlSystem);
+ glSystem.setAutoCreateGaps(true);
+ glSystem.setAutoCreateContainerGaps(true);
+ pnlSystem.setLayout(glSystem);
- @Override
- public void run() {
- new ConfigDialog().setVisible(true);
- }
- });
+ glSystem.setHorizontalGroup(glSystem.createParallelGroup()
+ .addComponent(lblSystemNeedReboot, Alignment.CENTER)
+ .addComponent(pnlSystemGeneral));
+
+ glSystem.setVerticalGroup(glSystem.createSequentialGroup()
+ .addComponent(lblSystemNeedReboot)
+ .addComponent(pnlSystemGeneral));
+
+ tabbedPane.add("システム", pnlSystem);
+
+ pack();
+ setMinimumSize(getSize());
+ loadConfig();
}
- // Variables declaration - do not modify//GEN-BEGIN:variables
// ネットワーク
// ネットワーク - アカウント
+ final JRadioButton btnAccount = new JRadioButton("次の情報を使用してログインする");
private final JTextField fldMail;
- private final JTextField fldPassword;
+ private final JPasswordField fldPassword = new JPasswordField();
+ // ネットワーク - cookie
+ final JRadioButton btnLoginCookie = new JRadioButton("ブラウザのログイン情報を使用してアクセスする");
+ final JRadioButton btnCookieIe = new JRadioButton("IE(7以降) (Windows)");
+ final JRadioButton btnCookieFirefox = new JRadioButton("Firefox(4以降) (Windows)");
+ final JRadioButton btnCookieChrome = new JRadioButton("Google Chrome (Windows)");
+ final JRadioButton btnCookieChromium = new JRadioButton("Chrome派生ブラウザ (Windows)");
+ final JRadioButton btnCookieOpera = new JRadioButton("Opera (Windows)");
+ final JRadioButton btnCookieOther = new JRadioButton("上記以外 - cookie保存ディレクトリを次に入力");
+ final JTextField fldCookie = new JTextField();
// ネットワーク - プロキシ
private final JCheckBox cbProxyUse;
- private final JTextField fldProxyHost;
- private final JTextField fldProxyPort;
+ private final JTextField fldProxyHost = new JTextField();
+ private final NumberFormattedTextField fldProxyPort = new NumberFormattedTextField();
// ファイル
// ファイル - 動画
- private final JTextField fldVideoDir;
- private final JButton btnVideoDir;
- private final JTextField fldVideoFileNamePattern;
- private final JCheckBox cbVideoLocal;
+ private final DownloadLocationPanel pnlFileVideo = new DownloadLocationPanel();
// ファイル - コメント
- private final JTextField fldCommentDir;
- private final JButton btnCommentDir;
- private final JTextField fldCommentFileNamePattern;
- private final JCheckBox cbCommentLocal;
+ private final DownloadLocationPanel pnlFileComment = new DownloadLocationPanel();
// ファイル - 変換動画
private final JTextField fldOutputDir;
private final JTextField fldOutputFileNamePattern;
- private final JButton btnOutputDir;
+ private final JButton btnOutputDir = new JButton("...");
private final JCheckBox cbOutputEnable;
private final JCheckBox cbOutputCommentOverlay;
private final JCheckBox cbOutputDisplayProgress;
+ // ファイル - 禁則文字
+ private final JTextField fldReplaceFrom = new JTextField();
+ private final JTextField fldReplaceTo = new JTextField();
// コメント
// コメント
- private final JCheckBox cbCommentSizeAuto;
- private final JTextField fldCommentSizeManual;
- private final JCheckBox cbCommentMinSizeAuto;
- private final JTextField fldCommentMinSizeManual;
- private final JCheckBox cbCommentDisplaySizeDefault;
- private final JTextField fldCommentDisplaySizeManual;
+ private final JCheckBox cbCommentSizeAuto = new JCheckBox("自動調整");
+ private final NumberFormattedTextField fldCommentSizeManual = new NumberFormattedTextField();
+ private final JCheckBox cbCommentMinDisable = new JCheckBox("少コメ");
+ private final JCheckBox cbCommentMinSizeAuto = new JCheckBox("自動調整");
+ private final NumberFormattedTextField fldCommentMinSizeManual = new NumberFormattedTextField();
+ private final JCheckBox cbCommentDisplaySizeDefault = new JCheckBox("標準(30)");
+ private final NumberFormattedTextField fldCommentDisplaySizeManual = new NumberFormattedTextField();
// コメント - 高度な設定
private final JTextField fldFontPath;
- private final JButton btnFontPath;
private final JTextField fldFontIndex;
- private final JTextField fldFontShadow;
+ private final JComboBox<String> cmbFontShadow = new JComboBox<>();
private final JCheckBox cbFontSizeArrangeDisable;
private final JCheckBox cbCommentOpaque;
// ffmpeg
// ffmpeg - ファイルパス
- private final JTextField fldFfmpegPath;
- private final JButton btnFfmpegPath;
- private final JTextField fldFfmpegDllPath;
- private final JButton btnFfmpegDllPath;
+ private final JTextField fldFfmpegPath = new JTextField();
+ private final JTextField fldFfmpegDllPath = new JTextField();
+ private final JTextField fldMediaInfoPath = new JTextField();
// ffmpeg - ffmpegパラメータ
- private final JRadioButton rbFfmpegOptionFile;
- private final JRadioButton rbFfmpegOptionDirectInput;
- private final JComboBox cmbFfmpegOptionFile;
- private final JTextField fldFfmpegOptionExtension;
- private final JTextField fldFfmpegOptionMain;
- private final JTextField fldFfmpegOptionIn;
- private final JTextField fldFfmpegOptionOut;
- private final JTextField fldFfmpegOptionAv;
- private final JCheckBox cbFfmpegOptionResize;
- private final JTextField fldFfmpegOptionResizeWidth;
- private final JTextField fldFfmpegOptionResizeHeight;
- private final JCheckBox cbFfmpegOptionKeepAspect;
+ private final FfmpegParamPanel pnlFfmpegParam = new FfmpegParamPanel();
+ // ffmpeg - その他
+ private final JCheckBox cbDisplayConverting = new JCheckBox("変換中動画表示");
+ private final JCheckBox cbDllDisabled = new JCheckBox("拡張DLL無効化(デバッグ用)");
// NG設定
// NG設定 - NGワード
- private final JList<String> lstNgWord;
- private final DefaultListModel<String> mdlNgWord = new DefaultListModel<>();
- private final JTextField fldNgWord;
- private final JButton btnNgWordAdd;
- private final JButton btnNgWordDel;
+ private final NgRegisterPanel pnlNgWord = new NgRegisterPanel();
// NG設定 - NGID
- private final JList<String> lstNgId;
- private final DefaultListModel<String> mdlNgId = new DefaultListModel<>();
- private final JTextField fldNgId;
- private final JButton btnNgIdAdd;
- private final JButton btnNgIdDel;
+ private final NgRegisterPanel pnlNgId = new NgRegisterPanel();
// 検索
// 検索 - 動画検索対象フォルダ
- private final JList<String> lstSearchVideo;
- private final DefaultListModel<String> mdlSearchVideo = new DefaultListModel<>();
- private final JButton btnSearchVideoAdd;
- private final JButton btnSearchVideoDel;
+ private final DirectoryRegisterPanel pnlSearchVideo = new DirectoryRegisterPanel();
// 検索 - コメント検索対象フォルダ
- private final JList<String> lstSearchComment;
- private final DefaultListModel<String> mdlSearchComment = new DefaultListModel<>();
- private final JButton btnSearchCommentAdd;
- private final JButton btnSearchCommentDel;
- // 検索 - キャッシュ更新(秒)
- private final JTextField fldSearchCache;
+ private final DirectoryRegisterPanel pnlSearchComment = new DirectoryRegisterPanel();
+ // システム
+ private final SpinnerNumberModel mdlSystemThreadDownload = new SpinnerNumberModel();
+ private final SpinnerNumberModel mdlSystemWaitDownload = new SpinnerNumberModel();
+ private final SpinnerNumberModel mdlSystemThreadConvert = new SpinnerNumberModel();
+ private final JTextField fldSystemTempDir = new JTextField();
// End of variables declaration//GEN-END:variables
/*
* ネットワーク - アカウント
*/
+ btnAccount.setSelected(p.getNeedsLogin());
fldMail.setText(p.getId());
fldPassword.setText(p.getPassword());
/*
+ * ネットワーク - cookie
+ */
+ final CookieBrowser cookieBrowser = p.getCookieBrowser();
+ final JRadioButton enabledBrowser;
+ switch(cookieBrowser){
+ case MSIE:
+ enabledBrowser = btnCookieIe;
+ break;
+ case FIREFOX:
+ enabledBrowser = btnCookieFirefox;
+ break;
+ case CHROME:
+ enabledBrowser = btnCookieChrome;
+ break;
+ case CHROMIUM:
+ enabledBrowser = btnCookieChromium;
+ break;
+ case OPERA:
+ enabledBrowser = btnCookieOpera;
+ break;
+ case OTHER:
+ enabledBrowser = btnCookieOther;
+ break;
+ default:
+ throw new UnsupportedOperationException();
+ }
+ enabledBrowser.setSelected(true);
+ fldCookie.setText(p.getCookieDir());
+
+ /*
* ネットワーク - プロキシ
*/
cbProxyUse.setSelected(p.getProxyUse());
/*
* ファイル - 動画
*/
- fldVideoDir.setText(p.getVideoDir());
- fldVideoFileNamePattern.setText(p.getVideoFileNamePattern());
- cbVideoLocal.setSelected(p.getVideoUseLocal());
+ pnlFileVideo.fldDir.setText(p.getVideoDir());
+ pnlFileVideo.fldFileNamePattern.setText(p.getVideoFileNamePattern());
+ pnlFileVideo.cbLocal.setSelected(p.getVideoUseLocal());
/*
* ファイル - コメント
*/
- fldCommentDir.setText(p.getCommentDir());
- fldCommentFileNamePattern.setText(p.getCommentFileNamePattern());
- cbCommentLocal.setSelected(p.getCommentUseLocal());
+ pnlFileComment.fldDir.setText(p.getCommentDir());
+ pnlFileComment.fldFileNamePattern.setText(p.getCommentFileNamePattern());
+ pnlFileComment.cbLocal.setSelected(p.getCommentUseLocal());
/*
* ファイル - 変換動画
cbOutputCommentOverlay.setSelected(p.getOutputCommentOverlay());
cbOutputDisplayProgress.setSelected(p.getOutputDisplayProgress());
+ /*
+ * ファイル - 禁則文字
+ */
+ fldReplaceFrom.setText(p.getReplaceFrom());
+ fldReplaceTo.setText(p.getReplaceTo());
+
/**
* コメント
*/
cbCommentSizeAuto.setSelected(p.getCommentSizeAutosize());
fldCommentSizeManual.setText(p.getCommentSizeManual());
+ cbCommentMinDisable.setSelected(p.getCommentMinDisabled());
cbCommentMinSizeAuto.setSelected(p.getCommentMinSizeAutosize());
fldCommentSizeManual.setText(p.getCommentMinSizeManual());
cbCommentDisplaySizeDefault.setSelected(p.getCommentDisplaySizeDefault());
*/
fldFontPath.setText(p.getFontPath());
fldFontIndex.setText(p.getFontIndex());
- // TODO 影の種類はコンボボックス
+ cmbFontShadow.setSelectedIndex(p.getFontShadow());
cbFontSizeArrangeDisable.setSelected(p.getFontSizeArrangeDisable());
cbCommentOpaque.setSelected(p.getCommentOpaque());
*/
fldFfmpegPath.setText(p.getFfmpegPath());
fldFfmpegDllPath.setText(p.getFfmpegDllPath());
+ fldMediaInfoPath.setText(p.getMediaInfoPath());
/*
* ffmpeg - ffmpegパラメータ
*/
- rbFfmpegOptionFile.setSelected(!p.getFfmpegParamInputDirect());
- rbFfmpegOptionDirectInput.setSelected(p.getFfmpegParamInputDirect());
- // TODO cmbFfmpegOptionFile
- fldFfmpegOptionExtension.setText(p.getFfmpegExtension());
- fldFfmpegOptionMain.setText(p.getFfmpegMainOption());
- fldFfmpegOptionIn.setText(p.getFfmpegInOption());
- fldFfmpegOptionOut.setText(p.getFfmpegOutOption());
- fldFfmpegOptionAv.setText(p.getFfmpegAvOption());
- cbFfmpegOptionResize.setSelected(p.getFfmpegResizeEnable());
- fldFfmpegOptionResizeWidth.setText(p.getFfmpegResizeWidth());
- fldFfmpegOptionResizeHeight.setText(p.getFfmpegResizeHeight());
- cbFfmpegOptionKeepAspect.setSelected(p.getFfmpegKeepAspect());
+ pnlFfmpegParam.init(p);
+
+ /*
+ * ffmpeg - その他
+ */
+ cbDisplayConverting.setSelected(p.getFfmpegDisplayConverting());
+ cbDllDisabled.setSelected(p.getFfmpegDllDisabled());
/*
* NG 設定
*/
final List<String> ngWords = p.getNgWords();
- for (String s : ngWords) {
- mdlNgWord.addElement(s);
- }
+ pnlNgWord.init(ngWords);
final List<String> ngIds = p.getNgIds();
- for (String s : ngIds) {
- mdlNgId.addElement(s);
- }
+ pnlNgId.init(ngIds);
+
+ /*
+ * 検索
+ */
+ pnlSearchVideo.init(p.getSearchVideoDirs());
+ pnlSearchComment.init(p.getSearchCommentDirs());
+
+ /*
+ * システム
+ */
+ mdlSystemThreadDownload.setValue(p.getSystemDownloadThread());
+ mdlSystemWaitDownload.setValue(p.getSystemDownloadWait());
+ mdlSystemThreadConvert.setValue(p.getSystemConvertThread());
+ fldSystemTempDir.setText(p.getSystemTempDir());
}
+
private void saveConfig() {
final Config p = Config.INSTANCE;
*/
p.setId(fldMail.getText());
- p.setPassword(fldPassword.getText());
+ p.setPassword(String.valueOf(fldPassword.getPassword()));
/*
* ネットワーク - プロキシ
/*
* ファイル - 動画
*/
- p.setVideoDir(fldVideoDir.getText());
- p.setVideoFileNamePattern(fldVideoFileNamePattern.getText());
- p.setVideoUseLocal(cbVideoLocal.isSelected());
+ p.setVideoDir(pnlFileVideo.fldDir.getText());
+ p.setVideoFileNamePattern(pnlFileVideo.fldFileNamePattern.getText());
+ p.setVideoUseLocal(pnlFileVideo.cbLocal.isSelected());
/*
* ファイル - コメント
*/
- p.setCommentDir(fldCommentDir.getText());
- p.setCommentFileNamePattern(fldCommentFileNamePattern.getText());
- p.setCommentUseLocal(cbCommentLocal.isSelected());
+ p.setCommentDir(pnlFileComment.fldDir.getText());
+ p.setCommentFileNamePattern(pnlFileComment.fldFileNamePattern.getText());
+ p.setCommentUseLocal(pnlFileComment.cbLocal.isSelected());
/*
* ファイル - 変換動画
p.setOutputCommentOverlay(cbOutputCommentOverlay.isSelected());
p.setOutputDisplayProgress(cbOutputDisplayProgress.isSelected());
- /**
+ /*
+ * ファイル - 禁則文字
+ */
+ p.setReplaceFrom(fldReplaceFrom.getText());
+ p.setReplaceTo(fldReplaceTo.getText());
+
+ /*
* コメント
*/
p.setCommentSizeAutosize(cbCommentSizeAuto.isSelected());
p.setCommentSizeManual(fldCommentSizeManual.getText());
+ p.setCommentMinDisabled(cbCommentMinDisable.isSelected());
p.setCommentMinSizeAutosize(cbCommentMinSizeAuto.isSelected());
p.setCommentMinSizeManual(fldCommentSizeManual.getText());
p.setCommentDisplaySizeDefault(cbCommentDisplaySizeDefault.isSelected());
*/
p.setFontPath(fldFontPath.getText());
p.setFontIndex(fldFontIndex.getText());
- // TODO 影の種類はコンボボックス
+ p.setFontShadow(cmbFontShadow.getSelectedIndex());
p.setFontSizeArrangeDisable(cbFontSizeArrangeDisable.isSelected());
p.setCommentOpaque(cbCommentOpaque.isSelected());
*/
p.setFfmpegPath(fldFfmpegPath.getText());
p.setFfmpegDllPath(fldFfmpegDllPath.getText());
+ p.setMediaInfoPath(fldMediaInfoPath.getText());
/*
* ffmpeg - ffmpegパラメータ
*/
- p.setFfmpegParamInputDirect(rbFfmpegOptionDirectInput.isSelected());
- // TODO cmbFfmpegOptionFile
- p.setFfmpegExtension(fldFfmpegOptionExtension.getText());
- p.setFfmpegMainOption(fldFfmpegOptionMain.getText());
- p.setFfmpegInOption(fldFfmpegOptionIn.getText());
- p.setFfmpegOutOption(fldFfmpegOptionOut.getText());
- p.setFfmpegAvOption(fldFfmpegOptionAv.getText());
- p.setFfmpegResizeEnable(cbFfmpegOptionResize.isSelected());
- p.setFfmpegResizeWidth(fldFfmpegOptionResizeWidth.getText());
- p.setFfmpegResizeHeight(fldFfmpegOptionResizeHeight.getText());
- p.setFfmpegKeepAspect(cbFfmpegOptionKeepAspect.isSelected());
+ final File fileFfmpegOption = pnlFfmpegParam.mdlFfmpegOption.getSelectedFile();
+ p.setFfmpegOptionFile(fileFfmpegOption != null ? fileFfmpegOption.getPath() : null);
+ p.setFfmpegExtension(pnlFfmpegParam.fldFfmpegOptionExtension.getText());
+ p.setFfmpegMainOption(pnlFfmpegParam.fldFfmpegOptionMain.getText());
+ p.setFfmpegInOption(pnlFfmpegParam.fldFfmpegOptionIn.getText());
+ p.setFfmpegOutOption(pnlFfmpegParam.fldFfmpegOptionOut.getText());
+ p.setFfmpegAvOption(pnlFfmpegParam.fldFfmpegOptionAv.getText());
+ p.setFfmpegResizeEnable(pnlFfmpegParam.cbFfmpegOptionResize.isSelected());
+ p.setFfmpegResizeWidth(pnlFfmpegParam.fldFfmpegOptionResizeWidth.getText());
+ p.setFfmpegResizeHeight(pnlFfmpegParam.fldFfmpegOptionResizeHeight.getText());
+ p.setFfmpegKeepAspect(pnlFfmpegParam.cbFfmpegOptionKeepAspect.isSelected());
+
+ /*
+ * ffmpeg - その他
+ */
+ p.setFfmpegDisplayConverting(cbDisplayConverting.isSelected());
+ p.setFfmpegDllDisabled(cbDllDisabled.isSelected());
/*
* NG 設定
*/
- p.setNgWords(Arrays.asList((String[]) mdlNgWord.toArray()));
- p.setNgIds(Arrays.asList((String[])mdlNgId.toArray()));
+ p.setNgWords(pnlNgWord.getAllElements());
+ p.setNgIds(pnlNgId.getAllElements());
+
+ /*
+ * 検索
+ */
+ p.setSearchVideoDirs(pnlSearchVideo.getAllElements());
+ p.setSearchCommentDirs(pnlSearchComment.getAllElements());
+
+ /*
+ * システム
+ */
+ p.setSystemDownloadThread(mdlSystemThreadDownload.getNumber().intValue());
+ p.setSystemDownloadWait(mdlSystemWaitDownload.getNumber().intValue());
+ p.setSystemConvertThread(mdlSystemThreadConvert.getNumber().intValue());
+ p.setSystemTempDir(fldSystemTempDir.getText());
+
+ try {
+ p.save();
+ } catch (ConfigurationException ex) {
+ logger.error("コンフィグファイル保存に失敗", ex);
+ }
+ }
+}
+
+class DownloadLocationPanel extends JPanel {
+
+ private static final long serialVersionUID = 1L;
+ final JTextField fldDir = new JTextField();
+ final JTextField fldFileNamePattern = new JTextField();
+ final JCheckBox cbLocal = new JCheckBox("local");
+
+ DownloadLocationPanel(){
+ super();
+
+ final JLabel lblVideoDir = new JLabel("保存フォルダ");
+ final JLabel lblVideoFileNamepattern = new JLabel("ファイル名規則");
+
+ final JButton btnDir = new JButton("...");
+ btnDir.addActionListener(
+ new FileChooseActionListener(DownloadLocationPanel.this, JFileChooser.DIRECTORIES_ONLY, fldDir));
+
+ final GroupLayout gl = new GroupLayout(this);
+ setLayout(gl);
+ gl.setHorizontalGroup(
+ gl.createParallelGroup(GroupLayout.Alignment.LEADING)
+ .addGroup(GroupLayout.Alignment.TRAILING, gl.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(gl.createParallelGroup(GroupLayout.Alignment.LEADING)
+ .addComponent(lblVideoFileNamepattern)
+ .addComponent(lblVideoDir))
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addGroup(gl.createParallelGroup(GroupLayout.Alignment.LEADING)
+ .addGroup(gl.createSequentialGroup()
+ .addComponent(fldDir, GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addComponent(btnDir))
+ .addGroup(GroupLayout.Alignment.TRAILING, gl.createSequentialGroup()
+ .addComponent(fldFileNamePattern, GroupLayout.PREFERRED_SIZE, 165, GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(ComponentPlacement.RELATED, 94, Short.MAX_VALUE)
+ .addComponent(cbLocal)))
+ .addContainerGap())
+ );
+ gl.setVerticalGroup(
+ gl.createParallelGroup(GroupLayout.Alignment.LEADING)
+ .addGroup(gl.createSequentialGroup()
+ .addGroup(gl.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(lblVideoDir)
+ .addComponent(fldDir, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addComponent(btnDir))
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addGroup(gl.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(lblVideoFileNamepattern)
+ .addComponent(fldFileNamePattern, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addComponent(cbLocal))
+ .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
}
}