rendered paste body1145,1147c1145,1147
< return childValue == null || !(childValue instanceof Hashtable
< || childValue instanceof Vector
< || childValue.getClass().isArray());
---
> return (childValue == null || !(childValue instanceof Hashtable
> || childValue instanceof Vector || childValue.getClass()
> .isArray()));
1395c1395
< private static final Object EXPANDED = Boolean.TRUE;
---
> private static final Object EXPANDED = new Object();
1397c1397
< private static final Object COLLAPSED = Boolean.FALSE;
---
> private static final Object COLLAPSED = new Object();
1481c1481
< this(getDefaultTreeModel());
---
> this(createTreeModel(null));
1511a1512,1513
> // The setModel also calls the updateUI
> setModel(model);
1516,1523c1518
< nodeStates = new Hashtable();
<
< // Install the UI before installing the model. This way we avoid double
< // initialization of lots of UI and model stuff inside the UI and related
< // classes. The necessary UI updates are performed via property change
< // events to the UI.
< updateUI();
< setModel(model);
---
> nodeStates.put(new TreePath(model.getRoot()), EXPANDED);
1905,1908d1899
< // Remove listeners from old model.
< if (treeModel != null && treeModelListener != null)
< treeModel.removeTreeModelListener(treeModelListener);
<
1917,1930d1907
< clearToggledPaths();
<
< if (treeModel != null)
< {
< if (treeModelListener == null)
< treeModelListener = createTreeModelListener();
< if (treeModelListener != null)
< treeModel.addTreeModelListener(treeModelListener);
< Object root = treeModel.getRoot();
< if (root != null && !treeModel.isLeaf(root))
< {
< nodeStates.put(new TreePath(root), Boolean.TRUE);
< }
< }
1932a1910
> updateUI();
2341c2319
< if (oldValue != null)
---
> if (oldValue!=null)