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;
  }
}

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

_______________________________________________
Classpath-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to