\r
package jp.sourceforge.jindolf;\r
\r
+import java.io.IOException;\r
+import java.net.URISyntaxException;\r
import java.util.ArrayList;\r
import java.util.Collections;\r
import java.util.HashMap;\r
import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
import javax.xml.parsers.DocumentBuilder;\r
+import javax.xml.parsers.ParserConfigurationException;\r
import jp.sourceforge.jindolf.corelib.PreDefAvatar;\r
+import org.xml.sax.SAXException;\r
\r
/**\r
* Avatar またの名をキャラクター。\r
try{\r
DocumentBuilder builder = XmlUtils.createDocumentBuilder();\r
predefs = PreDefAvatar.buildPreDefAvatarList(builder);\r
- }catch(RuntimeException e){\r
- throw e;\r
- }catch(Exception e){\r
+ }catch(IOException e){\r
+ throw new ExceptionInInitializerError(e);\r
+ }catch(ParserConfigurationException e){\r
+ throw new ExceptionInInitializerError(e);\r
+ }catch(SAXException e){\r
+ throw new ExceptionInInitializerError(e);\r
+ }catch(URISyntaxException e){\r
throw new ExceptionInInitializerError(e);\r
}\r
\r
import java.io.File;\r
import java.io.IOException;\r
import java.io.UnsupportedEncodingException;\r
+import java.lang.reflect.InvocationTargetException;\r
import java.net.URL;\r
import java.net.URLEncoder;\r
import java.util.HashMap;\r
}\r
\r
/**\r
+ * 例外発生による警告ダイアログへの反応を促す。\r
+ * @param title タイトル文字列\r
+ * @param message メッセージ\r
+ * @param e 例外\r
+ */\r
+ private void warnDialog(String title, String message, Throwable e){\r
+ Jindolf.logger().warn(message, e);\r
+ JOptionPane.showMessageDialog(\r
+ this.topFrame,\r
+ message,\r
+ title + " - " + Jindolf.TITLE,\r
+ JOptionPane.WARNING_MESSAGE );\r
+ return;\r
+ }\r
+\r
+ /**\r
* L&Fの変更を行う。\r
*/\r
- // TODO Nimbus対応\r
private void actionChangeLaF(){\r
String className = this.actionManager.getSelectedLookAndFeel();\r
\r
+ String warnTitle = "Look&Feel";\r
+ String warnMsg;\r
+\r
+ Class<?> lnfClass;\r
+ warnMsg = "このLook&Feel[" + className + "]を読み込む事ができません。";\r
+ try{\r
+ lnfClass = Class.forName(className);\r
+ }catch(ClassNotFoundException e){\r
+ warnDialog(warnTitle, warnMsg, e);\r
+ return;\r
+ }\r
+\r
LookAndFeel lnf;\r
+ warnMsg = "このLook&Feel[" + className + "]を生成する事ができません。";\r
try{\r
- Class<?> lnfClass = Class.forName(className);\r
lnf = (LookAndFeel)( lnfClass.newInstance() );\r
- }catch(Exception e){\r
- String message = "このLook&Feel["\r
- + className\r
- + "]を読み込む事ができません。";\r
- Jindolf.logger().warn(message, e);\r
- JOptionPane.showMessageDialog(\r
- this.topFrame,\r
- message,\r
- "Look&Feel - " + Jindolf.TITLE,\r
- JOptionPane.WARNING_MESSAGE );\r
+ }catch(InstantiationException e){\r
+ warnDialog(warnTitle, warnMsg, e);\r
+ return;\r
+ }catch(IllegalAccessException e){\r
+ warnDialog(warnTitle, warnMsg, e);\r
+ return;\r
+ }catch(ClassCastException e){\r
+ warnDialog(warnTitle, warnMsg, e);\r
return;\r
}\r
\r
+ warnMsg = "このLook&Feel[" + lnf.getName() + "]はサポートされていません。";\r
try{\r
UIManager.setLookAndFeel(lnf);\r
}catch(UnsupportedLookAndFeelException e){\r
- String message = "このLook&Feel["\r
- + lnf.getName()\r
- + "]はサポートされていません。";\r
- Jindolf.logger().warn(message, e);\r
- JOptionPane.showMessageDialog(\r
- this.topFrame,\r
- message,\r
- "Look&Feel - " + Jindolf.TITLE,\r
- JOptionPane.WARNING_MESSAGE );\r
+ warnDialog(warnTitle, warnMsg, e);\r
return;\r
}\r
\r
updateStatusBar("Look&Feelを更新中…");\r
try{\r
SwingUtilities.invokeAndWait(updateUITask);\r
- }catch(Exception e){\r
+ }catch(InvocationTargetException e){\r
+ Jindolf.logger().warn(\r
+ "Look&Feelの更新に失敗しました。", e);\r
+ }catch(InterruptedException e){\r
Jindolf.logger().warn(\r
"Look&Feelの更新に失敗しました。", e);\r
}finally{\r
return;\r
}\r
});\r
- }catch(Exception e){\r
+ }catch(InvocationTargetException e){\r
+ Jindolf.logger().fatal(\r
+ "タブ操作で致命的な障害が発生しました", e);\r
+ }catch(InterruptedException e){\r
Jindolf.logger().fatal(\r
"タブ操作で致命的な障害が発生しました", e);\r
}\r
return;\r
}\r
});\r
- }catch(Exception e){\r
+ }catch(InvocationTargetException e){\r
+ Jindolf.logger().fatal(\r
+ "ブラウザ表示で致命的な障害が発生しました", e);\r
+ }catch(InterruptedException e){\r
Jindolf.logger().fatal(\r
"ブラウザ表示で致命的な障害が発生しました", e);\r
}\r
}else{\r
try{\r
SwingUtilities.invokeAndWait(microJob);\r
- }catch(Exception e){\r
+ }catch(InvocationTargetException e){\r
+ Jindolf.logger().fatal("ビジー処理で失敗", e);\r
+ }catch(InterruptedException e){\r
Jindolf.logger().fatal("ビジー処理で失敗", e);\r
}\r
}\r