001: //WebOnSwing - Web Application Framework
002: //Copyright (C) 2003 Fernando Damian Petrola
003: //
004: //This library is free software; you can redistribute it and/or
005: //modify it under the terms of the GNU Lesser General Public
006: //License as published by the Free Software Foundation; either
007: //version 2.1 of the License, or (at your option) any later version.
008: //
009: //This library is distributed in the hope that it will be useful,
010: //but WITHOUT ANY WARRANTY; without even the implied warranty of
011: //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: //Lesser General Public License for more details.
013: //
014: //You should have received a copy of the GNU Lesser General Public
015: //License along with this library; if not, write to the Free Software
016: //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017:
018: package examples.withtemplate;
019:
020: import java.awt.*;
021: import java.awt.event.*;
022:
023: import javax.swing.*;
024:
025: import net.ar.webonswing.*;
026: import net.ar.webonswing.swing.layouts.*;
027:
028: /*
029: * This class adds event handling to MenuLookDemo.
030: */
031: public class TemplateMenuDemo extends JFrame implements ActionListener,
032: ItemListener {
033: JMenuBar menuBar;
034: JTextArea output;
035: JScrollPane scrollPane;
036: String newline = "\n";
037: String currentMenu = "MenuArgentino";
038:
039: class RadioListener implements ActionListener {
040: public void actionPerformed(ActionEvent e) {
041: currentMenu = e.getActionCommand();
042: menuBar.setLayout(new PropagateMenuTemplateLayout(
043: WosFramework.getKeyPositionTemplateForName(e
044: .getActionCommand()
045: + ".JMenuBar")));
046: }
047: }
048:
049: private JRadioButton getRadioFor(String aText,
050: ButtonGroup aButtonGroup) {
051: JRadioButton theRadio = new JRadioButton(aText);
052: theRadio.setLayout(WosFramework
053: .getTemplateLayoutForName("XpMenu.theDemo.theRadio"));
054: theRadio.addActionListener(new RadioListener());
055: aButtonGroup.add(theRadio);
056: return theRadio;
057: }
058:
059: private JPanel getComboPanel() {
060: JPanel theStatePanel = new JPanel(new TemplateFlowLayout());
061:
062: ButtonGroup theButtonGroup = new ButtonGroup();
063:
064: JRadioButton theRadio1 = getRadioFor("MenuArgentino",
065: theButtonGroup);
066: theRadio1.setSelected(true);
067: theStatePanel.add(theRadio1);
068:
069: theStatePanel.add(getRadioFor("EcompanyMenu", theButtonGroup));
070: theStatePanel.add(getRadioFor("XpMenu", theButtonGroup));
071: theStatePanel.add(getRadioFor("WinMenu", theButtonGroup));
072:
073: return theStatePanel;
074: }
075:
076: public TemplateMenuDemo() {
077: JMenu menu, submenu;
078: JMenuItem menuItem;
079: JRadioButtonMenuItem rbMenuItem;
080: JCheckBoxMenuItem cbMenuItem;
081:
082: addWindowListener(new WindowAdapter() {
083: public void windowClosing(WindowEvent e) {
084: System.exit(0);
085: }
086: });
087:
088: menuBar = new JMenuBar();
089: menuBar
090: .setLayout(new PropagateMenuTemplateLayout(
091: WosFramework
092: .getKeyPositionTemplateForName("MenuArgentino.JMenuBar")));
093:
094: Container contentPane = getContentPane();
095: contentPane.setLayout(new TemplateLayout(WosFramework
096: .getKeyPositionTemplateForName("XpMenu.theDemo")));
097: //contentPane.add(menuBar);
098: contentPane.add(menuBar, "theMenuBar");
099: contentPane.add(getComboPanel(), "theRadio");
100:
101: //Build the first menu.
102: menu = new JMenu("A Menu");
103: menu.setBounds(0, 19, 800, 1000);
104: menu.setMnemonic(KeyEvent.VK_A);
105: menu.getAccessibleContext().setAccessibleDescription(
106: "The only menu in this program that has menu items");
107: menuBar.add(menu);
108:
109: //a group of JMenuItems
110: menuItem = new JMenuItem("A text-only menu item", KeyEvent.VK_T);
111: menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
112: menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1,
113: ActionEvent.ALT_MASK));
114: menuItem.getAccessibleContext().setAccessibleDescription(
115: "This doesn't really do anything");
116: menuItem.addActionListener(this );
117: menuItem.setEnabled(false);
118: menu.add(menuItem);
119:
120: menuItem = new JMenuItem("Both text and icon", new ImageIcon(
121: "resources/images/open.gif"));
122: menuItem.setMnemonic(KeyEvent.VK_B);
123: menuItem.addActionListener(this );
124: menu.add(menuItem);
125:
126: //a group of radio button menu items
127:
128: menu.addSeparator();
129: ButtonGroup group = new ButtonGroup();
130: rbMenuItem = new JRadioButtonMenuItem(
131: "A radio button menu item");
132: rbMenuItem.setSelected(true);
133: rbMenuItem.setMnemonic(KeyEvent.VK_R);
134: group.add(rbMenuItem);
135: rbMenuItem.addActionListener(this );
136: menu.add(rbMenuItem);
137: rbMenuItem = new JRadioButtonMenuItem("Another one");
138: rbMenuItem.setMnemonic(KeyEvent.VK_O);
139: group.add(rbMenuItem);
140: rbMenuItem.addActionListener(this );
141: menu.add(rbMenuItem);
142:
143: //a group of check box menu items
144: menu.addSeparator();
145:
146: cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
147: cbMenuItem.setMnemonic(KeyEvent.VK_C);
148: cbMenuItem.setSelected(true);
149: cbMenuItem.addItemListener(this );
150: menu.add(cbMenuItem);
151: cbMenuItem = new JCheckBoxMenuItem("Another one");
152: cbMenuItem.setSelected(true);
153: cbMenuItem.setMnemonic(KeyEvent.VK_H);
154: cbMenuItem.addItemListener(this );
155: menu.add(cbMenuItem);
156:
157: //a submenu
158:
159: JSeparator aSeparator = new JPopupMenu.Separator();
160: menu.add(aSeparator);
161:
162: submenu = new JMenu("A submenu");
163: submenu.setBounds(200, 180, 200, 200);
164: submenu.setMnemonic(KeyEvent.VK_S);
165:
166: menuItem = new JMenuItem("An item in the submenu",
167: new ImageIcon("resources/images/save.gif"));
168: menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2,
169: ActionEvent.ALT_MASK));
170: menuItem.addActionListener(this );
171: submenu.add(menuItem);
172:
173: menuItem = new JMenuItem("Another item");
174: menuItem.addActionListener(this );
175: submenu.add(menuItem);
176: menu.add(submenu);
177:
178: //Build second menu in the menu bar.
179: menu = new JMenu("Another Menu");
180: menu.setMnemonic(KeyEvent.VK_N);
181: menu.getAccessibleContext().setAccessibleDescription(
182: "This menu does nothing");
183: menu.setBounds(0, 19, 200, 200);
184: menuBar.add(menu);
185:
186: menuItem = new JMenuItem("1");
187: menu.add(menuItem);
188: menuItem = new JMenuItem("2");
189: menu.add(menuItem);
190: menuItem = new JMenuItem("3");
191: menu.add(menuItem);
192:
193: menu = new JMenu("Another Menu 2");
194: menu.setBounds(0, 19, 200, 200);
195: menu.setMnemonic(KeyEvent.VK_N);
196: menu.getAccessibleContext().setAccessibleDescription(
197: "This menu does nothing");
198: menuBar.add(menu);
199:
200: menuItem = new JMenuItem("4");
201: menu.add(menuItem);
202: menuItem = new JMenuItem("5");
203: menu.add(menuItem);
204: menuItem = new JMenuItem("6");
205: menu.add(menuItem);
206:
207: JMenu menu2 = new JMenu("Another Menu 3");
208: menu2.setBounds(0, 19, 200, 200);
209: menu2.setMnemonic(KeyEvent.VK_N);
210: menu2.getAccessibleContext().setAccessibleDescription(
211: "This menu does nothing");
212: menuBar.add(menu2);
213:
214: menuItem = new JMenuItem("4");
215: menu2.add(menuItem);
216: menuItem = new JMenuItem("5");
217: menu2.add(menuItem);
218: menuItem = new JMenuItem("6");
219: menu2.add(menuItem);
220:
221: menu = new JMenu("Another Menu 3");
222: menu.setBounds(200, 50, 200, 200);
223: menu.setMnemonic(KeyEvent.VK_N);
224: menu.getAccessibleContext().setAccessibleDescription(
225: "This menu does nothing");
226: menu2.add(menu);
227:
228: menuItem = new JMenuItem("4");
229: menu.add(menuItem);
230: menuItem = new JMenuItem("5");
231: menu.add(menuItem);
232:
233: menu2 = new JMenu("Another Menu 3");
234: menu2.setBounds(200, 50, 100, 300);
235: menu2.setMnemonic(KeyEvent.VK_N);
236: menu2.getAccessibleContext().setAccessibleDescription(
237: "This menu does nothing");
238: menu.add(menu2);
239:
240: menuItem = new JMenuItem("4");
241: menu.add(menuItem);
242: menuItem = new JMenuItem("5");
243: menu.add(menuItem);
244: menu = new JMenu("Another Menu 3");
245: menu.setBounds(200, 10, 200, 200);
246: menu.setMnemonic(KeyEvent.VK_N);
247: menu.getAccessibleContext().setAccessibleDescription(
248: "This menu does nothing");
249: menu2.add(menu);
250:
251: menuItem = new JMenuItem("4");
252: menu.add(menuItem);
253: menuItem = new JMenuItem("5");
254: menu.add(menuItem);
255:
256: }
257:
258: public void actionPerformed(ActionEvent e) {
259: JMenuItem source = (JMenuItem) (e.getSource());
260: String s = "Action event detected." + newline
261: + " Event source: " + source.getText()
262: + " (an instance of " + getClassName(source) + ")";
263: output.append(s + newline);
264: }
265:
266: public void itemStateChanged(ItemEvent e) {
267: JMenuItem source = (JMenuItem) (e.getSource());
268: String s = "Item event detected."
269: + newline
270: + " Event source: "
271: + source.getText()
272: + " (an instance of "
273: + getClassName(source)
274: + ")"
275: + newline
276: + " New state: "
277: + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected"
278: : "unselected");
279: output.append(s + newline);
280: }
281:
282: // Returns just the class name -- no package info.
283: protected String getClassName(Object o) {
284: String classString = o.getClass().getName();
285: int dotIndex = classString.lastIndexOf(".");
286: return classString.substring(dotIndex + 1);
287: }
288:
289: public static void main(String[] args) {
290: TemplateMenuDemo window = new TemplateMenuDemo();
291:
292: window.setTitle("MenuDemo");
293: window.setSize(450, 260);
294: window.setVisible(true);
295: }
296:
297: public String getCurrentMenu() {
298: return currentMenu;
299: }
300:
301: public void setCurrentMenu(String aString) {
302: currentMenu = aString;
303: }
304:
305: }
|