In my last email I said I would attach my UIDefaultsInspector tool, but didn't. Here it is. Call it like this:
java UIDefaultsInspector MyBasicLookAndFeel |grep TextField If you want to see the MetalL&F defaults, then leave the MyBasicLookAndFeel parameter away. Cheers, Roman
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]);
}
}
}
import javax.swing.*;
import javax.swing.plaf.*;
import javax.swing.plaf.basic.*;
public class MyBasicLookAndFeel extends BasicLookAndFeel {
public boolean isSupportedLookAndFeel() {
return true;
}
public boolean isNativeLookAndFeel() {
return false;
}
public String getDescription() {
return "A concrete L&F to show the BasicLookAndFeel of Java";
}
public String getID() {
return "Basic";
}
public String getName() {
return "MyBasicLookAndFeel";
}
protected Action createAudioAction(Object key) {
System.err.println("createAudioAction: key: " + key);
return null;
}
}
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
_______________________________________________ Classpath-patches mailing list [email protected] http://lists.gnu.org/mailman/listinfo/classpath-patches
