]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/richtext/uiimpl/CommandMenuItem.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / richtext / uiimpl / CommandMenuItem.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.uiimpl;\r
14 \r
15 import java.util.EventObject;\r
16 \r
17 import com.ibm.richtext.textpanel.MTextPanel;\r
18 import com.ibm.richtext.textpanel.TextPanelEvent;\r
19 import com.ibm.richtext.uiimpl.resources.MenuData;\r
20 \r
21 public abstract class CommandMenuItem extends MenuItemSet {\r
22     \r
23     static final String COPYRIGHT =\r
24                 "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";\r
25     private /*final*/ MItem fItem;\r
26     \r
27     protected abstract boolean isEnabled();\r
28     protected abstract void performAction();\r
29 \r
30     protected CommandMenuItem(MenuData data) {\r
31         \r
32         this(data, false);\r
33     }\r
34     \r
35     protected CommandMenuItem(MenuData data, boolean enableByDefault) {\r
36         \r
37         fItem = MItem.createItem(data);\r
38         fItem.addListener(new EventListener() {\r
39             public void eventOccurred(EventObject event) {\r
40                 performAction();\r
41             }\r
42         });\r
43         fItem.setEnabled(enableByDefault);\r
44     }\r
45     \r
46     protected void textPanelChanged() {\r
47         \r
48         MTextPanel textPanel = getTextPanel();\r
49         if (textPanel == null) {\r
50             fItem.setEnabled(false);\r
51         }\r
52         else {\r
53             fItem.setEnabled(isEnabled());\r
54         }\r
55     }\r
56     \r
57     public final void textEventOccurred(TextPanelEvent event) {\r
58         \r
59         fItem.setEnabled(isEnabled());\r
60     }\r
61     \r
62     public static final class CutCopyClear extends CommandMenuItem {\r
63         \r
64         public static final int CUT = 0;\r
65         public static final int COPY = 1;\r
66         public static final int CLEAR = 2;\r
67 \r
68         private final int fKind;\r
69         \r
70         public CutCopyClear(MenuData menuData, int kind) {\r
71             \r
72             super(menuData);\r
73             if (kind != CUT && kind != COPY && kind != CLEAR) {\r
74                 throw new IllegalArgumentException("Invalid menu kind");\r
75             }\r
76             fKind = kind;\r
77         }\r
78         \r
79         protected boolean isEnabled() {\r
80             \r
81             MTextPanel panel = getTextPanel();\r
82             return panel.getSelectionStart() != panel.getSelectionEnd();\r
83         }\r
84         \r
85         public boolean respondsToEventType(int type) {\r
86             \r
87             return type == TextPanelEvent.SELECTION_EMPTY_CHANGED;\r
88         }\r
89         \r
90         protected void performAction() {\r
91             \r
92             MTextPanel panel = getTextPanel();\r
93             switch (fKind) {\r
94                 case CUT:\r
95                     panel.cut();\r
96                     break;\r
97                 case COPY:\r
98                     panel.copy();\r
99                     break;\r
100                 case CLEAR:\r
101                     panel.clear();\r
102                     break;\r
103             }\r
104         }\r
105     }\r
106     \r
107     public static final class UndoRedo extends CommandMenuItem {\r
108         \r
109         public static final boolean UNDO = true;\r
110         public static final boolean REDO = false;\r
111         \r
112         private boolean fKind;\r
113         \r
114         public UndoRedo(MenuData menuData, boolean kind) {\r
115             \r
116             super(menuData);\r
117             fKind = kind;\r
118         }\r
119         \r
120         protected boolean isEnabled() {\r
121             \r
122             MTextPanel panel = getTextPanel();\r
123             if (fKind == UNDO) {\r
124                 return panel.canUndo();\r
125             }\r
126             else {\r
127                 return panel.canRedo();\r
128             }\r
129         }\r
130 \r
131         public boolean respondsToEventType(int type) {\r
132             \r
133             return type == TextPanelEvent.UNDO_STATE_CHANGED;\r
134         }\r
135 \r
136         protected void performAction() {\r
137             \r
138             MTextPanel panel = getTextPanel();\r
139             if (fKind == UNDO) {\r
140                 panel.undo();\r
141             }\r
142             else {\r
143                 panel.redo();\r
144             }\r
145         }\r
146     }\r
147 \r
148     public static final class Paste extends CommandMenuItem {\r
149         \r
150         public Paste(MenuData menuData) {\r
151             \r
152             super(menuData);\r
153         }\r
154         \r
155         protected boolean isEnabled() {\r
156             \r
157             return getTextPanel().clipboardNotEmpty();\r
158         }\r
159 \r
160         public boolean respondsToEventType(int type) {\r
161             \r
162             return type == TextPanelEvent.CLIPBOARD_CHANGED;\r
163         }\r
164 \r
165         protected void performAction() {\r
166             \r
167             getTextPanel().paste();\r
168         }\r
169     }\r
170 \r
171     public static final class SelectAll extends CommandMenuItem {\r
172         \r
173         public SelectAll(MenuData menuData) {\r
174             \r
175             super(menuData);\r
176         }\r
177         \r
178         protected boolean isEnabled() {\r
179             \r
180             return true;\r
181         }\r
182 \r
183         public boolean respondsToEventType(int type) {\r
184             \r
185             return false;\r
186         }\r
187 \r
188         protected void performAction() {\r
189             \r
190             getTextPanel().selectAll();\r
191         }\r
192     }\r
193 }\r