1 /* 2 * File: FrameMenus.java 3 * 4 * This applet/application demonstrates the following classes: 5 * TextArea, Frame, MenuBar, Menu, MenuItem, CheckboxMenuItem, 6 * and MenuShortcut. 7 * 8 * Note that MenuItems generate ActionEvents, while CheckboxMenuItems 9 * generate ItemEvents. 10 * 11 */ 12 13 import java.applet.Applet; 14 import java.awt.*; 15 import java.awt.event.*; 16 17 public class FrameMenus extends Applet implements ActionListener { 18 19 private Button button; 20 21 public void init() { 22 button = new Button( "New Web Browser" ); 23 add( button ); 24 button.addActionListener( this ); 25 } 26 27 public void actionPerformed( ActionEvent e ) { 28 new NewWebBrowser(); 29 } 30 31 // This applet also runs as an application: 32 public static void main( String[] args ) { 33 new NewWebBrowser(); 34 } 35 36 } 37 38 // Simulate a Netscape web browser window: 39 class NewWebBrowser extends Frame { 40 41 protected static int num_windows = 0; // number of open windows 42 43 String ellipsis = "..."; // ellipsis for menu items 44 // char ellipsis = '\u2026'; // Why doesn't this work? 45 46 // GUI components: 47 MenuBar menubar; 48 TextArea textarea; 49 50 // Constructor: 51 public NewWebBrowser() { 52 53 // Invoke the constructor of the superclass: 54 super( "Web Browser" ); 55 56 num_windows++; // update window counter 57 58 // Set frame parameters: 59 setSize( 700, 800 ); 60 setFont( new Font( "SansSerif", Font.BOLD, 12 ) ); 61 62 textarea = new TextArea(); 63 add( textarea, BorderLayout.CENTER ); 64 textarea.setFont( new Font( "Monospaced", Font.BOLD, 10 ) ); 65 66 menubar = new MenuBar(); 67 menubar.add( new FileMenu() ); 68 menubar.add( new EditMenu() ); 69 menubar.add( new ViewMenu() ); 70 menubar.add( new GoMenu() ); 71 menubar.add( new BookmarksMenu() ); 72 menubar.add( new OptionsMenu() ); 73 menubar.add( new DirectoryMenu() ); 74 menubar.add( new WindowMenu() ); 75 menubar.setHelpMenu( new HelpMenu() ); // the Help menu is special 76 77 setMenuBar( menubar ); 78 setVisible( true ); 79 } 80 81 class FileMenu extends Menu implements ActionListener { 82 83 // Menu item names: 84 MenuItem newWebBrowserItem, 85 newMailMessageItem, 86 mailDocumentItem, 87 openLocationItem, 88 openFileItem, 89 saveAsItem, 90 uploadFileItem, 91 printItem, 92 closeItem, 93 exitItem; 94 95 // Menu constructor: 96 public FileMenu() { 97 98 // Invoke the constructor of the superclass: 99 super( "File" ); 100 101 // Menu items with shortcuts: 102 newWebBrowserItem 103 = new MenuItem( "New Web Browser", 104 new MenuShortcut( KeyEvent.VK_N ) ); 105 newMailMessageItem 106 = new MenuItem( "New Mail Message", 107 new MenuShortcut( KeyEvent.VK_M ) ); 108 mailDocumentItem 109 = new MenuItem( "Mail Document" ); 110 111 openLocationItem 112 = new MenuItem( "Open Location" + ellipsis, 113 new MenuShortcut( KeyEvent.VK_L ) ); 114 openFileItem 115 = new MenuItem( "Open File" + ellipsis, 116 new MenuShortcut( KeyEvent.VK_O ) ); 117 saveAsItem 118 = new MenuItem( "Save As" + ellipsis, 119 new MenuShortcut( KeyEvent.VK_S ) ); 120 uploadFileItem 121 = new MenuItem( "Upload File" + ellipsis ); 122 123 printItem 124 = new MenuItem( "Print" + ellipsis, 125 new MenuShortcut( KeyEvent.VK_P ) ); 126 closeItem 127 = new MenuItem( "Close", 128 new MenuShortcut( KeyEvent.VK_W ) ); 129 exitItem 130 = new MenuItem( "Exit", 131 new MenuShortcut( KeyEvent.VK_Q ) ); 132 133 // Build the menu: 134 add( newWebBrowserItem ); 135 add( newMailMessageItem ); 136 add( mailDocumentItem ); 137 addSeparator(); 138 add( openLocationItem ); 139 add( openFileItem ); 140 add( saveAsItem ); 141 add( uploadFileItem ); 142 addSeparator(); 143 add( printItem ); 144 addSeparator(); 145 add( closeItem ); 146 add( exitItem ); 147 148 // Disable menu item(s): 149 uploadFileItem.setEnabled( false ); 150 151 // Listen for ActionEvents generated by menu items: 152 newWebBrowserItem.addActionListener( this ); 153 exitItem.addActionListener( this ); 154 } 155 156 // ActionEvent handler: 157 public void actionPerformed( ActionEvent e ) { 158 159 // File:New 160 if ( e.getSource() == newWebBrowserItem ) { 161 new NewWebBrowser(); 162 163 // File:Exit 164 } else if ( e.getSource() == exitItem ) { 165 setVisible( false ); 166 dispose(); 167 if ( --num_windows == 0 ) { 168 // System.exit(0); 169 } 170 } 171 } 172 173 } 174 175 class EditMenu extends Menu implements ActionListener { 176 177 // Menu constructor: 178 public EditMenu() { 179 180 // Invoke the constructor of the superclass: 181 super( "Edit" ); 182 183 } 184 185 // ActionEvent handler: 186 public void actionPerformed( ActionEvent e ) { 187 } 188 189 } 190 191 class ViewMenu extends Menu implements ActionListener { 192 193 // Menu constructor: 194 public ViewMenu() { 195 196 // Invoke the constructor of the superclass: 197 super( "View" ); 198 199 } 200 201 // ActionEvent handler: 202 public void actionPerformed( ActionEvent e ) { 203 } 204 205 } 206 207 class GoMenu extends Menu implements ActionListener { 208 209 // Menu constructor: 210 public GoMenu() { 211 212 // Invoke the constructor of the superclass: 213 super( "Go" ); 214 215 } 216 217 // ActionEvent handler: 218 public void actionPerformed( ActionEvent e ) { 219 } 220 221 } 222 223 class BookmarksMenu extends Menu implements ActionListener { 224 225 // Menu constructor: 226 public BookmarksMenu() { 227 228 // Invoke the constructor of the superclass: 229 super( "Bookmarks" ); 230 231 } 232 233 // ActionEvent handler: 234 public void actionPerformed( ActionEvent e ) { 235 } 236 237 } 238 239 class OptionsMenu extends Menu implements ActionListener { 240 241 // Menu item names: 242 MenuItem generalPrefs, 243 mailAndNewsPrefs, 244 networkPrefs, 245 securityPrefs; 246 247 // Checkable menu item names: 248 CheckboxMenuItem showMenubarItem, 249 showToolbarItem, 250 showLocationItem, 251 showDirectoryButtonsItem, 252 showJavaConsoleItem; 253 254 // Menu constructor: 255 public OptionsMenu() { 256 257 // Invoke the constructor of the superclass: 258 super( "Options" ); 259 260 // Menu items: 261 generalPrefs = new MenuItem( "General Preferences" + ellipsis ); 262 mailAndNewsPrefs = new MenuItem( "Mail and News Preferences" + ellipsis ); 263 networkPrefs = new MenuItem( "Network Preferences" + ellipsis ); 264 securityPrefs = new MenuItem( "Security Preferences" + ellipsis ); 265 266 // Checkable menu items: 267 showMenubarItem = new CheckboxMenuItem( "Show Menubar" ); 268 showMenubarItem.setState( true ); // checked by default 269 showToolbarItem = new CheckboxMenuItem( "Show Toolbar" ); 270 showLocationItem = new CheckboxMenuItem( "Show Location" ); 271 showDirectoryButtonsItem = new CheckboxMenuItem( "Show Directory Buttons" ); 272 showJavaConsoleItem = new CheckboxMenuItem( "Show Java Console" ); 273 274 // Build the menu: 275 add( generalPrefs ); 276 add( mailAndNewsPrefs ); 277 add( networkPrefs ); 278 add( securityPrefs ); 279 addSeparator(); 280 add( showMenubarItem ); 281 add( showToolbarItem ); 282 add( showLocationItem ); 283 add( showDirectoryButtonsItem ); 284 add( showJavaConsoleItem ); 285 addSeparator(); 286 add( new DocEncodingSubmenu() ); 287 288 } 289 290 // ActionEvent handler: 291 public void actionPerformed( ActionEvent e ) { 292 } 293 294 class DocEncodingSubmenu extends Menu implements ActionListener { 295 296 // Menu constructor: 297 public DocEncodingSubmenu() { 298 299 // Invoke the constructor of the superclass: 300 super( "Document Encoding" ); 301 302 // Build the menu: 303 add( new CheckboxMenuItem( "Western (Latin-1)", true ) ); 304 addSeparator(); 305 add( new CheckboxMenuItem( "Central European (Latin-2)" ) ); 306 addSeparator(); 307 add( new CheckboxMenuItem( "Japanese (Auto-Detect)" ) ); 308 add( new CheckboxMenuItem( "Japanese (Shift-JIS)" ) ); 309 add( new CheckboxMenuItem( "Japanese (EUC-JP)" ) ); 310 // (many more such items omitted) 311 312 } 313 314 // ActionEvent handler: 315 public void actionPerformed( ActionEvent e ) { 316 } 317 318 } 319 320 } 321 322 class DirectoryMenu extends Menu implements ActionListener { 323 324 // Menu constructor: 325 public DirectoryMenu() { 326 327 // Invoke the constructor of the superclass: 328 super( "Directory" ); 329 330 } 331 332 // ActionEvent handler: 333 public void actionPerformed( ActionEvent e ) { 334 } 335 336 } 337 338 class WindowMenu extends Menu implements ActionListener { 339 340 // Menu constructor: 341 public WindowMenu() { 342 343 // Invoke the constructor of the superclass: 344 super( "Window" ); 345 346 } 347 348 // ActionEvent handler: 349 public void actionPerformed( ActionEvent e ) { 350 } 351 352 } 353 354 class HelpMenu extends Menu implements ActionListener { 355 356 // Menu constructor: 357 public HelpMenu() { 358 359 // Invoke the constructor of the superclass: 360 super( "Help" ); 361 362 // Build the menu: 363 add( new MenuItem( "About Netscape" ) ); 364 add( new MenuItem( "About Plug-ins" ) ); 365 add( new MenuItem( "Registration Information" ) ); 366 add( new MenuItem( "Software" ) ); 367 addSeparator(); 368 add( new MenuItem( "Handbook" ) ); 369 370 } 371 372 // ActionEvent handler: 373 public void actionPerformed( ActionEvent e ) { 374 } 375 376 } 377 378 } 379