KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > contact > gui > box > FolderListMenu


1 package org.columba.contact.gui.box;
2
3 import java.awt.event.ActionListener JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.Vector JavaDoc;
6
7 import javax.swing.ButtonGroup JavaDoc;
8 import javax.swing.JPopupMenu JavaDoc;
9 import javax.swing.JRadioButtonMenuItem JavaDoc;
10
11 import org.columba.addressbook.folder.IContactFolder;
12 import org.columba.addressbook.folder.IFolder;
13 import org.columba.addressbook.gui.tree.AddressbookTreeModel;
14
15 public class FolderListMenu extends JPopupMenu JavaDoc {
16
17     private ButtonGroup JavaDoc group = new ButtonGroup JavaDoc();
18
19     public FolderListMenu(ActionListener JavaDoc l) {
20
21         AddressbookTreeModel model = AddressbookTreeModel.getInstance();
22         Vector JavaDoc<IFolder> v = new Vector JavaDoc<IFolder>();
23         Object JavaDoc parent = model.getRoot();
24         getChildren(model, parent, v);
25
26         Iterator JavaDoc<IFolder> it = v.listIterator();
27         while (it.hasNext()) {
28             IFolder folder = it.next();
29             if (folder instanceof IContactFolder) {
30                 JRadioButtonMenuItem JavaDoc item = createMenuItem(folder);
31                 item.addActionListener(l);
32                 group.add(item);
33                 add(item);
34             }
35         }
36         
37         // select first item
38
JRadioButtonMenuItem JavaDoc item = (JRadioButtonMenuItem JavaDoc) getComponent(0);
39         item.setSelected(true);
40     }
41
42     private JRadioButtonMenuItem JavaDoc createMenuItem(IFolder folder) {
43         JRadioButtonMenuItem JavaDoc item = new JRadioButtonMenuItem JavaDoc();
44         item.setActionCommand(folder.getId());
45         item.setText(folder.getName());
46         item.setIcon(folder.getIcon());
47         return item;
48     }
49
50     private void getChildren(AddressbookTreeModel model, Object JavaDoc parent,
51             Vector JavaDoc<IFolder> v) {
52         int childCount = model.getChildCount(parent);
53         for (int i = 0; i < childCount; i++) {
54             Object JavaDoc child = model.getChild(parent, i);
55             v.add((IFolder) child);
56
57             getChildren(model, child, v);
58         }
59     }
60
61 }
62
Popular Tags