OSDN Git Service

システムコンフィグの型を変更
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / gui / ConfigDialog.java
index e2f7838..44827d0 100644 (file)
@@ -5,8 +5,15 @@
  */
 package yukihane.inqubus.gui;
 
-import java.util.Arrays;
+import static javax.swing.GroupLayout.DEFAULT_SIZE;
+import static javax.swing.GroupLayout.PREFERRED_SIZE;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.swing.BorderFactory;
 import javax.swing.ButtonGroup;
 import javax.swing.ComboBoxModel;
@@ -30,6 +37,7 @@ import javax.swing.LayoutStyle.ComponentPlacement;
 import javax.swing.UIManager;
 import javax.swing.UnsupportedLookAndFeelException;
 import javax.swing.WindowConstants;
+import org.apache.commons.configuration.ConfigurationException;
 import yukihane.inqubus.Config;
 
 /**
@@ -38,6 +46,7 @@ import yukihane.inqubus.Config;
  */
 public class ConfigDialog extends JDialog {
     private static final long serialVersionUID = 1L;
+    private static final Logger logger = Logger.getLogger(ConfigDialog.class.getName());
 
     /** Creates new form Properties */
     public ConfigDialog() {
@@ -1041,6 +1050,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);
@@ -1058,6 +1075,65 @@ public class ConfigDialog extends JDialog {
                 .addComponent(pnlButton)
         );
 
+        final JLabel lblSystemThreadDownload = new JLabel("ダウンロードスレッド数");
+        final JLabel lblSystemWaitDownload = new JLabel("ダウンロード開始最小間隔(秒)");
+        final JLabel lblSystemThreadConvert = new JLabel("変換スレッド数");
+        final JLabel lblSystemTempDir = new JLabel("作業フォルダ");
+
+        final JPanel pnlSystemGeneral = new JPanel();
+        pnlSystemGeneral.setBorder(BorderFactory.createTitledBorder("システム"));
+        final GroupLayout glSystemGenegal = new GroupLayout(pnlSystemGeneral);
+        glSystemGenegal.setAutoCreateGaps(true);
+        glSystemGenegal.setAutoCreateContainerGaps(true);
+        pnlSystemGeneral.setLayout(glSystemGenegal);
+
+        glSystemGenegal.setHorizontalGroup(glSystemGenegal.createParallelGroup()
+            .addGroup(glSystemGenegal.createSequentialGroup()
+                .addGroup(glSystemGenegal.createParallelGroup()
+                    .addComponent(lblSystemThreadDownload)
+                    .addComponent(lblSystemWaitDownload)
+                    .addComponent(lblSystemThreadConvert))
+                .addGroup(glSystemGenegal.createParallelGroup()
+                    .addComponent(fldSystemThreadDownload, PREFERRED_SIZE, 40, PREFERRED_SIZE)
+                    .addComponent(fldSystemWaitDownload, PREFERRED_SIZE, 40, PREFERRED_SIZE)
+                    .addComponent(fldSystemThreadConvert, PREFERRED_SIZE, 40, PREFERRED_SIZE)
+                )
+            )
+            .addGroup(glSystemGenegal.createSequentialGroup()
+                .addComponent(lblSystemTempDir)
+                .addComponent(fldSystemTempDir, DEFAULT_SIZE, 400, Short.MAX_VALUE)
+                )
+            );
+
+        glSystemGenegal.setVerticalGroup(glSystemGenegal.createSequentialGroup()
+            .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
+                .addComponent(lblSystemThreadDownload)
+                .addComponent(fldSystemThreadDownload, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
+            .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
+                .addComponent(lblSystemWaitDownload)
+                .addComponent(fldSystemWaitDownload, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
+            .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
+                .addComponent(lblSystemThreadConvert)
+                .addComponent(fldSystemThreadConvert, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE))
+            .addGroup(glSystemGenegal.createParallelGroup(Alignment.BASELINE)
+                .addComponent(lblSystemTempDir)
+                .addComponent(fldSystemTempDir, DEFAULT_SIZE, PREFERRED_SIZE, PREFERRED_SIZE)));
+
+        final JPanel pnlSystem = new JPanel();
+        pnlSystem.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
+        final GroupLayout glSystem = new GroupLayout(pnlSystem);
+        glSystem.setAutoCreateGaps(true);
+        glSystem.setAutoCreateContainerGaps(true);
+        pnlSystem.setLayout(glSystem);
+
+        glSystem.setHorizontalGroup(glSystem.createParallelGroup()
+            .addComponent(pnlSystemGeneral));
+
+        glSystem.setVerticalGroup(glSystem.createSequentialGroup()
+            .addComponent(pnlSystemGeneral));
+
+        tabbedPane.add("システム", pnlSystem);
+
         pack();
         setResizable(false);
         loadConfig();
@@ -1190,6 +1266,11 @@ public class ConfigDialog extends JDialog {
     private final JButton btnSearchCommentDel;
     // 検索 - キャッシュ更新(秒)
     private final JTextField fldSearchCache;
+    // システム
+    private final JTextField fldSystemThreadDownload = new JTextField();
+    private final JTextField fldSystemWaitDownload = new JTextField();
+    private final JTextField fldSystemThreadConvert = new JTextField();
+    private final JTextField fldSystemTempDir = new JTextField();
 
 
     // End of variables declaration//GEN-END:variables
@@ -1291,7 +1372,16 @@ public class ConfigDialog extends JDialog {
         for (String s : ngIds) {
             mdlNgId.addElement(s);
         }
+
+        /*
+         * システム
+         */
+        fldSystemThreadDownload.setText(Integer.toString(p.getSystemDownloadThread()));
+        fldSystemWaitDownload.setText(Integer.toString(p.getSystemDownloadWait()));
+        fldSystemThreadConvert.setText(Integer.toString(p.getSystemConvertThread()));
+        fldSystemTempDir.setText(p.getSystemTempDir());
     }
+
     private void saveConfig() {
         final Config p = Config.INSTANCE;
 
@@ -1381,8 +1471,29 @@ public class ConfigDialog extends JDialog {
         /*
          * NG 設定
          */
-        p.setNgWords(Arrays.asList((String[]) mdlNgWord.toArray()));
-        p.setNgIds(Arrays.asList((String[])mdlNgId.toArray()));
+        final List<String> ngWords = new ArrayList<>(mdlNgId.getSize());
+        for (int i = 0; i < mdlNgId.getSize(); i++) {
+            ngWords.add(mdlNgId.get(i));
+        }
+        p.setNgWords(ngWords);
+        final List<String> ngIds = new ArrayList<>(mdlNgWord.getSize());
+        for(int i = 0; i<mdlNgWord.getSize();i++) {
+            ngIds.add(mdlNgWord.get(i));
+        }
+        p.setNgIds(ngIds);
+
+        /*
+         * システム
+         */
+        p.setSystemDownloadThread(Integer.parseInt(fldSystemThreadDownload.getText()));
+        p.setSystemDownloadWait(Integer.parseInt(fldSystemWaitDownload.getText()));
+        p.setSystemConvertThread(Integer.parseInt(fldSystemThreadConvert.getText()));
+        p.setSystemTempDir(fldSystemTempDir.getText());
 
+        try {
+            p.save();
+        } catch (ConfigurationException ex) {
+            logger.log(Level.SEVERE, "コンフィグファイル保存に失敗", ex);
+        }
     }
 }