Source code: com/virtuosotechnologies/lib/basiccommand/builder/MenuToggleItemBuilderNode.java
1 /*
2 ================================================================================
3
4 FILE: MenuToggleItemBuilderNode.java
5
6 PROJECT:
7
8 Virtuoso Utilities
9
10 CONTENTS:
11
12 A builder that creates a special toggle menu item that isn't a
13 checkbox but instead changes its icon and/or name.
14
15 PROGRAMMERS:
16
17 Daniel Azuma (DA) <dazuma@kagi.com>
18
19 COPYRIGHT:
20
21 Copyright (C) 2003 Daniel Azuma (dazuma@kagi.com)
22
23 This program is free software; you can redistribute it and/or
24 modify it under the terms of the GNU General Public License as
25 published by the Free Software Foundation; either version 2
26 of the License, or (at your option) any later version.
27
28 This program is distributed in the hope that it will be useful,
29 but WITHOUT ANY WARRANTY; without even the implied warranty of
30 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31 GNU General Public License for more details.
32
33 You should have received a copy of the GNU General Public
34 License along with this program; if not, write to
35 Free Software Foundation, Inc.
36 59 Temple Place, Suite 330
37 Boston, MA 02111-1307 USA
38
39 ================================================================================
40 */
41
42
43 package com.virtuosotechnologies.lib.basiccommand.builder;
44
45
46 import javax.swing.JMenuItem;
47 import java.awt.event.ActionListener;
48 import java.awt.event.ActionEvent;
49
50 import com.virtuosotechnologies.lib.command.CommandNode;
51 import com.virtuosotechnologies.lib.basiccommand.BasicCommandNode;
52
53
54 /**
55 * A builder that creates a special toggle menu item that isn't a checkbox
56 * but instead changes its icon and/or name.
57 */
58 public class MenuToggleItemBuilderNode
59 extends AbstractSwingButtonBuilderNode
60 implements
61 ActionListener
62 {
63 /**
64 * Constructor
65 */
66 protected MenuToggleItemBuilderNode(
67 CommandNode commandNode,
68 AbstractBranchBuilderNode parent,
69 int index)
70 {
71 super(commandNode, parent, index);
72 }
73
74
75 /**
76 * Override this method to create the initial element object.
77 */
78 protected Object createInitialElement()
79 {
80 JMenuItem menuItem = new JMenuItem();
81 menuItem.addActionListener(this);
82 return menuItem;
83 }
84
85
86 /**
87 * Action listener that changes the state.
88 */
89 public void actionPerformed(
90 ActionEvent ev)
91 {
92 CommandNode node = getCommandNode();
93 boolean oldValue = Boolean.TRUE.equals(node.getValue(
94 BasicCommandNode.SELECTION_STATE_PROPERTY));
95 if (getParent().getCommandNode().getFlavor().equalsOrExtends(
96 BasicCommandNode.RADIOMUTEX_FLAVOR))
97 {
98 if (!oldValue)
99 {
100 node.putValue(BasicCommandNode.SELECTION_STATE_PROPERTY, Boolean.TRUE);
101 }
102 }
103 else
104 {
105 node.putValue(BasicCommandNode.SELECTION_STATE_PROPERTY,
106 oldValue ? Boolean.FALSE : Boolean.TRUE);
107 }
108 }
109 }