The Java Program: Main.java
1 import java.awt.Toolkit;
2 import java.awt.Event;
3 import java.awt.BorderLayout;
4 import java.awt.event.*;
5 import javax.swing.*;
6
7 import java.util.Date;
8 import java.util.Arrays;
9 import java.io.IOException;
10
11 public class Main extends JFrame {
12
13 private static final String title = "Localized Menubar Deomonstration";
14
15 private static void createAndShowGUI () {
16 JFrame.setDefaultLookAndFeelDecorated(true);
17 final JFrame frame = new JFrame (title);
18 final JTextArea ta = new JTextArea(10, 60);
19 frame.getContentPane().add(new JScrollPane(ta), BorderLayout.CENTER);
20 frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
21 frame.pack();
22 frame.setVisible(true);
23 }
24
25
26 public static void main (String[] args) {
27 final JFrame frame = new Main ();
28 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
29 frame.pack();
30 frame.setVisible(true);
31 }
32
33 private final Action newAction = new LocalizableAction ("new");
34 private final Action openAction = new LocalizableAction ("open");
35 private final Action closeAction = new LocalizableAction ("close");
36 private final Action saveAction = new LocalizableAction ("save");
37 private final Action quitAction = new QuitAction ();
38 private final Action printAction = new LocalizableAction ("print");
39
40 public Main() {
41 super (title);
42 final JTextArea ta = new JTextArea(10, 50);
43 getContentPane().add(new JScrollPane(ta), BorderLayout.CENTER);
44
45 final JToolBar tool = new JToolBar();
46 getContentPane().add (tool, BorderLayout.NORTH);
47
48 tool.add (new JButton (newAction));
49 tool.add (new JButton (openAction));
50 tool.add (new JButton (closeAction));
51 tool.add (new JButton (saveAction));
52 tool.add (new JButton (quitAction));
53 tool.add (new JButton (new ScreenshotAction()));
54
55 class EchoListener implements ActionListener {
56 public void actionPerformed (ActionEvent ev) {
57 System.out.println (ev.getActionCommand());
58 }
59 }
60 final EchoListener e = new EchoListener ();
61
62 final JMenuBar bar = new JMenuBar();
63
64 final JMenu file_menu = new JMenu (new LocalizableAction("file"));
65
66 final JMenuItem new_item = new JMenuItem (newAction);
67 final JMenuItem open = new JMenuItem (openAction);
68 final JMenuItem close = new JMenuItem (closeAction);
69 final JMenuItem save = new JMenuItem (saveAction);
70 final JMenuItem save_as = ItemFactory.createMenuItem ("Save As ...", 'A', e);
71 final JMenuItem page_setup= ItemFactory.createMenuItem ("Page Setup ...", 'U', e);
72 final JMenuItem print = new JMenuItem (printAction);
73 final JMenuItem pref = ItemFactory.createMenuItem ("Preferences", 'R', e);
74 final JMenuItem color = new JMenuItem (new ColorAction(java.awt.Color.BLUE));
75 final JMenuItem exit = new JMenuItem (quitAction);
76
77 file_menu.add (new_item);
78 file_menu.add (open);
79 file_menu.add (close);
80 file_menu.addSeparator();
81 file_menu.add (save);
82 file_menu.add (save_as);
83 file_menu.addSeparator();
84 file_menu.add (page_setup);
85 file_menu.add (print);
86 file_menu.addSeparator();
87 file_menu.add (pref);
88 file_menu.addSeparator();
89 file_menu.add (color);
90 file_menu.add (exit);
91 bar.add (file_menu);
92
93 final JMenu edit_menu = new JMenu ("Edit");
94 edit_menu.setMnemonic ('E');
95 edit_menu.setToolTipText ("Menu of edit operations");
96
97 final JMenuItem undo = ItemFactory.createMenuItem ("Undo", 'U', 'Z', e);
98 final JMenuItem redo = ItemFactory.createMenuItem ("Redo", 'R', 'Y', e);
99 final JMenuItem cut = ItemFactory.createMenuItem ("Cut", 'T', 'X', e);
100 final JMenuItem copy = ItemFactory.createMenuItem ("Copy", 'C', 'C', e);
101 final JMenuItem paste = ItemFactory.createMenuItem ("Paste", 'P', 'V', e);
102
103 final JMenuItem find = ItemFactory.createMenuItem ("Find...", 'F', 'F', e);
104 final JMenuItem findA = ItemFactory.createMenuItem ("Find Again", 'D', 'G', e);
105 findA.setEnabled (false);
106 final JMenuItem select = ItemFactory.createMenuItem ("Select All", 'A', 'A', e);
107
108 edit_menu.add (undo);
109 edit_menu.add (redo);
110 edit_menu.addSeparator();
111 edit_menu.add (cut);
112 edit_menu.add (copy);
113 edit_menu.add (paste);
114 edit_menu.addSeparator();
115 edit_menu.add (find);
116 edit_menu.add (findA);
117 edit_menu.add (select);
118 bar.add (edit_menu);
119
120 final JMenu text_menu = new JMenu ("Text");
121 text_menu.setMnemonic ('T');
122 text_menu.setToolTipText ("Menu of text formatting operations");
123
124 final JMenu font_submenu = new JMenu ("Font");
125 font_submenu.setMnemonic ('F');
126 font_submenu.setToolTipText ("Menu of font families");
127 text_menu.add (font_submenu);
128
129 final JMenu style_submenu = new JMenu ("Style");
130 style_submenu.setMnemonic ('S');
131
132 final JCheckBoxMenuItem bold = ItemFactory.createCheckBox ("Bold", 'B', 'B', e);
133 final JCheckBoxMenuItem italic = ItemFactory.createCheckBox ("Italic", 'I', 'I', e);
134 final JCheckBoxMenuItem under = ItemFactory.createCheckBox ("Under", 'U', 'U', e);
135 style_submenu.add (bold);
136 style_submenu.add (italic);
137 style_submenu.add (under);
138
139 text_menu.add (style_submenu);
140
141 final JMenu size_submenu = new JMenu ("Size");
142 size_submenu.setMnemonic ('Z');
143 text_menu.add (size_submenu);
144
145 text_menu.addSeparator();
146
147 final ButtonGroup group = new ButtonGroup ();
148 final JRadioButtonMenuItem left = new JRadioButtonMenuItem ("Align Left");
149 left.setMnemonic('L');
150 group.add (left);
151 text_menu.add (left);
152
153 final JRadioButtonMenuItem mid = new JRadioButtonMenuItem ("Align Middle");
154 mid.setMnemonic('M');
155 group.add (mid);
156 text_menu.add (mid);
157
158 final JRadioButtonMenuItem right = new JRadioButtonMenuItem ("Align Right");
159 right.setMnemonic('R');
160 group.add (right);
161 text_menu.add (right);
162
163 final JRadioButtonMenuItem just = new JRadioButtonMenuItem ("Justify");
164 just.setMnemonic('J');
165 just.setEnabled (false);
166 group.add (just);
167 text_menu.add (just);
168
169 bar.add (text_menu);
170
171 class XL implements ActionListener {
172 public void actionPerformed (ActionEvent ev) {
173 final JComboBox cb = (JComboBox) ev.getSource();
174 final LocalePanel ll = (LocalePanel) cb.getSelectedItem();
175 ll.changeLocale();
176 }
177 }
178
179 final JComboBox box = new JComboBox(LocalePanel.getList().toArray());
180 box.setEditable (false);
181 box.setMaximumRowCount (6);
182
183
184
185
186 box.setBorder (BorderFactory.createEmptyBorder (3,4,1,4));
187
188
189
190
191
192 box.setMaximumSize (new java.awt.Dimension (175,50));
193
194
195
196 box.addActionListener (new XL());
197 box.setSelectedItem (LocalePanel.setCurrent ());
198
199
200
201 box.setRenderer (new PanelRenderer ());
202
203
204 bar.add (Box.createRigidArea (new java.awt.Dimension (2,40)));
205 bar.add (box);
206 bar.add (Box.createRigidArea (new java.awt.Dimension (2,40)));
207
208
209
210
211 final JComponent l = new DateForBar();
212 l.setMaximumSize (new java.awt.Dimension (225, 30));
213 l.setPreferredSize (new java.awt.Dimension (225, 30));
214 l.setBorder (BorderFactory.createEmptyBorder (0,4,0,4));
215 bar.add (l);
216
217
218
219
220 bar.add (Box.createHorizontalGlue());
221
222
223 final JMenu help_menu = new JMenu ("Help");
224 help_menu.setMnemonic ('H');
225
226 final JMenuItem contents = ItemFactory.createMenuItem ("Contents", 'C', e);
227 final JMenuItem tutorial = ItemFactory.createMenuItem ("Tutorial", 'T', e);
228 final JMenuItem index = ItemFactory.createMenuItem ("Index", 'I', e);
229 final JMenuItem about = ItemFactory.createMenuItem ("About", 'A', e);
230 help_menu.add (contents);
231 help_menu.add (tutorial);
232 help_menu.add (index);
233 help_menu.addSeparator();
234 help_menu.add (about);
235 bar.add (help_menu);
236 setJMenuBar (bar);
237 }
238 }