OSDN Git Service

コンフィグダイアログクローズ処理
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / gui / ConfigDialog.java
index 6c40d2b..9dbd0b6 100644 (file)
@@ -5,10 +5,14 @@
  */
 package yukihane.inqubus.gui;
 
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import javax.swing.BorderFactory;
 import javax.swing.ButtonGroup;
+import javax.swing.ComboBoxModel;
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.DefaultListModel;
 import javax.swing.GroupLayout;
@@ -45,18 +49,6 @@ public class ConfigDialog extends JDialog {
 
     public ConfigDialog(JFrame owner){
         super(owner);
-        initComponents();
-        loadConfig();
-    }
-
-    /** This method is called from within the constructor to
-     * initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is
-     * always regenerated by the Form Editor.
-     */
-    @SuppressWarnings("unchecked")
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
 
         final ButtonGroup buttonGroup1 = new ButtonGroup();
         final JTabbedPane tabbedPane = new JTabbedPane();
@@ -119,7 +111,6 @@ public class ConfigDialog extends JDialog {
         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();
@@ -285,7 +276,7 @@ public class ConfigDialog extends JDialog {
 
         lblVideoDir.setText("保存フォルダ");
 
-        lblVideoFileNamepattern.setText("ファイル名パターン");
+        lblVideoFileNamepattern.setText("ファイル名規則");
 
         btnVideoDir.setText("...");
 
@@ -331,7 +322,7 @@ public class ConfigDialog extends JDialog {
 
         lblCommentDir.setText("保存フォルダ");
 
-        lblCommentFileNamePattern.setText("ファイル名パターン");
+        lblCommentFileNamePattern.setText("ファイル名規則");
 
         btnCommentDir.setText("...");
 
@@ -377,7 +368,7 @@ public class ConfigDialog extends JDialog {
 
         lblOutputDir.setText("保存フォルダ");
 
-        lblOutputFileNamePattern.setText("ファイル名パターン");
+        lblOutputFileNamePattern.setText("ファイル名規則");
 
         btnOutputDir.setText("...");
 
@@ -431,6 +422,38 @@ public class ConfigDialog extends JDialog {
                 .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(
@@ -440,7 +463,9 @@ public class ConfigDialog extends JDialog {
                 .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(
@@ -452,6 +477,8 @@ public class ConfigDialog extends JDialog {
                 .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())
         );
 
@@ -532,6 +559,9 @@ public class ConfigDialog extends JDialog {
         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);
@@ -550,7 +580,7 @@ public class ConfigDialog extends JDialog {
                         .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))
@@ -571,7 +601,7 @@ public class ConfigDialog extends JDialog {
                 .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)
@@ -1014,6 +1044,14 @@ public class ConfigDialog extends JDialog {
 
         final JPanel pnlButton = new JPanel();
         final JButton btnOk = new JButton("OK");
+        btnOk.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                saveConfig();
+                dispose();
+            }
+        });
         final JButton btnCancel = new JButton("Cancel");
         pnlButton.add(btnOk);
         pnlButton.add(btnCancel);
@@ -1026,10 +1064,6 @@ public class ConfigDialog extends JDialog {
             .addComponent(pnlButton)
         );
         layout.setVerticalGroup(
-//            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
-//            .addGroup(layout.createSequentialGroup()
-//                .addComponent(jTabbedPane1, GroupLayout.DEFAULT_SIZE, 451, GroupLayout.PREFERRED_SIZE)
-//                .addContainerGap(23, Short.MAX_VALUE))
             layout.createSequentialGroup()
                 .addComponent(tabbedPane,GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
                 .addComponent(pnlButton)
@@ -1037,7 +1071,8 @@ public class ConfigDialog extends JDialog {
 
         pack();
         setResizable(false);
-    }// </editor-fold>//GEN-END:initComponents
+        loadConfig();
+    }
 
     /**
      * @param args the command line arguments
@@ -1076,72 +1111,98 @@ public class ConfigDialog extends JDialog {
         });
     }
     // Variables declaration - do not modify//GEN-BEGIN:variables
-    private JButton btnVideoDir;
-    private JButton btnNgWordDel;
-    private JButton btnNgIdAdd;
-    private JButton btnNgIdDel;
-    private JButton btnSearchCommentAdd;
-    private JButton btnSearchCommentDel;
-    private JButton btnCommentDir;
-    private JButton btnOutputDir;
-    private JButton btnFfmpegPath;
-    private JButton btnFfmpegDllPath;
-    private JButton btnFontPath;
-    private JButton btnSearchVideoAdd;
-    private JButton btnSearchVideoDel;
-    private JButton btnNgWordAdd;
-    private JCheckBox cbProxyUse;
-    private JCheckBox cbCommentDisplaySizeDefault;
-    private JCheckBox cbOutputDisplayProgress;
-    private JCheckBox cbFontSizeArrangeDisable;
-    private JCheckBox cbCommentOpaque;
-    private JCheckBox cbVideoLocal;
-    private JCheckBox cbCommentLocal;
-    private JCheckBox cbOutputEnable;
-    private JCheckBox cbCommentSizeAuto;
-    private JCheckBox cbCommentMinSizeAuto;
-    private JCheckBox cbOutputCommentOverlay;
-    private JCheckBox cbFfmpegOptionResize;
-    private JCheckBox cbFfmpegOptionKeepAspect;
-    private JComboBox cmbFfmpegOptionFile;
-    private JList<String> lstSearchVideo;
-    private final DefaultListModel<String> mdlSearchVideo = new DefaultListModel<>();
-    private JList<String> lstSearchComment;
-    private final DefaultListModel<String> mdlSearchComment = new DefaultListModel<>();
-    private JList<String> lstNgWord;
+
+    // ネットワーク
+    // ネットワーク - アカウント
+    private final JTextField fldMail;
+    private final JTextField fldPassword;
+    // ネットワーク - プロキシ
+    private final JCheckBox cbProxyUse;
+    private final JTextField fldProxyHost;
+    private final JTextField fldProxyPort;
+    // ファイル
+    // ファイル - 動画
+    private final JTextField fldVideoDir;
+    private final JButton btnVideoDir;
+    private final JTextField fldVideoFileNamePattern;
+    private final JCheckBox cbVideoLocal;
+    // ファイル - コメント
+    private final JTextField fldCommentDir;
+    private final JButton btnCommentDir;
+    private final JTextField fldCommentFileNamePattern;
+    private final JCheckBox cbCommentLocal;
+    // ファイル - 変換動画
+    private final JTextField fldOutputDir;
+    private final JTextField fldOutputFileNamePattern;
+    private final JButton btnOutputDir;
+    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 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 fldFfmpegPath;
+    private final JButton btnFfmpegPath;
+    private final JTextField fldFfmpegDllPath;
+    private final JButton btnFfmpegDllPath;
+    // 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;
+    // NG設定
+    // NG設定 - NGワード
+    private final JList<String> lstNgWord;
     private final DefaultListModel<String> mdlNgWord = new DefaultListModel<>();
-    private JList<String> lstNgId;
+    private final JTextField fldNgWord;
+    private final JButton btnNgWordAdd;
+    private final JButton btnNgWordDel;
+    // NG設定 - NGID
+    private final JList<String> lstNgId;
     private final DefaultListModel<String> mdlNgId = new DefaultListModel<>();
-    private JRadioButton rbFfmpegOptionFile;
-    private JRadioButton rbFfmpegOptionDirectInput;
-    private JTextField fldMail;
-    private JTextField fldOutputFileNamePattern;
-    private JTextField fldCommentSizeManual;
-    private JTextField fldCommentMinSizeManual;
-    private JTextField fldFfmpegPath;
-    private JTextField fldFfmpegDllPath;
-    private JTextField fldFfmpegOptionResizeWidth;
-    private JTextField fldFfmpegOptionResizeHeight;
-    private JTextField fldFfmpegOptionExtension;
-    private JTextField fldFfmpegOptionMain;
-    private JTextField fldFfmpegOptionIn;
-    private JTextField fldPassword;
-    private JTextField fldFfmpegOptionOut;
-    private JTextField fldFfmpegOptionAv;
-    private JTextField fldCommentDisplaySizeManual;
-    private JTextField fldFontPath;
-    private JTextField fldFontIndex;
-    private JTextField fldFontShadow;
-    private JTextField fldNgWord;
-    private JTextField fldNgId;
-    private JTextField fldSearchCache;
-    private JTextField fldProxyHost;
-    private JTextField fldProxyPort;
-    private JTextField fldVideoDir;
-    private JTextField fldVideoFileNamePattern;
-    private JTextField fldCommentDir;
-    private JTextField fldCommentFileNamePattern;
-    private JTextField fldOutputDir;
+    private final JTextField fldNgId;
+    private final JButton btnNgIdAdd;
+    private final JButton btnNgIdDel;
+    // 検索
+    // 検索 - 動画検索対象フォルダ
+    private final JList<String> lstSearchVideo;
+    private final DefaultListModel<String> mdlSearchVideo = new DefaultListModel<>();
+    private final JButton btnSearchVideoAdd;
+    private final JButton btnSearchVideoDel;
+    // 検索 - コメント検索対象フォルダ
+    private final JList<String> lstSearchComment;
+    private final DefaultListModel<String> mdlSearchComment = new DefaultListModel<>();
+    private final JButton btnSearchCommentAdd;
+    private final JButton btnSearchCommentDel;
+    // 検索 - キャッシュ更新(秒)
+    private final JTextField fldSearchCache;
+
+
     // End of variables declaration//GEN-END:variables
 
     private void loadConfig() {
@@ -1183,6 +1244,12 @@ public class ConfigDialog extends JDialog {
         cbOutputCommentOverlay.setSelected(p.getOutputCommentOverlay());
         cbOutputDisplayProgress.setSelected(p.getOutputDisplayProgress());
 
+        /*
+         * ファイル - 禁則文字
+         */
+        fldReplaceFrom.setText(p.getReplaceFrom());
+        fldReplaceTo.setText(p.getReplaceTo());
+
         /**
          * コメント
          */
@@ -1198,7 +1265,7 @@ public class ConfigDialog extends JDialog {
          */
         fldFontPath.setText(p.getFontPath());
         fldFontIndex.setText(p.getFontIndex());
-        // TODO 影の種類はコンボボックス
+        cmbFontShadow.setSelectedIndex(p.getFontShadow());
         cbFontSizeArrangeDisable.setSelected(p.getFontSizeArrangeDisable());
         cbCommentOpaque.setSelected(p.getCommentOpaque());
 
@@ -1276,7 +1343,13 @@ public class ConfigDialog extends JDialog {
         p.setOutputCommentOverlay(cbOutputCommentOverlay.isSelected());
         p.setOutputDisplayProgress(cbOutputDisplayProgress.isSelected());
 
-        /**
+        /*
+         * ファイル - 禁則文字
+         */
+        p.setReplaceFrom(fldReplaceFrom.getText());
+        p.setReplaceTo(fldReplaceTo.getText());
+
+        /*
          * コメント
          */
         p.setCommentSizeAutosize(cbCommentSizeAuto.isSelected());
@@ -1291,7 +1364,7 @@ public class ConfigDialog extends JDialog {
          */
         p.setFontPath(fldFontPath.getText());
         p.setFontIndex(fldFontIndex.getText());
-        // TODO 影の種類はコンボボックス
+        p.setFontShadow(cmbFontShadow.getSelectedIndex());
         p.setFontSizeArrangeDisable(cbFontSizeArrangeDisable.isSelected());
         p.setCommentOpaque(cbCommentOpaque.isSelected());