OSDN Git Service

改行コード指定
[jindolf/Jindolf.git] / src / main / java / jp / sourceforge / jindolf / AppSetting.java
index d2f621a..655768a 100644 (file)
-/*\r
- * application settings\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2008 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf;\r
-\r
-import java.awt.Font;\r
-import java.awt.font.FontRenderContext;\r
-import java.io.File;\r
-import jp.sourceforge.jindolf.json.JsBoolean;\r
-import jp.sourceforge.jindolf.json.JsObject;\r
-import jp.sourceforge.jindolf.json.JsPair;\r
-import jp.sourceforge.jindolf.json.JsValue;\r
-\r
-/**\r
- * アプリケーションの各種設定。\r
- */\r
-public class AppSetting{\r
-\r
-    private static final String NETCONFIG_FILE = "netconfig.json";\r
-    private static final String HASH_PROXY = "proxy";\r
-\r
-    private static final String TALKCONFIG_FILE = "talkconfig.json";\r
-    private static final String HASH_FONT = "font";\r
-    private static final String HASH_USEBODYICON = "useBodyIcon";\r
-    private static final String HASH_USEMONOTOMB = "useMonoTomb";\r
-    private static final String HASH_SIMPLEMODE = "isSimpleMode";\r
-    private static final String HASH_ALIGNBALOON = "alignBaloonWidth";\r
-\r
-    private OptionInfo optInfo;\r
-\r
-    private boolean useConfigPath;\r
-    private File configPath;\r
-\r
-    private FontInfo fontInfo = FontInfo.DEFAULT_FONTINFO;\r
-\r
-    private int frameWidth  = 800;\r
-    private int frameHeight = 600;\r
-    private int frameXpos = Integer.MIN_VALUE;\r
-    private int frameYpos = Integer.MIN_VALUE;\r
-\r
-    private ProxyInfo proxyInfo = ProxyInfo.DEFAULT;\r
-\r
-    private DialogPref dialogPref = new DialogPref();\r
-\r
-    private JsValue loadedNetConfig;\r
-    private JsValue loadedTalkConfig;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     */\r
-    public AppSetting(){\r
-        super();\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * コマンドラインオプションからアプリ設定を展開する。\r
-     * @param optionInfo オプション情報\r
-     */\r
-    public void applyOptionInfo(OptionInfo optionInfo){\r
-        this.optInfo = optionInfo;\r
-        applyConfigPathSetting();\r
-        applyFontSetting();\r
-        applyGeometrySetting();\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 設定格納ディレクトリ関係の設定。\r
-     */\r
-    private void applyConfigPathSetting(){\r
-        CmdOption opt = this.optInfo\r
-                .getExclusiveOption(CmdOption.OPT_CONFDIR,\r
-                                    CmdOption.OPT_NOCONF );\r
-        if(opt == CmdOption.OPT_NOCONF){\r
-            this.useConfigPath = false;\r
-            this.configPath = null;\r
-        }else if(opt == CmdOption.OPT_CONFDIR){\r
-            this.useConfigPath = true;\r
-            String path = this.optInfo.getStringArg(CmdOption.OPT_CONFDIR);\r
-            this.configPath = FileUtils.supplyFullPath(new File(path));\r
-        }else{\r
-            this.useConfigPath = true;\r
-            File path = ConfigFile.getImplicitConfigDirectory();\r
-            this.configPath = path;\r
-        }\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * フォント関係の設定。\r
-     */\r
-    private void applyFontSetting(){\r
-        String fontName = this.optInfo.getStringArg(CmdOption.OPT_INITFONT);\r
-        Boolean useAntiAlias =\r
-                this.optInfo.getBooleanArg(CmdOption.OPT_ANTIALIAS);\r
-        Boolean useFractional =\r
-                this.optInfo.getBooleanArg(CmdOption.OPT_FRACTIONAL);\r
-\r
-        if(fontName != null){\r
-            Font font = Font.decode(fontName);\r
-            this.fontInfo = this.fontInfo.deriveFont(font);\r
-        }\r
-\r
-        if(useAntiAlias != null){\r
-            FontRenderContext context = this.fontInfo.getFontRenderContext();\r
-            FontRenderContext newContext =\r
-                    new FontRenderContext(context.getTransform(),\r
-                                          useAntiAlias.booleanValue(),\r
-                                          context.usesFractionalMetrics() );\r
-            this.fontInfo = this.fontInfo.deriveRenderContext(newContext);\r
-        }\r
-\r
-        if(useFractional != null){\r
-            FontRenderContext context = this.fontInfo.getFontRenderContext();\r
-            FontRenderContext newContext =\r
-                    new FontRenderContext(context.getTransform(),\r
-                                          context.isAntiAliased(),\r
-                                          useFractional.booleanValue() );\r
-            this.fontInfo = this.fontInfo.deriveRenderContext(newContext);\r
-        }\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * ジオメトリ関係の設定。\r
-     */\r
-    private void applyGeometrySetting(){\r
-        Integer ival;\r
-\r
-        ival = this.optInfo.initialFrameWidth();\r
-        if(ival != null) this.frameWidth = ival;\r
-\r
-        ival = this.optInfo.initialFrameHeight();\r
-        if(ival != null) this.frameHeight = ival;\r
-\r
-        ival = this.optInfo.initialFrameXpos();\r
-        if(ival != null) this.frameXpos = ival;\r
-\r
-        ival = this.optInfo.initialFrameYpos();\r
-        if(ival != null) this.frameYpos = ival;\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 設定格納ディレクトリを返す。\r
-     * @return 設定格納ディレクトリ。\r
-     */\r
-    public File getConfigPath(){\r
-        return this.configPath;\r
-    }\r
-\r
-    /**\r
-     * 設定格納ディレクトリを設定する。\r
-     * @param path 設定格納ディレクトリ\r
-     */\r
-    public void setConfigPath(File path){\r
-        this.configPath = path;\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 設定格納ディレクトリを使うか否かを返す。\r
-     * @return 使うならtrue\r
-     */\r
-    public boolean useConfigPath(){\r
-        return this.useConfigPath;\r
-    }\r
-\r
-    /**\r
-     * 設定格納ディレクトリを使うか否か設定する。\r
-     * @param need 使うならtrue\r
-     */\r
-    public void setUseConfigPath(boolean need){\r
-        this.useConfigPath = need;\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 初期のフレーム幅を返す。\r
-     * @return 初期のフレーム幅\r
-     */\r
-    public int initialFrameWidth(){\r
-        return this.frameWidth;\r
-    }\r
-\r
-    /**\r
-     * 初期のフレーム高を返す。\r
-     * @return 初期のフレーム高\r
-     */\r
-    public int initialFrameHeight(){\r
-        return this.frameHeight;\r
-    }\r
-\r
-    /**\r
-     * 初期のフレーム位置のX座標を返す。\r
-     * 特に指示されていなければInteger.MIN_VALUEを返す。\r
-     * @return 初期のフレーム位置のX座標\r
-     */\r
-    public int initialFrameXpos(){\r
-        return this.frameXpos;\r
-    }\r
-\r
-    /**\r
-     * 初期のフレーム位置のY座標を返す。\r
-     * 特に指示されていなければInteger.MIN_VALUEを返す。\r
-     * @return 初期のフレーム位置のY座標\r
-     */\r
-    public int initialFrameYpos(){\r
-        return this.frameYpos;\r
-    }\r
-\r
-    /**\r
-     * フォント設定を返す。\r
-     * @return フォント設定\r
-     */\r
-    public FontInfo getFontInfo(){\r
-        return this.fontInfo;\r
-    }\r
-\r
-    /**\r
-     * フォント設定を更新する。\r
-     * @param fontInfo フォント設定\r
-     */\r
-    public void setFontInfo(FontInfo fontInfo){\r
-        this.fontInfo = fontInfo;\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * プロクシ設定を返す。\r
-     * @return プロクシ設定\r
-     */\r
-    public ProxyInfo getProxyInfo(){\r
-        return this.proxyInfo;\r
-    }\r
-\r
-    /**\r
-     * プロクシ設定を更新する。\r
-     * @param proxyInfo プロクシ設定。nullならプロクシなしと解釈される。\r
-     */\r
-    public void setProxyInfo(ProxyInfo proxyInfo){\r
-        if(proxyInfo == null) this.proxyInfo = ProxyInfo.DEFAULT;\r
-        else                  this.proxyInfo = proxyInfo;\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 発言表示設定を返す。\r
-     * @return 表示設定\r
-     */\r
-    public DialogPref getDialogPref(){\r
-        return this.dialogPref;\r
-    }\r
-\r
-    /**\r
-     * 発言表示設定を返す。\r
-     * @param pref 表示設定\r
-     */\r
-    public void setDialogPref(DialogPref pref){\r
-        if(pref == null) this.dialogPref = new DialogPref();\r
-        else             this.dialogPref = pref;\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * ネットワーク設定をロードする。\r
-     */\r
-    private void loadNetConfig(){\r
-        if( ! useConfigPath() ) return;\r
-\r
-        JsValue value = ConfigFile.loadJson(new File(NETCONFIG_FILE));\r
-        if(value == null) return;\r
-        this.loadedNetConfig = value;\r
-\r
-        if( ! (value instanceof JsObject) ) return;\r
-        JsObject root = (JsObject) value;\r
-\r
-        value = root.getValue(HASH_PROXY);\r
-        if( ! (value instanceof JsObject) ) return;\r
-        JsObject proxy = (JsObject) value;\r
-\r
-        ProxyInfo info = ProxyInfo.decodeJson(proxy);\r
-\r
-        setProxyInfo(info);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 会話表示設定をロードする。\r
-     */\r
-    private void loadTalkConfig(){\r
-        if( ! useConfigPath() ) return;\r
-\r
-        JsValue value = ConfigFile.loadJson(new File(TALKCONFIG_FILE));\r
-        if(value == null) return;\r
-        this.loadedTalkConfig = value;\r
-\r
-        if( ! (value instanceof JsObject) ) return;\r
-        JsObject root = (JsObject) value;\r
-\r
-        value = root.getValue(HASH_FONT);\r
-        if(value instanceof JsObject){\r
-            JsObject font = (JsObject) value;\r
-            FontInfo info = FontInfo.decodeJson(font);\r
-            setFontInfo(info);\r
-            applyFontSetting();\r
-        }\r
-\r
-        DialogPref pref = new DialogPref();\r
-        JsBoolean boolValue;\r
-        value = root.getValue(HASH_USEBODYICON);\r
-        if(value instanceof JsBoolean){\r
-            boolValue = (JsBoolean) value;\r
-            pref.setBodyImageSetting(boolValue.booleanValue());\r
-        }\r
-        value = root.getValue(HASH_USEMONOTOMB);\r
-        if(value instanceof JsBoolean){\r
-            boolValue = (JsBoolean) value;\r
-            pref.setMonoImageSetting(boolValue.booleanValue());\r
-        }\r
-        value = root.getValue(HASH_SIMPLEMODE);\r
-        if(value instanceof JsBoolean){\r
-            boolValue = (JsBoolean) value;\r
-            pref.setSimpleMode(boolValue.booleanValue());\r
-        }\r
-        value = root.getValue(HASH_ALIGNBALOON);\r
-        if(value instanceof JsBoolean){\r
-            boolValue = (JsBoolean) value;\r
-            pref.setAlignBalooonWidthSetting(boolValue.booleanValue());\r
-        }\r
-        setDialogPref(pref);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * ネットワーク設定をセーブする。\r
-     */\r
-    private void saveNetConfig(){\r
-        if( ! useConfigPath() ) return;\r
-\r
-        JsObject root = new JsObject();\r
-        JsObject proxy = ProxyInfo.buildJson(getProxyInfo());\r
-        root.putValue(HASH_PROXY, proxy);\r
-\r
-        if(this.loadedNetConfig != null){\r
-            if(this.loadedNetConfig.equals(root)) return;\r
-        }\r
-\r
-        ConfigFile.saveJson(new File(NETCONFIG_FILE), root);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 会話表示設定をセーブする。\r
-     */\r
-    private void saveTalkConfig(){\r
-        if( ! useConfigPath() ) return;\r
-\r
-        JsObject root = new JsObject();\r
-\r
-        JsObject font = FontInfo.buildJson(getFontInfo());\r
-        root.putValue(HASH_FONT, font);\r
-\r
-        DialogPref pref = getDialogPref();\r
-        JsPair useBodyIcon =\r
-                new JsPair(HASH_USEBODYICON, pref.useBodyImage());\r
-        JsPair useMonoTomb =\r
-                new JsPair(HASH_USEMONOTOMB, pref.useMonoImage());\r
-        JsPair isSimple =\r
-                new JsPair(HASH_SIMPLEMODE, pref.isSimpleMode());\r
-        JsPair alignBaloon =\r
-                new JsPair(HASH_ALIGNBALOON, pref.alignBaloonWidth());\r
-        root.putPair(useBodyIcon);\r
-        root.putPair(useMonoTomb);\r
-        root.putPair(isSimple);\r
-        root.putPair(alignBaloon);\r
-\r
-        if(this.loadedTalkConfig != null){\r
-            if(this.loadedTalkConfig.equals(root)) return;\r
-        }\r
-\r
-        ConfigFile.saveJson(new File(TALKCONFIG_FILE), root);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 各種設定を設定格納ディレクトリからロードする。\r
-     */\r
-    public void loadConfig(){\r
-        loadNetConfig();\r
-        loadTalkConfig();\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * 各種設定を設定格納ディレクトリへセーブする。\r
-     */\r
-    public void saveConfig(){\r
-        saveNetConfig();\r
-        saveTalkConfig();\r
-        return;\r
-    }\r
-\r
-}\r
+/*
+ * application settings
+ *
+ * License : The MIT License
+ * Copyright(c) 2008 olyutorskii
+ */
+
+package jp.sourceforge.jindolf;
+
+import java.awt.Font;
+import java.awt.font.FontRenderContext;
+import java.io.File;
+import jp.sourceforge.jindolf.json.JsBoolean;
+import jp.sourceforge.jindolf.json.JsObject;
+import jp.sourceforge.jindolf.json.JsPair;
+import jp.sourceforge.jindolf.json.JsValue;
+
+/**
+ * アプリケーションの各種設定。
+ */
+public class AppSetting{
+
+    private static final String NETCONFIG_FILE = "netconfig.json";
+    private static final String HASH_PROXY = "proxy";
+
+    private static final String TALKCONFIG_FILE = "talkconfig.json";
+    private static final String HASH_FONT = "font";
+    private static final String HASH_USEBODYICON = "useBodyIcon";
+    private static final String HASH_USEMONOTOMB = "useMonoTomb";
+    private static final String HASH_SIMPLEMODE = "isSimpleMode";
+    private static final String HASH_ALIGNBALOON = "alignBaloonWidth";
+
+    private OptionInfo optInfo;
+
+    private boolean useConfigPath;
+    private File configPath;
+
+    private FontInfo fontInfo = FontInfo.DEFAULT_FONTINFO;
+
+    private int frameWidth  = 800;
+    private int frameHeight = 600;
+    private int frameXpos = Integer.MIN_VALUE;
+    private int frameYpos = Integer.MIN_VALUE;
+
+    private ProxyInfo proxyInfo = ProxyInfo.DEFAULT;
+
+    private DialogPref dialogPref = new DialogPref();
+
+    private JsValue loadedNetConfig;
+    private JsValue loadedTalkConfig;
+
+    /**
+     * コンストラクタ。
+     */
+    public AppSetting(){
+        super();
+        return;
+    }
+
+    /**
+     * コマンドラインオプションからアプリ設定を展開する。
+     * @param optionInfo オプション情報
+     */
+    public void applyOptionInfo(OptionInfo optionInfo){
+        this.optInfo = optionInfo;
+        applyConfigPathSetting();
+        applyFontSetting();
+        applyGeometrySetting();
+        return;
+    }
+
+    /**
+     * 設定格納ディレクトリ関係の設定。
+     */
+    private void applyConfigPathSetting(){
+        CmdOption opt = this.optInfo
+                .getExclusiveOption(CmdOption.OPT_CONFDIR,
+                                    CmdOption.OPT_NOCONF );
+        if(opt == CmdOption.OPT_NOCONF){
+            this.useConfigPath = false;
+            this.configPath = null;
+        }else if(opt == CmdOption.OPT_CONFDIR){
+            this.useConfigPath = true;
+            String path = this.optInfo.getStringArg(CmdOption.OPT_CONFDIR);
+            this.configPath = FileUtils.supplyFullPath(new File(path));
+        }else{
+            this.useConfigPath = true;
+            File path = ConfigFile.getImplicitConfigDirectory();
+            this.configPath = path;
+        }
+
+        return;
+    }
+
+    /**
+     * フォント関係の設定。
+     */
+    private void applyFontSetting(){
+        String fontName = this.optInfo.getStringArg(CmdOption.OPT_INITFONT);
+        Boolean useAntiAlias =
+                this.optInfo.getBooleanArg(CmdOption.OPT_ANTIALIAS);
+        Boolean useFractional =
+                this.optInfo.getBooleanArg(CmdOption.OPT_FRACTIONAL);
+
+        if(fontName != null){
+            Font font = Font.decode(fontName);
+            this.fontInfo = this.fontInfo.deriveFont(font);
+        }
+
+        if(useAntiAlias != null){
+            FontRenderContext context = this.fontInfo.getFontRenderContext();
+            FontRenderContext newContext =
+                    new FontRenderContext(context.getTransform(),
+                                          useAntiAlias.booleanValue(),
+                                          context.usesFractionalMetrics() );
+            this.fontInfo = this.fontInfo.deriveRenderContext(newContext);
+        }
+
+        if(useFractional != null){
+            FontRenderContext context = this.fontInfo.getFontRenderContext();
+            FontRenderContext newContext =
+                    new FontRenderContext(context.getTransform(),
+                                          context.isAntiAliased(),
+                                          useFractional.booleanValue() );
+            this.fontInfo = this.fontInfo.deriveRenderContext(newContext);
+        }
+
+        return;
+    }
+
+    /**
+     * ジオメトリ関係の設定。
+     */
+    private void applyGeometrySetting(){
+        Integer ival;
+
+        ival = this.optInfo.initialFrameWidth();
+        if(ival != null) this.frameWidth = ival;
+
+        ival = this.optInfo.initialFrameHeight();
+        if(ival != null) this.frameHeight = ival;
+
+        ival = this.optInfo.initialFrameXpos();
+        if(ival != null) this.frameXpos = ival;
+
+        ival = this.optInfo.initialFrameYpos();
+        if(ival != null) this.frameYpos = ival;
+
+        return;
+    }
+
+    /**
+     * 設定格納ディレクトリを返す。
+     * @return 設定格納ディレクトリ。
+     */
+    public File getConfigPath(){
+        return this.configPath;
+    }
+
+    /**
+     * 設定格納ディレクトリを設定する。
+     * @param path 設定格納ディレクトリ
+     */
+    public void setConfigPath(File path){
+        this.configPath = path;
+        return;
+    }
+
+    /**
+     * 設定格納ディレクトリを使うか否かを返す。
+     * @return 使うならtrue
+     */
+    public boolean useConfigPath(){
+        return this.useConfigPath;
+    }
+
+    /**
+     * 設定格納ディレクトリを使うか否か設定する。
+     * @param need 使うならtrue
+     */
+    public void setUseConfigPath(boolean need){
+        this.useConfigPath = need;
+        return;
+    }
+
+    /**
+     * 初期のフレーム幅を返す。
+     * @return 初期のフレーム幅
+     */
+    public int initialFrameWidth(){
+        return this.frameWidth;
+    }
+
+    /**
+     * 初期のフレーム高を返す。
+     * @return 初期のフレーム高
+     */
+    public int initialFrameHeight(){
+        return this.frameHeight;
+    }
+
+    /**
+     * 初期のフレーム位置のX座標を返す。
+     * 特に指示されていなければInteger.MIN_VALUEを返す。
+     * @return 初期のフレーム位置のX座標
+     */
+    public int initialFrameXpos(){
+        return this.frameXpos;
+    }
+
+    /**
+     * 初期のフレーム位置のY座標を返す。
+     * 特に指示されていなければInteger.MIN_VALUEを返す。
+     * @return 初期のフレーム位置のY座標
+     */
+    public int initialFrameYpos(){
+        return this.frameYpos;
+    }
+
+    /**
+     * フォント設定を返す。
+     * @return フォント設定
+     */
+    public FontInfo getFontInfo(){
+        return this.fontInfo;
+    }
+
+    /**
+     * フォント設定を更新する。
+     * @param fontInfo フォント設定
+     */
+    public void setFontInfo(FontInfo fontInfo){
+        this.fontInfo = fontInfo;
+        return;
+    }
+
+    /**
+     * プロクシ設定を返す。
+     * @return プロクシ設定
+     */
+    public ProxyInfo getProxyInfo(){
+        return this.proxyInfo;
+    }
+
+    /**
+     * プロクシ設定を更新する。
+     * @param proxyInfo プロクシ設定。nullならプロクシなしと解釈される。
+     */
+    public void setProxyInfo(ProxyInfo proxyInfo){
+        if(proxyInfo == null) this.proxyInfo = ProxyInfo.DEFAULT;
+        else                  this.proxyInfo = proxyInfo;
+        return;
+    }
+
+    /**
+     * 発言表示設定を返す。
+     * @return 表示設定
+     */
+    public DialogPref getDialogPref(){
+        return this.dialogPref;
+    }
+
+    /**
+     * 発言表示設定を返す。
+     * @param pref 表示設定
+     */
+    public void setDialogPref(DialogPref pref){
+        if(pref == null) this.dialogPref = new DialogPref();
+        else             this.dialogPref = pref;
+        return;
+    }
+
+    /**
+     * ネットワーク設定をロードする。
+     */
+    private void loadNetConfig(){
+        if( ! useConfigPath() ) return;
+
+        JsValue value = ConfigFile.loadJson(new File(NETCONFIG_FILE));
+        if(value == null) return;
+        this.loadedNetConfig = value;
+
+        if( ! (value instanceof JsObject) ) return;
+        JsObject root = (JsObject) value;
+
+        value = root.getValue(HASH_PROXY);
+        if( ! (value instanceof JsObject) ) return;
+        JsObject proxy = (JsObject) value;
+
+        ProxyInfo info = ProxyInfo.decodeJson(proxy);
+
+        setProxyInfo(info);
+
+        return;
+    }
+
+    /**
+     * 会話表示設定をロードする。
+     */
+    private void loadTalkConfig(){
+        if( ! useConfigPath() ) return;
+
+        JsValue value = ConfigFile.loadJson(new File(TALKCONFIG_FILE));
+        if(value == null) return;
+        this.loadedTalkConfig = value;
+
+        if( ! (value instanceof JsObject) ) return;
+        JsObject root = (JsObject) value;
+
+        value = root.getValue(HASH_FONT);
+        if(value instanceof JsObject){
+            JsObject font = (JsObject) value;
+            FontInfo info = FontInfo.decodeJson(font);
+            setFontInfo(info);
+            applyFontSetting();
+        }
+
+        DialogPref pref = new DialogPref();
+        JsBoolean boolValue;
+        value = root.getValue(HASH_USEBODYICON);
+        if(value instanceof JsBoolean){
+            boolValue = (JsBoolean) value;
+            pref.setBodyImageSetting(boolValue.booleanValue());
+        }
+        value = root.getValue(HASH_USEMONOTOMB);
+        if(value instanceof JsBoolean){
+            boolValue = (JsBoolean) value;
+            pref.setMonoImageSetting(boolValue.booleanValue());
+        }
+        value = root.getValue(HASH_SIMPLEMODE);
+        if(value instanceof JsBoolean){
+            boolValue = (JsBoolean) value;
+            pref.setSimpleMode(boolValue.booleanValue());
+        }
+        value = root.getValue(HASH_ALIGNBALOON);
+        if(value instanceof JsBoolean){
+            boolValue = (JsBoolean) value;
+            pref.setAlignBalooonWidthSetting(boolValue.booleanValue());
+        }
+        setDialogPref(pref);
+
+        return;
+    }
+
+    /**
+     * ネットワーク設定をセーブする。
+     */
+    private void saveNetConfig(){
+        if( ! useConfigPath() ) return;
+
+        JsObject root = new JsObject();
+        JsObject proxy = ProxyInfo.buildJson(getProxyInfo());
+        root.putValue(HASH_PROXY, proxy);
+
+        if(this.loadedNetConfig != null){
+            if(this.loadedNetConfig.equals(root)) return;
+        }
+
+        ConfigFile.saveJson(new File(NETCONFIG_FILE), root);
+
+        return;
+    }
+
+    /**
+     * 会話表示設定をセーブする。
+     */
+    private void saveTalkConfig(){
+        if( ! useConfigPath() ) return;
+
+        JsObject root = new JsObject();
+
+        JsObject font = FontInfo.buildJson(getFontInfo());
+        root.putValue(HASH_FONT, font);
+
+        DialogPref pref = getDialogPref();
+        JsPair useBodyIcon =
+                new JsPair(HASH_USEBODYICON, pref.useBodyImage());
+        JsPair useMonoTomb =
+                new JsPair(HASH_USEMONOTOMB, pref.useMonoImage());
+        JsPair isSimple =
+                new JsPair(HASH_SIMPLEMODE, pref.isSimpleMode());
+        JsPair alignBaloon =
+                new JsPair(HASH_ALIGNBALOON, pref.alignBaloonWidth());
+        root.putPair(useBodyIcon);
+        root.putPair(useMonoTomb);
+        root.putPair(isSimple);
+        root.putPair(alignBaloon);
+
+        if(this.loadedTalkConfig != null){
+            if(this.loadedTalkConfig.equals(root)) return;
+        }
+
+        ConfigFile.saveJson(new File(TALKCONFIG_FILE), root);
+
+        return;
+    }
+
+    /**
+     * 各種設定を設定格納ディレクトリからロードする。
+     */
+    public void loadConfig(){
+        loadNetConfig();
+        loadTalkConfig();
+        return;
+    }
+
+    /**
+     * 各種設定を設定格納ディレクトリへセーブする。
+     */
+    public void saveConfig(){
+        saveNetConfig();
+        saveTalkConfig();
+        return;
+    }
+
+}