*/
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;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.WindowConstants;
+import org.apache.commons.configuration.ConfigurationException;
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() {
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);
.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();
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
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;
*/
p.setFontPath(fldFontPath.getText());
p.setFontIndex(fldFontIndex.getText());
- // TODO 影の種類はコンボボックス
+ p.setFontShadow(cmbFontShadow.getSelectedIndex());
p.setFontSizeArrangeDisable(cbFontSizeArrangeDisable.isSelected());
p.setCommentOpaque(cbCommentOpaque.isSelected());
/*
* 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);
+ }
}
}