KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sape > carbon > services > console > WindowMenu


1 package org.sape.carbon.services.console;
2
3 import java.awt.event.ActionEvent JavaDoc;
4 import java.awt.event.ActionListener JavaDoc;
5 import java.beans.PropertyVetoException JavaDoc;
6
7 import javax.swing.JCheckBoxMenuItem JavaDoc;
8 import javax.swing.JInternalFrame JavaDoc;
9 import javax.swing.JMenu JavaDoc;
10 import javax.swing.JMenuItem JavaDoc;
11 import javax.swing.event.MenuEvent JavaDoc;
12 import javax.swing.event.MenuListener JavaDoc;
13
14 /**
15  * <p>This is the template for Classes.</p>
16  *
17  * Copyright 2002 Sapient
18  * @since carbon 1.0
19  * @author Greg Hinkle, January 2002
20  * @version $Revision: 1.3 $($Author: ghinkl $ / $Date: 2003/04/04 01:11:49 $)
21  */

22 public class WindowMenu extends JMenu JavaDoc {
23     private MDIDesktopPane desktop;
24     
25     private JMenuItem JavaDoc cascade=new JMenuItem JavaDoc("Cascade");
26     private JMenuItem JavaDoc tile=new JMenuItem JavaDoc("Tile");
27
28     public WindowMenu(MDIDesktopPane desktop) {
29         this.desktop=desktop;
30         setText("Window");
31         cascade.addActionListener(new ActionListener JavaDoc() {
32             public void actionPerformed(ActionEvent JavaDoc ae) {
33                 WindowMenu.this.desktop.cascadeFrames();
34             }
35         });
36         tile.addActionListener(new ActionListener JavaDoc() {
37             public void actionPerformed(ActionEvent JavaDoc ae) {
38                 WindowMenu.this.desktop.tileFrames();
39             }
40         });
41         addMenuListener(new MenuListener JavaDoc() {
42             public void menuCanceled (MenuEvent JavaDoc e) {}
43
44             public void menuDeselected (MenuEvent JavaDoc e) {
45                 removeAll();
46             }
47
48             public void menuSelected (MenuEvent JavaDoc e) {
49                 buildChildMenus();
50             }
51         });
52     }
53
54     /* Sets up the children menus depending on the current desktop state */
55     private void buildChildMenus() {
56         int i;
57         ChildMenuItem menu;
58         JInternalFrame JavaDoc[] array = desktop.getAllFrames();
59
60         add(cascade);
61         add(tile);
62         if (array.length > 0) addSeparator();
63         cascade.setEnabled(array.length > 0);
64         tile.setEnabled(array.length > 0);
65
66         for (i = 0; i < array.length; i++) {
67             menu = new ChildMenuItem(array[i]);
68             menu.setState(i == 0);
69             menu.addActionListener(new ActionListener JavaDoc() {
70                 public void actionPerformed(ActionEvent JavaDoc ae) {
71                     JInternalFrame JavaDoc frame = ((ChildMenuItem)ae.getSource()).getFrame();
72                     frame.moveToFront();
73                     try {
74                         frame.setSelected(true);
75                     } catch (PropertyVetoException JavaDoc e) {
76                         e.printStackTrace();
77                     }
78                 }
79             });
80             menu.setIcon(array[i].getFrameIcon());
81             add(menu);
82         }
83     }
84
85     /* This JCheckBoxMenuItem descendant is used to track the child frame that corresponds
86        to a give menu. */

87     class ChildMenuItem extends JCheckBoxMenuItem JavaDoc {
88         private JInternalFrame JavaDoc frame;
89
90         public ChildMenuItem(JInternalFrame JavaDoc frame) {
91             super(frame.getTitle());
92             this.frame=frame;
93         }
94
95         public JInternalFrame JavaDoc getFrame() {
96             return frame;
97         }
98     }
99 }
100
Popular Tags