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