-/*\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;
+ }
+
+}