/* * Created on 17.01.2004 * */ package net.sourceforge.ganttproject.gui; import java.util.HashMap; import java.util.Map; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import com.jgoodies.looks.LookUtils; /** * @author Michael Haeusler (michael at akatose.de) This singleton class stores * info about the installed LookAndFeels. */ public class GanttLookAndFeels { protected Map<String, GanttLookAndFeelInfo> infoByClass; protected Map<String, GanttLookAndFeelInfo> infoByName; protected static GanttLookAndFeels singleton; static { UIManager.put("ClassLoader", LookUtils.class.getClassLoader()); UIManager.installLookAndFeel("Plastic", "com.jgoodies.looks.plastic.PlasticLookAndFeel"); } protected GanttLookAndFeels() { infoByClass = new HashMap<String, GanttLookAndFeelInfo>(); infoByName = new HashMap<String, GanttLookAndFeelInfo>(); LookAndFeelInfo[] lookAndFeels = UIManager.getInstalledLookAndFeels(); for (int i = 0; i < lookAndFeels.length; i++) { GanttLookAndFeelInfo info = new GanttLookAndFeelInfo(lookAndFeels[i]); addLookAndFeel(info); } } protected void addLookAndFeel(GanttLookAndFeelInfo info) { if (info.getName().startsWith("Kunststoff") && System.getProperty("os.name").startsWith("Mac")) { System.err.println("LookAndFeel not added (Kunststoff is ignored on MacOS)."); } else { if (!infoByClass.containsKey(info.getClassName())) { infoByClass.put(info.getClassName(), info); infoByName.put(info.getName(), info); } else { System.err.println("LookAndFeel " + info + "(" + info.getClassName() + ") already installed."); } } } public GanttLookAndFeelInfo getInfoByClass(String className) { return infoByClass.get(className); } public GanttLookAndFeelInfo getInfoByName(String name) { return infoByName.get(name); } public GanttLookAndFeelInfo getDefaultInfo() { GanttLookAndFeelInfo info = getInfoByClass(UIManager.getSystemLookAndFeelClassName()); if (null == info) info = getInfoByClass(UIManager.getCrossPlatformLookAndFeelClassName()); return info; } public GanttLookAndFeelInfo[] getInstalledLookAndFeels() { GanttLookAndFeelInfo[] lookAndFeels = new GanttLookAndFeelInfo[0]; return infoByClass.values().toArray(lookAndFeels); } public static GanttLookAndFeels getGanttLookAndFeels() { if (singleton == null) { singleton = new GanttLookAndFeels(); } return singleton; } }