import java.util.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.plaf.*; import javax.swing.plaf.metal.*; public class UIDefaultsInspector { public static void main(String[] args) { String lafClassName = "javax.swing.plaf.metal.MetalLookAndFeel"; if (args.length > 0) lafClassName = args[0]; try { Class lafClass = Class.forName(lafClassName); LookAndFeel laf = (LookAndFeel) lafClass.newInstance(); examineLookAndFeel(laf); } catch (Throwable ex) { ex.printStackTrace(System.err); System.exit(0); } } static void examineLookAndFeel(LookAndFeel laf) { MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme()); UIDefaults defaults = laf.getDefaults(); Set keySet = defaults.keySet(); List sortedKeys = new ArrayList(); sortedKeys.addAll(keySet); Collections.sort(sortedKeys); for (Iterator i = sortedKeys.iterator(); i.hasNext();) { Object key = i.next(); Object value = defaults.get(key); System.out.print("Key: " + key + "\t Value: " + value); if (value != null) System.out.println(", Type: " + value.getClass().getName()); else System.out.println(); printDetails(key, value); } } static void printDetails(Object key, Object value) { if (value instanceof BorderUIResource.CompoundBorderUIResource) { CompoundBorder b = (CompoundBorder) value; System.out.println("Key: " + key + ", innerBorder: " + b.getInsideBorder()); printDetails(key, b.getInsideBorder()); System.out.println("Key: " + key + ", outerBorder: " + b.getOutsideBorder()); printDetails(key, b.getOutsideBorder()); } else if (value instanceof LineBorder) { LineBorder lb = (LineBorder) value; System.out.println("Key: " + key + ", lineColor: " + lb.getLineColor()); System.out.println("Key: " + key + ", lineThickness: " + lb.getThickness()); } else if (value instanceof BevelBorder) { BevelBorder bb = (BevelBorder) value; System.out.println("Key: " + key + ", bevelType: " + bb.getBevelType()); System.out.println("Key: " + key + ", highlightInnerColor: " + bb.getHighlightInnerColor()); System.out.println("Key: " + key + ", highlightOuterColor: " + bb.getHighlightOuterColor()); System.out.println("Key: " + key + ", shadowInnerColor: " + bb.getShadowInnerColor()); System.out.println("Key: " + key + ", shadowOuterColor: " + bb.getShadowOuterColor()); } else if (value instanceof InputMap) { printInputMap((InputMap) value, key); } else if (value instanceof Object[]) { printArray((Object[]) value, key); } } static void printInputMap(InputMap im, Object key) { System.out.println("Key: " + key + ", inputMap parent: " + im.getParent()); KeyStroke[] keys = im.allKeys(); for (int i = 0; i < keys.length; i++) { System.out.println("Key: " + key + ", keyStroke: " + keys[i] + ", value: " + im.get(keys[i]) + ", value type: " + im.get(keys[i]).getClass().getName()); } } static void printArray(Object[] array, Object key) { for (int i = 0; i < array.length; i++) { System.out.println("Key: " + key + ", value[" + i + "]: " + array[i]); } } }