]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/richtext/awtui/AwtMenuFactory.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / richtext / awtui / AwtMenuFactory.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.awtui;\r
14 \r
15 import java.awt.CheckboxMenuItem;\r
16 import java.awt.Menu;\r
17 import java.awt.MenuItem;\r
18 import java.awt.MenuShortcut;\r
19 \r
20 import java.awt.event.ActionEvent;\r
21 import java.awt.event.ActionListener;\r
22 import java.awt.event.ItemEvent;\r
23 import java.awt.event.ItemListener;\r
24 \r
25 import com.ibm.richtext.uiimpl.resources.MenuData;\r
26 import com.ibm.richtext.uiimpl.MItem;\r
27 import com.ibm.richtext.uiimpl.MItem.ItemFactory;\r
28 \r
29 final class AwtMenuFactory implements ItemFactory {\r
30         \r
31     static final String COPYRIGHT =\r
32                 "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";\r
33     private final class AwtMItem extends MItem {\r
34         \r
35         private MenuItem fItem;\r
36         \r
37         AwtMItem(MenuItem item) {\r
38             \r
39             fItem = item;\r
40             try {\r
41                 CheckboxMenuItem chItem = (CheckboxMenuItem) fItem;\r
42                 chItem.addItemListener(new ItemListener() {\r
43                     public void itemStateChanged(ItemEvent e) {\r
44                         handleSelected();\r
45                     }\r
46                 });\r
47             }\r
48             catch(ClassCastException e) {\r
49                 item.addActionListener(new ActionListener() {\r
50                     public void actionPerformed(ActionEvent evt) {\r
51                         handleSelected();\r
52                     }\r
53                 });\r
54             }\r
55         }\r
56         \r
57         // Ack - how do you do this from inner classes??\r
58         protected void handleSelected() {\r
59             \r
60             super.handleSelected();\r
61         }\r
62         \r
63         public final void setEnabled(boolean enabled) {\r
64             \r
65             fItem.setEnabled(enabled);\r
66         }\r
67         \r
68         public void setState(boolean checked) {\r
69             \r
70             try {\r
71                 CheckboxMenuItem item = (CheckboxMenuItem) fItem;\r
72                 item.setState(checked);\r
73             }\r
74             catch(ClassCastException e) {\r
75                 throw new Error("Cannot perform setChecked on non-checkbox item");\r
76             }\r
77         }\r
78     }\r
79     \r
80     private Menu fMenu;\r
81         \r
82     AwtMenuFactory(Menu menu) {\r
83             \r
84         fMenu = menu;\r
85     }\r
86     \r
87     private MItem handleCreate(MenuItem item,\r
88                                MenuData menuData) {\r
89 \r
90         if (menuData.hasShortcut()) {\r
91             item.setShortcut(new MenuShortcut(menuData.getShortcutChar()));\r
92         }\r
93         \r
94         fMenu.add(item);\r
95         \r
96         return new AwtMItem(item);\r
97     }\r
98         \r
99     public MItem createItem(MenuData menuData) {\r
100         \r
101         return handleCreate(new MenuItem(menuData.getName()), menuData);\r
102     }        \r
103 \r
104     public MItem createCheckboxItem(MenuData menuData) {\r
105         \r
106         return handleCreate(new CheckboxMenuItem(menuData.getName()), menuData);\r
107     }\r
108     \r
109     public void createSeparator() {\r
110         \r
111         fMenu.add(new MenuItem("-"));\r
112     }\r
113 }\r
114     \r