1 31 32 package org.antlr.xjlib.appkit.app.MacOS; 33 34 import com.apple.eawt.Application; 35 import com.apple.eawt.ApplicationEvent; 36 import org.antlr.xjlib.appkit.app.XJApplication; 37 import org.antlr.xjlib.appkit.menu.XJMainMenuBar; 38 import org.antlr.xjlib.appkit.menu.XJMenu; 39 import org.antlr.xjlib.appkit.menu.XJMenuBarDelegate; 40 import org.antlr.xjlib.appkit.menu.XJMenuItem; 41 import org.antlr.xjlib.appkit.utils.XJLocalizable; 42 43 import javax.swing.*; 44 45 public class XJApplicationMacOS extends XJApplication implements XJMenuBarDelegate { 46 47 protected JFrame invisibleFrame = null; 48 protected XJMainMenuBar mainMenuBar = null; 49 50 public XJApplicationMacOS() { 51 52 System.setProperty("apple.laf.useScreenMenuBar","true"); 53 54 Application.getApplication().addApplicationListener(new com.apple.eawt.ApplicationAdapter() { 55 public void handleAbout(ApplicationEvent e) { 56 displayAbout(); 57 e.setHandled(true); 58 } 59 60 public void handleOpenApplication(ApplicationEvent e) { 61 } 62 63 public void handleOpenFile(ApplicationEvent e) { 64 openDocument(e.getFilename()); 65 } 66 67 public void handlePreferences(ApplicationEvent e) { 68 performPreferences(); 69 } 70 71 public void handlePrintFile(ApplicationEvent e) { 72 } 73 74 public void handleQuit(ApplicationEvent e) { 75 performQuit(); 76 } 77 }); 78 } 79 80 protected void startup() { 81 super.startup(); 82 createFramelessMenuBar(); 83 } 84 85 protected void addPreferencesMenuItem() { 86 Application.getApplication().addPreferencesMenuItem(); 87 Application.getApplication().setEnabledPreferencesMenu(true); 88 } 89 90 protected void removePreferencesMenuItem() { 91 Application.getApplication().removePreferencesMenuItem(); 92 } 93 94 private void createFramelessMenuBar() { 95 invisibleFrame = new JFrame(); 96 invisibleFrame.setUndecorated(true); 97 98 mainMenuBar = XJMainMenuBar.createInstance(); 99 mainMenuBar.createMenuBar(); 100 mainMenuBar.setDelegate(this); 101 mainMenuBar.refreshState(); 102 invisibleFrame.setJMenuBar(mainMenuBar.getJMenuBar()); 103 104 invisibleFrame.setLocation(0, 0); 105 invisibleFrame.setSize(0, 0); 106 invisibleFrame.pack(); 107 invisibleFrame.setVisible(true); 108 } 109 110 public void menuItemState(XJMenuItem item) { 111 int tag = item.getTag(); 112 switch(tag) { 113 case XJMainMenuBar.MI_NEW: 114 item.setTitle(XJLocalizable.getXJString("New")+((XJApplication.shared().getDocumentExtensions().size()>1)?"...":"")); 115 116 case XJMainMenuBar.MI_OPEN: 117 case XJMainMenuBar.MI_RECENT_FILES: 118 case XJMainMenuBar.MI_CLEAR_RECENT_FILES: 119 item.setEnabled(true); 120 break; 121 122 default: 123 if(XJMainMenuBar.isRecentFilesItem(item)) 124 item.setEnabled(true); 125 else 126 item.setEnabled(false); 127 break; 128 } 129 } 130 131 public void handleMenuEvent(XJMenu menu, XJMenuItem item) { 132 133 } 134 135 public void handleMenuSelected(XJMenu menu) { 136 137 } 138 139 } 140 | Popular Tags |