import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Enumeration;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
public class UIDefaultsTreeModel implements TreeModel {
DefaultTreeModel innerModel;
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("UIDefaults");
DefaultMutableTreeNode colorNode = new DefaultMutableTreeNode("Color Resources");
DefaultMutableTreeNode borderNode = new DefaultMutableTreeNode("Border Resources");
DefaultMutableTreeNode fontNode = new DefaultMutableTreeNode("Font Resources");
DefaultMutableTreeNode iconNode = new DefaultMutableTreeNode("Icon Resources");
DefaultMutableTreeNode otherNode = new DefaultMutableTreeNode("Other Resources");
public UIDefaultsTreeModel() {
innerModel = new DefaultTreeModel(rootNode);
innerModel.insertNodeInto(colorNode, rootNode, 0);
innerModel.insertNodeInto(borderNode, rootNode, 1);
innerModel.insertNodeInto(fontNode, rootNode, 2);
innerModel.insertNodeInto(iconNode, rootNode, 3);
innerModel.insertNodeInto(otherNode, rootNode, 4);
UIDefaults defaults = UIManager.getDefaults();
Enumeration elems = defaults.keys();
String keyName;
Object valueForKey;
while (elems.hasMoreElements()) {
DefaultMutableTreeNode newKeyNode;
DefaultMutableTreeNode newValueNode;
try {
keyName = elems.nextElement().toString();
valueForKey = defaults.get(keyName);
newKeyNode = new DefaultMutableTreeNode(keyName);
newValueNode = new DefaultMutableTreeNode(valueForKey);
if (valueForKey instanceof java.awt.Color) {
innerModel.insertNodeInto(newKeyNode, colorNode, 0);
} else if (valueForKey instanceof javax.swing.border.Border) {
innerModel.insertNodeInto(newKeyNode, borderNode, 0);
} else if (valueForKey instanceof java.awt.Font) {
innerModel.insertNodeInto(newKeyNode, fontNode, 0);
} else if (valueForKey instanceof javax.swing.Icon) {
innerModel.insertNodeInto(newKeyNode, iconNode, 0);
} else {
innerModel.insertNodeInto(newKeyNode, otherNode, 0);
}
innerModel.insertNodeInto(newValueNode, newKeyNode, 0);
} catch (NullPointerException e) {
}
}
}
public Object getRoot() {
return innerModel.getRoot();
}
public Object getChild(Object parm1, int parm2) {
return innerModel.getChild(parm1, parm2);
}
public int getChildCount(Object parm1) {
return innerModel.getChildCount(parm1);
}
public boolean isLeaf(Object parm1) {
return innerModel.isLeaf(parm1);
}
public void valueForPathChanged(TreePath parm1, Object parm2) {
innerModel.valueForPathChanged(parm1, parm2);
}
public int getIndexOfChild(Object parm1, Object parm2) {
return innerModel.getIndexOfChild(parm1, parm2);
}
public void addTreeModelListener(TreeModelListener parm1) {
innerModel.addTreeModelListener(parm1);
}
public void removeTreeModelListener(TreeModelListener parm1) {
innerModel.removeTreeModelListener(parm1);
}
public static void main(String[] args) {
JFrame treeFrame1 = new JFrame();
JScrollPane jScrollPane1 = new JScrollPane();
JTree jTree1 = new JTree(new UIDefaultsTreeModel());
treeFrame1.setSize(new Dimension(400, 300));
treeFrame1.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
treeFrame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
treeFrame1.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
jScrollPane1.getViewport().add(jTree1, null);
treeFrame1.setVisible(true);
}
}