KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > jemacs > swing > SwingMenu


1 package gnu.jemacs.swing;
2 import java.awt.event.*;
3 import javax.swing.*;
4 import gnu.lists.*;
5 import gnu.mapping.Procedure;
6 import gnu.jemacs.buffer.Command;
7 import gnu.jemacs.buffer.EMenu;
8 import gnu.jemacs.lang.*;
9 import java.util.*;
10
11 /**
12  * This manages a menu (for menubars or popup menus).
13  * @author Simon Josefsson <jas@pdc.kth.se> (orginal contribution)
14  */

15
16 public class SwingMenu extends JMenu implements EMenu
17 {
18   public SwingMenu ()
19   {
20     super();
21   }
22     
23   public SwingMenu (LList menu)
24   {
25     super();
26     setMenu (menu);
27   }
28     
29   public void setMenu (LList menu)
30   {
31     java.util.Enumeration JavaDoc e = menu.elements();
32     for (int i = 0; e.hasMoreElements(); i++)
33       {
34     Object JavaDoc item = e.nextElement();
35     if (item == null)
36       {
37         this.add(Box.createHorizontalGlue());
38       }
39     else if (item instanceof FString)
40       {
41         if (i == 0)
42         this.setText(item.toString());
43         else
44           // FIXME handle different type of separators
45
this.addSeparator();
46       }
47     else if (item instanceof FVector)
48       {
49         FVector menuEntry = (FVector) item;
50
51         if (menuEntry.get(0) instanceof FString)
52           {
53         FString txt = (FString) menuEntry.get(0);
54         Object JavaDoc proc = menuEntry.get(1);
55
56         // FIXME handle all possible keywords
57

58         JMenuItem menuItem = new MenuItem (txt.toString(), proc);
59         this.add(menuItem);
60           }
61       }
62     else if (item instanceof JComponent)
63       this.add((JComponent) item);
64     else if (item instanceof LList)
65       {
66         // FIXME don't create new objects, keep it within this
67
SwingMenu tmp = new SwingMenu((LList) item);
68         this.add(tmp);
69       }
70       }
71   }
72
73 }
74
75 class MenuItem extends JMenuItem implements java.awt.event.ActionListener JavaDoc
76 {
77   Object JavaDoc command;
78
79   public MenuItem(String JavaDoc text, Object JavaDoc command)
80   {
81     super(text);
82     this.command = command;
83     this.addActionListener(this);
84   }
85
86   public void actionPerformed(java.awt.event.ActionEvent JavaDoc event)
87   {
88     JMenuItem source = (JMenuItem) event.getSource();
89     Command.perform(command);
90   }
91 }
92
Popular Tags