OSDN Git Service

置換文字設定を削除
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / gui / ConfigDialog.java
index 361ed5d..87f8d2b 100644 (file)
@@ -12,31 +12,33 @@ import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.File;
 import java.util.List;
 import java.awt.event.ActionListener;
 import java.io.File;
 import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import javax.swing.BorderFactory;
 import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
 import javax.swing.ComboBoxModel;
 import javax.swing.DefaultComboBoxModel;
 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.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.JFrame;
 import javax.swing.JLabel;
-import javax.swing.JList;
 import javax.swing.JPanel;
 import javax.swing.JPanel;
-import javax.swing.JScrollPane;
+import javax.swing.JPasswordField;
+import javax.swing.JRadioButton;
+import javax.swing.JSpinner;
 import javax.swing.JTabbedPane;
 import javax.swing.JTextField;
 import javax.swing.LayoutStyle.ComponentPlacement;
 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 org.apache.commons.configuration.ConfigurationException;
 import javax.swing.WindowConstants;
 import org.apache.commons.configuration.ConfigurationException;
-import yukihane.inqubus.Config;
+import yukihane.inqubus.config.Config;
+import yukihane.inqubus.config.Config.CookieBrowser;
 
 /**
  *
 
 /**
  *
@@ -44,7 +46,8 @@ import yukihane.inqubus.Config;
  */
 public class ConfigDialog extends JDialog {
     private static final long serialVersionUID = 1L;
  */
 public class ConfigDialog extends JDialog {
     private static final long serialVersionUID = 1L;
-    private static final Logger logger = Logger.getLogger(ConfigDialog.class.getName());
+    private static final Logger logger = LoggerFactory.getLogger(ConfigDialog.class);
+    private static final String NEED_REBOOT = "設定を有効にするにはいんきゅばすの再起動が必要です";
 
     /** Creates new form Properties */
     public ConfigDialog() {
 
     /** Creates new form Properties */
     public ConfigDialog() {
@@ -57,81 +60,44 @@ public class ConfigDialog extends JDialog {
         final JTabbedPane tabbedPane = new JTabbedPane();
         final JPanel pnlNetwork = new JPanel();
         final JPanel pnlAccount = new JPanel();
         final JTabbedPane tabbedPane = new JTabbedPane();
         final JPanel pnlNetwork = new JPanel();
         final JPanel pnlAccount = new JPanel();
-        final JLabel lblMail = new JLabel();
         fldMail = new JTextField();
         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();
         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 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();
         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();
         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();
         final JLabel lblCommentSizeManual = new JLabel();
-        fldCommentSizeManual = new JTextField();
         final JLabel lblCommentMinSize = new JLabel();
         final JLabel lblCommentMinSize = new JLabel();
-        cbCommentMinSizeAuto = new JCheckBox();
-        fldCommentMinSizeManual = new JTextField();
         final JLabel lblCommentMinSizeManual = new JLabel();
         final JLabel lblCommentDisplayMax = new JLabel();
         final JLabel lblCommentMinSizeManual = new JLabel();
         final JLabel lblCommentDisplayMax = new JLabel();
-        cbCommentDisplaySizeDefault = new JCheckBox();
         final JLabel lblCommentDisplayMaxManual = new JLabel();
         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();
         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();
         final JPanel pnlFfmpeg = new JPanel();
         final JLabel lblFontIndex = new JLabel();
         final JLabel lblFontShadow = new JLabel();
         fldFontIndex = 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 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 pnlSearch = new JPanel();
         final JPanel pnlNgSetting = new JPanel();
         final JPanel pnlSearch = new JPanel();
-        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);
 
 
         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
 
@@ -139,29 +105,34 @@ public class ConfigDialog extends JDialog {
 
         pnlAccount.setBorder(BorderFactory.createTitledBorder("アカウント"));
 
 
         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);
 
         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()
             .addGroup(gl_pnlAccount.createSequentialGroup()
                 .addContainerGap()
+                .addGap(10)
                 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.LEADING)
                     .addComponent(lblMail)
                 .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)
                 .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()
         );
         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))
                 .addGroup(gl_pnlAccount.createParallelGroup(GroupLayout.Alignment.BASELINE)
                     .addComponent(lblMail)
                     .addComponent(fldMail, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
@@ -172,6 +143,63 @@ public class ConfigDialog extends JDialog {
                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
         );
 
                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
         );
 
+
+        final JButton btnCookie = new JButton("...");
+        btnCookie.addActionListener(new FileChooseActionListener(this, JFileChooser.FILES_AND_DIRECTORIES, 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("プロキシを使用する");
         pnlProxy.setBorder(BorderFactory.createTitledBorder("プロキシ"));
 
         cbProxyUse.setText("プロキシを使用する");
@@ -211,9 +239,10 @@ public class ConfigDialog extends JDialog {
                 .addGroup(gl_pnlProxy.createParallelGroup(GroupLayout.Alignment.BASELINE)
                     .addComponent(lblProxyPort)
                     .addComponent(fldProxyPort, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                 .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(
         GroupLayout gl_pnlNetwork = new GroupLayout(pnlNetwork);
         pnlNetwork.setLayout(gl_pnlNetwork);
         gl_pnlNetwork.setHorizontalGroup(
@@ -221,8 +250,10 @@ public class ConfigDialog extends JDialog {
             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlNetwork.createSequentialGroup()
                 .addContainerGap()
                 .addGroup(gl_pnlNetwork.createParallelGroup(GroupLayout.Alignment.TRAILING)
             .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(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())
         );
         gl_pnlNetwork.setVerticalGroup(
@@ -231,111 +262,27 @@ public class ConfigDialog extends JDialog {
                 .addContainerGap()
                 .addComponent(pnlAccount, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                 .addPreferredGap(ComponentPlacement.RELATED)
                 .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)
                 .addComponent(pnlProxy, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                .addContainerGap(178, Short.MAX_VALUE))
+                .addContainerGap()
+            )
         );
 
         tabbedPane.addTab("ネットワーク", pnlNetwork);
 
         pnlFileVideo.setBorder(BorderFactory.createTitledBorder("動画"));
 
         );
 
         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("コメント"));
 
         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("ファイル名規則");
 
         pnlFileOutput.setBorder(BorderFactory.createTitledBorder("変換動画"));
 
         lblOutputDir.setText("保存フォルダ");
 
         lblOutputFileNamePattern.setText("ファイル名規則");
 
-        btnOutputDir.setText("...");
+        btnOutputDir.addActionListener(
+                new FileChooseActionListener(ConfigDialog.this, JFileChooser.DIRECTORIES_ONLY, fldOutputDir));
 
         cbOutputEnable.setText("変換");
 
 
         cbOutputEnable.setText("変換");
 
@@ -387,38 +334,6 @@ public class ConfigDialog extends JDialog {
                 .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
         );
 
                 .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(
         GroupLayout gl_pnlFile = new GroupLayout(pnlFile);
         pnlFile.setLayout(gl_pnlFile);
         gl_pnlFile.setHorizontalGroup(
@@ -429,7 +344,6 @@ public class ConfigDialog extends JDialog {
                     .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(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(pnlFileProhibit, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                 )
                 .addContainerGap())
         );
                 )
                 .addContainerGap())
         );
@@ -443,7 +357,6 @@ public class ConfigDialog extends JDialog {
                 .addPreferredGap(ComponentPlacement.RELATED)
                 .addComponent(pnlFileOutput, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                 .addPreferredGap(ComponentPlacement.RELATED)
                 .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())
         );
 
                 .addContainerGap())
         );
 
@@ -453,20 +366,14 @@ public class ConfigDialog extends JDialog {
 
         lblCommentSize.setText("再生時間に応じたコメントの取得数");
 
 
         lblCommentSize.setText("再生時間に応じたコメントの取得数");
 
-        cbCommentSizeAuto.setText("自動調整");
-
         lblCommentSizeManual.setText("手動取得");
 
         lblCommentMinSize.setText("1分当たりのコメント取得数");
 
         lblCommentSizeManual.setText("手動取得");
 
         lblCommentMinSize.setText("1分当たりのコメント取得数");
 
-        cbCommentMinSizeAuto.setText("自動調整");
-
         lblCommentMinSizeManual.setText("手動取得");
 
         lblCommentDisplayMax.setText("1画面に表示する最大コメント数");
 
         lblCommentMinSizeManual.setText("手動取得");
 
         lblCommentDisplayMax.setText("1画面に表示する最大コメント数");
 
-        cbCommentDisplaySizeDefault.setText("標準(30)");
-
         lblCommentDisplayMaxManual.setText("手動設定");
 
         GroupLayout gl_pnlCommentStandard = new GroupLayout(pnlCommentStandard);
         lblCommentDisplayMaxManual.setText("手動設定");
 
         GroupLayout gl_pnlCommentStandard = new GroupLayout(pnlCommentStandard);
@@ -481,6 +388,7 @@ public class ConfigDialog extends JDialog {
                     .addComponent(lblCommentDisplayMax))
                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
                     .addComponent(cbCommentSizeAuto)
                     .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(cbCommentMinSizeAuto)
                     .addComponent(cbCommentDisplaySizeDefault))
                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.LEADING)
@@ -501,6 +409,9 @@ public class ConfigDialog extends JDialog {
                     .addComponent(fldCommentSizeManual))
                 .addGroup(gl_pnlCommentStandard.createParallelGroup(GroupLayout.Alignment.BASELINE)
                     .addComponent(lblCommentMinSize)
                     .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))
                     .addComponent(cbCommentMinSizeAuto)
                     .addComponent(lblCommentMinSizeManual)
                     .addComponent(fldCommentMinSizeManual))
@@ -519,7 +430,9 @@ public class ConfigDialog extends JDialog {
 
         cbCommentOpaque.setText("コメント透明化を行わない");
 
 
         cbCommentOpaque.setText("コメント透明化を行わない");
 
-        btnFontPath.setText("...");
+        final JButton btnFontPath = new JButton("...");
+        btnFontPath.addActionListener(
+                new FileChooseActionListener(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFontPath));
 
         lblFontIndex.setText("フォント番号");
 
 
         lblFontIndex.setText("フォント番号");
 
@@ -597,33 +510,43 @@ public class ConfigDialog extends JDialog {
 
         tabbedPane.addTab("コメント", pnlComment);
 
 
         tabbedPane.addTab("コメント", pnlComment);
 
-        jPanel10.setBorder(BorderFactory.createTitledBorder("ファイルパス"));
+        pnlFfmpegBinPath.setBorder(BorderFactory.createTitledBorder("ファイルパス"));
 
 
-        lblFfmpegPath.setText("ffmpeg");
+        final JButton btnFfmpegPath = new JButton("...");
+        btnFfmpegPath.addActionListener(
+                new FileChooseActionListener(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFfmpegPath));
 
 
-        lblFfmpegDllPath.setText("拡張ライブラリ");
+        final JButton btnFfmpegDllPath = new JButton("...");
+        btnFfmpegDllPath.addActionListener(
+                new FileChooseActionListener(ConfigDialog.this, JFileChooser.FILES_ONLY, fldFfmpegDllPath));
 
 
-        btnFfmpegPath.setText("...");
+        final JButton btnMediaInfoPath = new JButton("...");
+        btnMediaInfoPath.addActionListener(
+                new FileChooseActionListener(ConfigDialog.this, JFileChooser.FILES_ONLY, fldMediaInfoPath));
 
 
-        btnFfmpegDllPath.setText("...");
-
-        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)
         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(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)
                 .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)
                 .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(
                 .addContainerGap())
         );
         gl_jPanel10.setVerticalGroup(
@@ -633,37 +556,49 @@ public class ConfigDialog extends JDialog {
                     .addComponent(lblFfmpegPath)
                     .addComponent(fldFfmpegPath, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                     .addComponent(btnFfmpegPath))
                     .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))
                 .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パラメータ"));
 
         );
 
         pnlFfmpegParam.setBorder(BorderFactory.createTitledBorder("ffmpegパラメータ"));
 
+        // 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)
+        );
+        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);
         );
 
         tabbedPane.addTab("ffmpeg", pnlFfmpeg);
@@ -695,64 +630,9 @@ public class ConfigDialog extends JDialog {
         tabbedPane.addTab("NG設定", pnlNgSetting);
 
         pnlSearchVideo.setBorder(BorderFactory.createTitledBorder("動画検索対象フォルダ"));
         tabbedPane.addTab("NG設定", pnlNgSetting);
 
         pnlSearchVideo.setBorder(BorderFactory.createTitledBorder("動画検索対象フォルダ"));
-
-
         pnlSearchComment.setBorder(BorderFactory.createTitledBorder("コメント検索対象フォルダ"));
 
         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);
 
         GroupLayout gl_pnlSearch = new GroupLayout(pnlSearch);
         pnlSearch.setLayout(gl_pnlSearch);
@@ -761,7 +641,7 @@ public class ConfigDialog extends JDialog {
             .addGroup(GroupLayout.Alignment.TRAILING, gl_pnlSearch.createSequentialGroup()
                 .addContainerGap()
                 .addGroup(gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.TRAILING)
             .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())
                     .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())
@@ -770,18 +650,17 @@ public class ConfigDialog extends JDialog {
             gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
             .addGroup(gl_pnlSearch.createSequentialGroup()
                 .addContainerGap()
             gl_pnlSearch.createParallelGroup(GroupLayout.Alignment.LEADING)
             .addGroup(gl_pnlSearch.createSequentialGroup()
                 .addContainerGap()
-                .addComponent(pnlSearchVideo, 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)
                 .addPreferredGap(ComponentPlacement.RELATED)
-                .addComponent(pnlSearchComment, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
-                .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);
 
         );
 
         tabbedPane.addTab("検索", pnlSearch);
 
-        final JPanel pnlButton = new JPanel();
-        final JButton btnOk = new JButton("OK");
+        final JButton btnOk = new JButton("保存");
         btnOk.addActionListener(new ActionListener() {
 
             @Override
         btnOk.addActionListener(new ActionListener() {
 
             @Override
@@ -790,11 +669,34 @@ public class ConfigDialog extends JDialog {
                 dispose();
             }
         });
                 dispose();
             }
         });
-        final JButton btnCancel = new JButton("Cancel");
-        pnlButton.add(btnOk);
-        pnlButton.add(btnCancel);
+        final JButton btnCancel = new JButton("取消");
+        btnCancel.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                dispose();
+            }
+        });
+        final JPanel pnlButton = new JPanel();
+
+        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());
 
         GroupLayout layout = new GroupLayout(getContentPane());
+        layout.setAutoCreateContainerGaps(true);
         getContentPane().setLayout(layout);
         layout.setHorizontalGroup(
             layout.createParallelGroup(GroupLayout.Alignment.LEADING)
         getContentPane().setLayout(layout);
         layout.setHorizontalGroup(
             layout.createParallelGroup(GroupLayout.Alignment.LEADING)
@@ -803,7 +705,7 @@ public class ConfigDialog extends JDialog {
         );
         layout.setVerticalGroup(
             layout.createSequentialGroup()
         );
         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)
         );
 
                 .addComponent(pnlButton)
         );
 
@@ -811,6 +713,16 @@ public class ConfigDialog extends JDialog {
         final JLabel lblSystemWaitDownload = new JLabel("ダウンロード開始最小間隔(秒)");
         final JLabel lblSystemThreadConvert = new JLabel("変換スレッド数");
         final JLabel lblSystemTempDir = 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 JPanel pnlSystemGeneral = new JPanel();
         pnlSystemGeneral.setBorder(BorderFactory.createTitledBorder("システム"));
@@ -826,14 +738,15 @@ public class ConfigDialog extends JDialog {
                     .addComponent(lblSystemWaitDownload)
                     .addComponent(lblSystemThreadConvert))
                 .addGroup(glSystemGenegal.createParallelGroup()
                     .addComponent(lblSystemWaitDownload)
                     .addComponent(lblSystemThreadConvert))
                 .addGroup(glSystemGenegal.createParallelGroup()
-                    .addComponent(fldSystemThreadDownload, PREFERRED_SIZE, 40, PREFERRED_SIZE)
-                    .addComponent(fldSystemWaitDownload, PREFERRED_SIZE, 40, PREFERRED_SIZE)
-                    .addComponent(fldSystemThreadConvert, PREFERRED_SIZE, 40, PREFERRED_SIZE)
+                    .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)
                 )
             )
             .addGroup(glSystemGenegal.createSequentialGroup()
                 .addComponent(lblSystemTempDir)
                 .addComponent(fldSystemTempDir, DEFAULT_SIZE, 400, Short.MAX_VALUE)
+                .addComponent(btnSystemTempDir)
                 )
             );
 
                 )
             );
 
@@ -849,7 +762,12 @@ public class ConfigDialog extends JDialog {
                 .addComponent(fldSystemThreadConvert, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
             .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
                 .addComponent(lblSystemTempDir)
                 .addComponent(fldSystemThreadConvert, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
             .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
                 .addComponent(lblSystemTempDir)
-                .addComponent(fldSystemTempDir, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE)));
+                .addComponent(fldSystemTempDir, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE)
+                .addComponent(btnSystemTempDir)
+            )
+        );
+
+        final JLabel lblSystemNeedReboot = new JLabel("設定を有効にするにはいんきゅばすの再起動が必要です");
 
         final JPanel pnlSystem = new JPanel();
         pnlSystem.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
 
         final JPanel pnlSystem = new JPanel();
         pnlSystem.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
@@ -859,108 +777,75 @@ public class ConfigDialog extends JDialog {
         pnlSystem.setLayout(glSystem);
 
         glSystem.setHorizontalGroup(glSystem.createParallelGroup()
         pnlSystem.setLayout(glSystem);
 
         glSystem.setHorizontalGroup(glSystem.createParallelGroup()
+            .addComponent(lblSystemNeedReboot, Alignment.CENTER)
             .addComponent(pnlSystemGeneral));
 
         glSystem.setVerticalGroup(glSystem.createSequentialGroup()
             .addComponent(pnlSystemGeneral));
 
         glSystem.setVerticalGroup(glSystem.createSequentialGroup()
+            .addComponent(lblSystemNeedReboot)
             .addComponent(pnlSystemGeneral));
 
         tabbedPane.add("システム", pnlSystem);
 
         pack();
             .addComponent(pnlSystemGeneral));
 
         tabbedPane.add("システム", pnlSystem);
 
         pack();
-        setResizable(false);
+        setMinimumSize(getSize());
         loadConfig();
     }
 
         loadConfig();
     }
 
-    /**
-     * @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>
-
-        /* Create and display the form */
-        java.awt.EventQueue.invokeLater(new Runnable() {
-
-            @Override
-            public void run() {
-                new ConfigDialog().setVisible(true);
-            }
-        });
-    }
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-
     // ネットワーク
     // ネットワーク - アカウント
     // ネットワーク
     // ネットワーク - アカウント
+    final JRadioButton btnAccount = new JRadioButton("次の情報を使用してログインする");
     private final JTextField fldMail;
     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 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 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 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 JTextField fldFontPath;
-    private final JButton btnFontPath;
     private final JTextField fldFontIndex;
     private final JComboBox<String> cmbFontShadow = new JComboBox<>();
     private final JCheckBox cbFontSizeArrangeDisable;
     private final JCheckBox cbCommentOpaque;
     // ffmpeg
     // ffmpeg - ファイルパス
     private final JTextField fldFontIndex;
     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 FfmpegParamPanel pnlFfmpegParam = new FfmpegParamPanel();
     // ffmpeg - ffmpegパラメータ
     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 NgRegisterPanel pnlNgWord = new NgRegisterPanel();
     // NG設定
     // NG設定 - NGワード
     private final NgRegisterPanel pnlNgWord = new NgRegisterPanel();
@@ -970,16 +855,11 @@ public class ConfigDialog extends JDialog {
     // 検索 - 動画検索対象フォルダ
     private final DirectoryRegisterPanel pnlSearchVideo = new DirectoryRegisterPanel();
     // 検索 - コメント検索対象フォルダ
     // 検索 - 動画検索対象フォルダ
     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 JTextField fldSystemThreadDownload = new JTextField();
-    private final JTextField fldSystemWaitDownload = new JTextField();
-    private final JTextField fldSystemThreadConvert = new JTextField();
+    private final SpinnerNumberModel mdlSystemThreadDownload = new SpinnerNumberModel();
+    private final SpinnerNumberModel mdlSystemWaitDownload = new SpinnerNumberModel();
+    private final SpinnerNumberModel mdlSystemThreadConvert = new SpinnerNumberModel();
     private final JTextField fldSystemTempDir = new JTextField();
 
 
     private final JTextField fldSystemTempDir = new JTextField();
 
 
@@ -991,10 +871,42 @@ public class ConfigDialog extends JDialog {
         /*
          * ネットワーク - アカウント
          */
         /*
          * ネットワーク - アカウント
          */
+        btnAccount.setSelected(p.getNeedsLogin());
         fldMail.setText(p.getId());
         fldPassword.setText(p.getPassword());
 
         /*
         fldMail.setText(p.getId());
         fldPassword.setText(p.getPassword());
 
         /*
+         * ネットワーク - cookie
+         */
+        btnLoginCookie.setSelected(!p.getNeedsLogin());
+        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());
          * ネットワーク - プロキシ
          */
         cbProxyUse.setSelected(p.getProxyUse());
@@ -1004,16 +916,16 @@ public class ConfigDialog extends JDialog {
         /*
          * ファイル - 動画
          */
         /*
          * ファイル - 動画
          */
-        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());
 
         /*
          * ファイル - 変換動画
 
         /*
          * ファイル - 変換動画
@@ -1024,17 +936,12 @@ public class ConfigDialog extends JDialog {
         cbOutputCommentOverlay.setSelected(p.getOutputCommentOverlay());
         cbOutputDisplayProgress.setSelected(p.getOutputDisplayProgress());
 
         cbOutputCommentOverlay.setSelected(p.getOutputCommentOverlay());
         cbOutputDisplayProgress.setSelected(p.getOutputDisplayProgress());
 
-        /*
-         * ファイル - 禁則文字
-         */
-        fldReplaceFrom.setText(p.getReplaceFrom());
-        fldReplaceTo.setText(p.getReplaceTo());
-
         /**
          * コメント
          */
         cbCommentSizeAuto.setSelected(p.getCommentSizeAutosize());
         fldCommentSizeManual.setText(p.getCommentSizeManual());
         /**
          * コメント
          */
         cbCommentSizeAuto.setSelected(p.getCommentSizeAutosize());
         fldCommentSizeManual.setText(p.getCommentSizeManual());
+        cbCommentMinDisable.setSelected(p.getCommentMinDisabled());
         cbCommentMinSizeAuto.setSelected(p.getCommentMinSizeAutosize());
         fldCommentSizeManual.setText(p.getCommentMinSizeManual());
         cbCommentDisplaySizeDefault.setSelected(p.getCommentDisplaySizeDefault());
         cbCommentMinSizeAuto.setSelected(p.getCommentMinSizeAutosize());
         fldCommentSizeManual.setText(p.getCommentMinSizeManual());
         cbCommentDisplaySizeDefault.setSelected(p.getCommentDisplaySizeDefault());
@@ -1054,6 +961,7 @@ public class ConfigDialog extends JDialog {
          */
         fldFfmpegPath.setText(p.getFfmpegPath());
         fldFfmpegDllPath.setText(p.getFfmpegDllPath());
          */
         fldFfmpegPath.setText(p.getFfmpegPath());
         fldFfmpegDllPath.setText(p.getFfmpegDllPath());
+        fldMediaInfoPath.setText(p.getMediaInfoPath());
 
         /*
          * ffmpeg - ffmpegパラメータ
 
         /*
          * ffmpeg - ffmpegパラメータ
@@ -1061,6 +969,12 @@ public class ConfigDialog extends JDialog {
         pnlFfmpegParam.init(p);
 
         /*
         pnlFfmpegParam.init(p);
 
         /*
+         * ffmpeg - その他
+         */
+        cbDisplayConverting.setSelected(p.getFfmpegDisplayConverting());
+        cbDllDisabled.setSelected(p.getFfmpegDllDisabled());
+
+        /*
          * NG 設定
          */
         final List<String> ngWords = p.getNgWords();
          * NG 設定
          */
         final List<String> ngWords = p.getNgWords();
@@ -1069,11 +983,17 @@ public class ConfigDialog extends JDialog {
         pnlNgId.init(ngIds);
 
         /*
         pnlNgId.init(ngIds);
 
         /*
+         * 検索
+         */
+        pnlSearchVideo.init(p.getSearchVideoDirs());
+        pnlSearchComment.init(p.getSearchCommentDirs());
+
+        /*
          * システム
          */
          * システム
          */
-        fldSystemThreadDownload.setText(Integer.toString(p.getSystemDownloadThread()));
-        fldSystemWaitDownload.setText(Integer.toString(p.getSystemDownloadWait()));
-        fldSystemThreadConvert.setText(Integer.toString(p.getSystemConvertThread()));
+        mdlSystemThreadDownload.setValue(p.getSystemDownloadThread());
+        mdlSystemWaitDownload.setValue(p.getSystemDownloadWait());
+        mdlSystemThreadConvert.setValue(p.getSystemConvertThread());
         fldSystemTempDir.setText(p.getSystemTempDir());
     }
 
         fldSystemTempDir.setText(p.getSystemTempDir());
     }
 
@@ -1083,9 +1003,31 @@ public class ConfigDialog extends JDialog {
         /*
          * ネットワーク - アカウント
          */
         /*
          * ネットワーク - アカウント
          */
-
+        p.setNeedsLogin(btnAccount.isSelected());
         p.setId(fldMail.getText());
         p.setId(fldMail.getText());
-        p.setPassword(fldPassword.getText());
+        p.setPassword(String.valueOf(fldPassword.getPassword()));
+
+        /*
+         * ネットワーク - cookie
+         */
+        final CookieBrowser cookieBrowser;
+        if(btnCookieIe.isSelected()) {
+            cookieBrowser = CookieBrowser.MSIE;
+        } else if(btnCookieFirefox.isSelected()) {
+            cookieBrowser = CookieBrowser.FIREFOX;
+        } else if (btnCookieChrome.isSelected()) {
+            cookieBrowser = CookieBrowser.CHROME;
+        } else if (btnCookieChromium.isSelected()) {
+            cookieBrowser = CookieBrowser.CHROMIUM;
+        } else if(btnCookieOpera.isSelected()) {
+            cookieBrowser = CookieBrowser.OPERA;
+        } else if(btnCookieOther.isSelected()) {
+            cookieBrowser = CookieBrowser.OTHER;
+        } else {
+            throw new UnsupportedOperationException();
+        }
+        p.setCookieBrowser(cookieBrowser);
+        p.setCookieDir(fldCookie.getText());
 
         /*
          * ネットワーク - プロキシ
 
         /*
          * ネットワーク - プロキシ
@@ -1097,16 +1039,16 @@ public class ConfigDialog extends JDialog {
         /*
          * ファイル - 動画
          */
         /*
          * ファイル - 動画
          */
-        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());
 
         /*
          * ファイル - 変換動画
 
         /*
          * ファイル - 変換動画
@@ -1118,16 +1060,11 @@ public class ConfigDialog extends JDialog {
         p.setOutputDisplayProgress(cbOutputDisplayProgress.isSelected());
 
         /*
         p.setOutputDisplayProgress(cbOutputDisplayProgress.isSelected());
 
         /*
-         * ファイル - 禁則文字
-         */
-        p.setReplaceFrom(fldReplaceFrom.getText());
-        p.setReplaceTo(fldReplaceTo.getText());
-
-        /*
          * コメント
          */
         p.setCommentSizeAutosize(cbCommentSizeAuto.isSelected());
         p.setCommentSizeManual(fldCommentSizeManual.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.setCommentMinSizeAutosize(cbCommentMinSizeAuto.isSelected());
         p.setCommentMinSizeManual(fldCommentSizeManual.getText());
         p.setCommentDisplaySizeDefault(cbCommentDisplaySizeDefault.isSelected());
@@ -1147,6 +1084,7 @@ public class ConfigDialog extends JDialog {
          */
         p.setFfmpegPath(fldFfmpegPath.getText());
         p.setFfmpegDllPath(fldFfmpegDllPath.getText());
          */
         p.setFfmpegPath(fldFfmpegPath.getText());
         p.setFfmpegDllPath(fldFfmpegDllPath.getText());
+        p.setMediaInfoPath(fldMediaInfoPath.getText());
 
         /*
          * ffmpeg - ffmpegパラメータ
 
         /*
          * ffmpeg - ffmpegパラメータ
@@ -1164,23 +1102,91 @@ public class ConfigDialog extends JDialog {
         p.setFfmpegKeepAspect(pnlFfmpegParam.cbFfmpegOptionKeepAspect.isSelected());
 
         /*
         p.setFfmpegKeepAspect(pnlFfmpegParam.cbFfmpegOptionKeepAspect.isSelected());
 
         /*
+         * ffmpeg - その他
+         */
+        p.setFfmpegDisplayConverting(cbDisplayConverting.isSelected());
+        p.setFfmpegDllDisabled(cbDllDisabled.isSelected());
+
+        /*
          * NG 設定
          */
         p.setNgWords(pnlNgWord.getAllElements());
         p.setNgIds(pnlNgId.getAllElements());
 
         /*
          * NG 設定
          */
         p.setNgWords(pnlNgWord.getAllElements());
         p.setNgIds(pnlNgId.getAllElements());
 
         /*
+         * 検索
+         */
+        p.setSearchVideoDirs(pnlSearchVideo.getAllElements());
+        p.setSearchCommentDirs(pnlSearchComment.getAllElements());
+
+        /*
          * システム
          */
          * システム
          */
-        p.setSystemDownloadThread(Integer.parseInt(fldSystemThreadDownload.getText()));
-        p.setSystemDownloadWait(Integer.parseInt(fldSystemWaitDownload.getText()));
-        p.setSystemConvertThread(Integer.parseInt(fldSystemThreadConvert.getText()));
+        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) {
         p.setSystemTempDir(fldSystemTempDir.getText());
 
         try {
             p.save();
         } catch (ConfigurationException ex) {
-            logger.log(Level.SEVERE, "コンフィグファイル保存に失敗", 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))
+        );
+
+    }
+}