01: package org.columba.contact.gui.box;
02:
03: import java.awt.event.ActionListener;
04: import java.util.Iterator;
05: import java.util.Vector;
06:
07: import javax.swing.ButtonGroup;
08: import javax.swing.JPopupMenu;
09: import javax.swing.JRadioButtonMenuItem;
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 {
16:
17: private ButtonGroup group = new ButtonGroup();
18:
19: public FolderListMenu(ActionListener l) {
20:
21: AddressbookTreeModel model = AddressbookTreeModel.getInstance();
22: Vector<IFolder> v = new Vector<IFolder>();
23: Object parent = model.getRoot();
24: getChildren(model, parent, v);
25:
26: Iterator<IFolder> it = v.listIterator();
27: while (it.hasNext()) {
28: IFolder folder = it.next();
29: if (folder instanceof IContactFolder) {
30: JRadioButtonMenuItem item = createMenuItem(folder);
31: item.addActionListener(l);
32: group.add(item);
33: add(item);
34: }
35: }
36:
37: // select first item
38: JRadioButtonMenuItem item = (JRadioButtonMenuItem) getComponent(0);
39: item.setSelected(true);
40: }
41:
42: private JRadioButtonMenuItem createMenuItem(IFolder folder) {
43: JRadioButtonMenuItem item = new JRadioButtonMenuItem();
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 parent,
51: Vector<IFolder> v) {
52: int childCount = model.getChildCount(parent);
53: for (int i = 0; i < childCount; i++) {
54: Object child = model.getChild(parent, i);
55: v.add((IFolder) child);
56:
57: getChildren(model, child, v);
58: }
59: }
60:
61: }
|