1 package charactermanaj.ui;
4 import java.awt.image.BufferedImage;
5 import java.lang.reflect.Method;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
9 import com.apple.eawt.Application;
10 import com.apple.eawt.ApplicationAdapter;
11 import com.apple.eawt.ApplicationEvent;
13 import charactermanaj.util.SystemUtil;
14 import charactermanaj.util.UIHelper;
17 * Mac OS X用のメインフレームサポートクラス.<br>
18 * スクリーンメニューのハンドラなどを接続している.<br>
22 public class MainFramePartialForMacOSX {
27 private static final Logger logger = Logger.getLogger(MainFramePartialForMacOSX.class.getName());
29 private MainFramePartialForMacOSX() {
33 public static void setupScreenMenu(final MainFrame mainFrame) {
34 if (mainFrame == null) {
35 throw new IllegalArgumentException();
38 Application app = Application.getApplication();
40 app.setEnabledAboutMenu(true);
41 app.setEnabledPreferencesMenu(true);
43 ApplicationAdapter listener = new ApplicationAdapter() {
44 public void handleAbout(ApplicationEvent arg0) {
45 if (MainFrame.getActivedMainFrame() != null) {
46 MainFrame.getActivedMainFrame().onAbout();
48 arg0.setHandled(true);
50 public void handleQuit(ApplicationEvent arg0) {
51 if (MainFrame.getActivedMainFrame() != null) {
52 MainFrame.closeAllProfiles();
54 arg0.setHandled(true);
55 // JVMを明示的にシャットダウンする. (何もしないと強制終了になるため。)
58 public void handlePreferences(ApplicationEvent arg0) {
59 if (MainFrame.getActivedMainFrame() != null) {
60 MainFrame.getActivedMainFrame().onPreferences();
62 arg0.setHandled(true);
65 app.addApplicationListener(listener);
68 public static void setupDockIcon() {
70 Application app = Application.getApplication();
71 Class<?> clz = app.getClass();
73 BufferedImage icon = UIHelper.getInstance().getImage("icons/icon.png");
75 Method mtd = clz.getMethod("setDockIconImage", new Class[] {Image.class});
76 mtd.invoke(app, new Object[] { icon });
78 } catch (NoSuchMethodException ex) {
79 // メソッドがない = Tiger以前の失敗であろうから、単に無視するだけで良い.
80 logger.log(Level.CONFIG, "dockIcon not supported.", ex);
82 } catch (Exception ex) {
83 // 実行時の失敗だが、DockIconが設定できないだけなので継続する.
84 logger.log(Level.WARNING, "dockIcon failed.", ex);