KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > calendar > ui > box > CalendarMenu


1 package org.columba.calendar.ui.box;
2
3 import java.awt.Color JavaDoc;
4 import java.awt.Graphics2D JavaDoc;
5 import java.awt.event.ActionListener JavaDoc;
6 import java.awt.image.BufferedImage JavaDoc;
7 import java.util.Enumeration JavaDoc;
8
9 import javax.swing.ButtonGroup JavaDoc;
10 import javax.swing.Icon JavaDoc;
11 import javax.swing.ImageIcon JavaDoc;
12 import javax.swing.JPopupMenu JavaDoc;
13 import javax.swing.JRadioButtonMenuItem JavaDoc;
14
15 import org.columba.calendar.base.api.ICalendarItem;
16 import org.columba.calendar.config.Config;
17 import org.columba.calendar.config.api.ICalendarList;
18
19 public class CalendarMenu extends JPopupMenu JavaDoc {
20
21     private ButtonGroup JavaDoc group = new ButtonGroup JavaDoc();
22
23     public CalendarMenu(ActionListener JavaDoc l) {
24
25         ICalendarList list = Config.getInstance().getCalendarList();
26         Enumeration JavaDoc<ICalendarItem> e = list.getElements();
27         while (e.hasMoreElements()) {
28             ICalendarItem folder = e.nextElement();
29
30             JRadioButtonMenuItem JavaDoc item = createMenuItem(folder);
31             item.addActionListener(l);
32             group.add(item);
33             add(item);
34         }
35
36         // select first item
37
JRadioButtonMenuItem JavaDoc item = (JRadioButtonMenuItem JavaDoc) getComponent(0);
38         item.setSelected(true);
39     }
40
41     private JRadioButtonMenuItem JavaDoc createMenuItem(ICalendarItem folder) {
42         JRadioButtonMenuItem JavaDoc item = new JRadioButtonMenuItem JavaDoc();
43         item.setActionCommand(folder.getId());
44         item.setText(folder.getName());
45         item.setIcon(createIcon(folder.getColor()));
46         return item;
47     }
48
49     private Icon JavaDoc createIcon(Color JavaDoc color) {
50         int width = 16;
51         int height = 16;
52         BufferedImage JavaDoc image = new BufferedImage JavaDoc(width, height,
53                 BufferedImage.TYPE_INT_ARGB);
54
55         Graphics2D JavaDoc graphics = (Graphics2D JavaDoc) image.getGraphics();
56         graphics.setColor(darker(color));
57         graphics.drawRect(1, 1, width - 3, height - 3);
58         graphics.setColor(color);
59         graphics.fillRect(2, 2, width - 4, height - 4);
60         graphics.dispose();
61
62         return new ImageIcon JavaDoc(image);
63     }
64
65     private final static double FACTOR = 0.90;
66
67     private Color JavaDoc darker(Color JavaDoc c) {
68         return new Color JavaDoc(Math.max((int) (c.getRed() * FACTOR), 0), Math.max(
69                 (int) (c.getGreen() * FACTOR), 0), Math.max(
70                 (int) (c.getBlue() * FACTOR), 0));
71     }
72     
73 }
74
Popular Tags