]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/richtext/swingui/SwingMenuFactory.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / richtext / swingui / SwingMenuFactory.java
1 /*\r
2  * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.\r
3  *\r
4  * The program is provided "as is" without any warranty express or\r
5  * implied, including the warranty of non-infringement and the implied\r
6  * warranties of merchantibility and fitness for a particular purpose.\r
7  * IBM will not be liable for any damages suffered by you as a result\r
8  * of using the Program. In no event will IBM be liable for any\r
9  * special, indirect or consequential damages or lost profits even if\r
10  * IBM has been advised of the possibility of their occurrence. IBM\r
11  * will not be liable for any third party claims against you.\r
12  */\r
13 package com.ibm.richtext.swingui;\r
14 \r
15 import java.awt.Event;\r
16 \r
17 import javax.swing.JCheckBoxMenuItem;\r
18 import javax.swing.JMenu;\r
19 import javax.swing.JMenuItem;\r
20 import javax.swing.JSeparator;\r
21 import javax.swing.KeyStroke;\r
22 \r
23 import java.awt.event.ActionEvent;\r
24 import java.awt.event.ActionListener;\r
25 \r
26 import com.ibm.richtext.uiimpl.resources.MenuData;\r
27 import com.ibm.richtext.uiimpl.MItem;\r
28 import com.ibm.richtext.uiimpl.MItem.ItemFactory;\r
29 \r
30 final class SwingMenuFactory implements ItemFactory {\r
31         \r
32     static final String COPYRIGHT =\r
33                 "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";\r
34     private final class SwingMItem extends MItem {\r
35         \r
36         private JMenuItem fItem;\r
37         \r
38         SwingMItem(JMenuItem item) {\r
39             \r
40             fItem = item;\r
41             item.addActionListener(new ActionListener() {\r
42                 public void actionPerformed(ActionEvent e) {\r
43                     handleSelected();\r
44                 }\r
45             });\r
46         }\r
47         \r
48         protected void handleSelected() {\r
49             \r
50             super.handleSelected();\r
51         }\r
52         \r
53         public final void setEnabled(boolean enabled) {\r
54             \r
55             fItem.setEnabled(enabled);\r
56         }\r
57         \r
58         public void setState(boolean checked) {\r
59             \r
60             try {\r
61                 JCheckBoxMenuItem item = (JCheckBoxMenuItem) fItem;\r
62                 item.setState(checked);\r
63             }\r
64             catch(ClassCastException e) {\r
65                 throw new Error("Cannot perform setChecked on non-checkbox item");\r
66             }\r
67         }\r
68     }\r
69     \r
70     private JMenu fMenu;\r
71         \r
72     SwingMenuFactory(JMenu menu) {\r
73             \r
74         fMenu = menu;\r
75     }\r
76     \r
77     private MItem handleCreate(JMenuItem item,\r
78                                MenuData menuData) {\r
79 \r
80         if (menuData.hasShortcut()) {\r
81             KeyStroke ks = KeyStroke.getKeyStroke(menuData.getShortcutKeyCode(),\r
82                                                   Event.CTRL_MASK);\r
83             item.setAccelerator(ks);\r
84         }\r
85         \r
86         fMenu.add(item);\r
87         \r
88         return new SwingMItem(item);\r
89     }\r
90         \r
91     public MItem createItem(MenuData menuData) {\r
92         \r
93         return handleCreate(new JMenuItem(menuData.getName()), menuData);\r
94     }        \r
95 \r
96     public MItem createCheckboxItem(MenuData menuData) {\r
97         \r
98         return handleCreate(new JCheckBoxMenuItem(menuData.getName()), menuData);\r
99     }\r
100     \r
101     public void createSeparator() {\r
102         \r
103         fMenu.add(new JSeparator());\r
104     }\r
105 }\r