This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 32328
Collapse All | Expand All

(-)src/org/openide/explorer/view/TreeTableView.java (-25 / +18 lines)
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
        

Return to bug 32328