Lines 19-26
Link Here
|
19 |
import javax.swing.table.*; |
19 |
import javax.swing.table.*; |
20 |
import javax.swing.plaf.metal.MetalScrollBarUI; |
20 |
import javax.swing.plaf.metal.MetalScrollBarUI; |
21 |
import javax.swing.border.Border; |
21 |
import javax.swing.border.Border; |
22 |
import javax.swing.event.ChangeListener; |
22 |
import javax.swing.event.*; |
23 |
import javax.swing.event.ChangeEvent; |
|
|
24 |
import javax.swing.tree.*; |
23 |
import javax.swing.tree.*; |
25 |
import javax.accessibility.AccessibleContext; |
24 |
import javax.accessibility.AccessibleContext; |
26 |
import java.beans.PropertyChangeEvent; |
25 |
import java.beans.PropertyChangeEvent; |
Lines 252-257
Link Here
|
252 |
// init listener & attach it to closing of |
251 |
// init listener & attach it to closing of |
253 |
managerListener = new TreePropertyListener(); |
252 |
managerListener = new TreePropertyListener(); |
254 |
tree.addTreeExpansionListener (managerListener); |
253 |
tree.addTreeExpansionListener (managerListener); |
|
|
254 |
|
255 |
// add listener to sort a new expanded folders |
256 |
tree.addTreeExpansionListener (new TreeExpansionListener () { |
257 |
public void treeExpanded (TreeExpansionEvent event) { |
258 |
if (event.getPath () != null) |
259 |
getSortedNodeTreeModel ().sortChildren ((VisualizerNode)event.getPath ().getLastPathComponent ()); |
260 |
} |
261 |
|
262 |
public void treeCollapsed (TreeExpansionEvent event) { |
263 |
// ignore it |
264 |
} |
265 |
}); |
255 |
|
266 |
|
256 |
defaultActionListener = new PopupSupport(); |
267 |
defaultActionListener = new PopupSupport(); |
257 |
treeTable.addFocusListener(defaultActionListener); |
268 |
treeTable.addFocusListener(defaultActionListener); |
Lines 832-838
Link Here
|
832 |
} |
843 |
} |
833 |
return sortedNodeTreeModel; |
844 |
return sortedNodeTreeModel; |
834 |
} |
845 |
} |
835 |
|
846 |
|
836 |
/* node tree model with added sorting support |
847 |
/* node tree model with added sorting support |
837 |
*/ |
848 |
*/ |
838 |
private class SortedNodeTreeModel extends NodeTreeModel { |
849 |
private class SortedNodeTreeModel extends NodeTreeModel { |
Lines 1046-1078
Link Here
|
1046 |
java.util.List list = new ArrayList(); |
1057 |
java.util.List list = new ArrayList(); |
1047 |
Enumeration en = TreeTableView.this.tree.getExpandedDescendants( new TreePath( tn ) ); |
1058 |
Enumeration en = TreeTableView.this.tree.getExpandedDescendants( new TreePath( tn ) ); |
1048 |
while ( en != null && en.hasMoreElements() ) { |
1059 |
while ( en != null && en.hasMoreElements() ) { |
1049 |
list.add( (TreePath)en.nextElement() ); |
1060 |
TreePath path = (TreePath)en.nextElement(); |
1050 |
} |
1061 |
// bugfix #32328, don't sort whole subtree but only expanded folders |
1051 |
|
1062 |
sortChildren ((VisualizerNode)path.getLastPathComponent ()); |
1052 |
// sort whole tree |
1063 |
list.add( path ); |
1053 |
if (tn instanceof VisualizerNode) { |
|
|
1054 |
VisualizerNode root = (VisualizerNode)getRoot (); |
1055 |
// do sort around all |
1056 |
if (!root.isLeaf ()) { |
1057 |
sortSubNodes (root); |
1058 |
} |
1059 |
} |
1064 |
} |
1060 |
|
1065 |
|
1061 |
// expand again folders |
1066 |
// expand again folders |
1062 |
for (int i=0; i<list.size(); i++) { |
1067 |
for (int i=0; i<list.size(); i++) { |
1063 |
TreeTableView.this.tree.expandPath( (TreePath)list.get( i ) ); |
1068 |
TreeTableView.this.tree.expandPath( (TreePath)list.get( i ) ); |
1064 |
} |
|
|
1065 |
} |
1066 |
|
1067 |
private void sortSubNodes (VisualizerNode parent) { |
1068 |
sortChildren (parent); |
1069 |
Iterator it = parent.getChildren ().iterator (); |
1070 |
VisualizerNode n; |
1071 |
while (it.hasNext ()) { |
1072 |
n = (VisualizerNode)it.next (); |
1073 |
if (!n.isLeaf ()) { |
1074 |
sortSubNodes (n); |
1075 |
} |
1076 |
} |
1069 |
} |
1077 |
} |
1070 |
} |
1078 |
|
1071 |
|