1 /* 2 * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 20 * CA 95054 USA or visit www.sun.com if you need additional information or 21 * have any questions. 22 * 23 */ 24 25 26 package com.sun.java.swing.ui; 27 28 import com.sun.java.swing.action.ActionManager; 29 import com.sun.java.swing.action.StateChangeAction; 30 import javax.swing.*; 31 32 // Referenced classes of package com.sun.java.swing.ui: 33 // ToggleActionPropertyChangeListener, StatusBar 34 35 public abstract class CommonMenuBar extends JMenuBar 36 { 37 38 protected CommonMenuBar(ActionManager manager) 39 { 40 this(manager, StatusBar.getInstance()); 41 } 42 43 protected CommonMenuBar(ActionManager manager, StatusBar status) 44 { 45 this.manager = manager; 46 statusBar = status; 47 configureMenu(); 48 } 49 50 protected abstract void configureMenu(); 51 52 protected void configureToggleMenuItem(JMenuItem menuItem, Action action) 53 { 54 configureMenuItem(menuItem, action); 55 action.addPropertyChangeListener(new ToggleActionPropertyChangeListener(menuItem)); 56 } 57 58 protected void configureMenuItem(JMenuItem menuItem, Action action) 59 { 60 menuItem.addMouseListener(statusBar); 61 } 62 63 protected JMenu createMenu(String name, char mnemonic) 64 { 65 JMenu menu = new JMenu(name); 66 menu.setMnemonic(mnemonic); 67 return menu; 68 } 69 70 protected void addMenuItem(JMenu menu, Action action) 71 { 72 JMenuItem menuItem = menu.add(action); 73 configureMenuItem(menuItem, action); 74 } 75 76 protected void addCheckBoxMenuItem(JMenu menu, StateChangeAction a) 77 { 78 addCheckBoxMenuItem(menu, a, false); 79 } 80 81 protected void addCheckBoxMenuItem(JMenu menu, StateChangeAction a, boolean selected) 82 { 83 JCheckBoxMenuItem mi = new JCheckBoxMenuItem(a); 84 mi.addItemListener(a); 85 mi.setSelected(selected); 86 menu.add(mi); 87 configureToggleMenuItem(mi, a); 88 } 89 90 protected void addRadioButtonMenuItem(JMenu menu, ButtonGroup group, StateChangeAction a) 91 { 92 addRadioButtonMenuItem(menu, group, a, false); 93 } 94 95 protected void addRadioButtonMenuItem(JMenu menu, ButtonGroup group, StateChangeAction a, boolean selected) 96 { 97 JRadioButtonMenuItem mi = new JRadioButtonMenuItem(a); 98 mi.addItemListener(a); 99 mi.setSelected(selected); 100 menu.add(mi); 101 if(group != null) 102 group.add(mi); 103 configureToggleMenuItem(mi, a); 104 } 105 106 protected ActionManager manager; 107 private StatusBar statusBar; 108 }