1/* 2 * Copyright (c) 2000, 2008, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 26package com.sun.java.swing.ui; 27 28import com.sun.java.swing.action.ActionManager; 29import com.sun.java.swing.action.StateChangeAction; 30import javax.swing.*; 31 32// Referenced classes of package com.sun.java.swing.ui: 33// ToggleActionPropertyChangeListener, StatusBar 34 35public 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} 109