1 package net.sf.mmapps.applications.developer.plaf;
2
3 import java.awt.event.*;
4 import java.util.*;
5
6 import javax.swing.*;
7 import javax.swing.plaf.metal.*;
8 import org.apache.commons.logging.*;
9
10 public class ThemeManager extends DefaultMetalTheme implements ActionListener {
11 private static Log log = LogFactory.getLog(ThemeManager.class);
12 Hashtable themes;
13 ButtonGroup group;
14
15 public ThemeManager() {
16 themes = new Hashtable();
17 themes.put("Helix", new HelixTheme());
18 themes.put("Charcoal", new CharcoalTheme());
19 themes.put("Developer", new DeveloperTheme());
20 themes.put("MMBase", new MMBaseTheme());
21
22 }
23
24 public void setTheme(String name) {
25 MetalTheme t = (MetalTheme) themes.get(name);
26 MetalLookAndFeel.setCurrentTheme(t);
27 try {
28 UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
29 } catch (Exception e) {
30 log.warn(e);
31 }
32 }
33
34 public JMenu getMenu() {
35 JMenu lookAndFeel = new JMenu("Look & feel");
36 group = new ButtonGroup();
37
38 Enumeration enumT = themes.keys();
39
40 while (enumT.hasMoreElements()) {
41 group.add(new JRadioButtonMenuItem((String) enumT.nextElement()));
42 }
43
44 Enumeration enum = group.getElements();
45 while (enum.hasMoreElements()) {
46 JRadioButtonMenuItem i = (JRadioButtonMenuItem) enum.nextElement();
47 i.addActionListener(this);
48 lookAndFeel.add(i);
49 }
50 return lookAndFeel;
51 }
52
53 public void actionPerformed(ActionEvent actionEvent) {
54 setTheme(actionEvent.getActionCommand());
55 }
56 }