@@ -738,7 +738,7 @@ public Rectangle getPathBounds(JTree tree, TreePath path)
738738 clearSpecificSearch .setEnabled (false );
739739 List <TreePath > expandedCopy = new ArrayList <>(expanded );
740740 updateFilter (specificSearch != null ? (HideableTreeNode )specificSearch .getLastPathComponent () :
741- (HideableTreeNode )tree .getModel ().getRoot (), textField .getText ());
741+ (HideableTreeNode )tree .getModel ().getRoot (), textField .getText (), true );
742742 for (TreePath path : expandedCopy )
743743 tree .expandPath (path );
744744 });
@@ -753,7 +753,7 @@ public void insertUpdate(DocumentEvent e)
753753 {
754754 List <TreePath > expandedCopy = new ArrayList <>(expanded );
755755 updateFilter (specificSearch != null ? (HideableTreeNode )specificSearch .getLastPathComponent () :
756- (HideableTreeNode )tree .getModel ().getRoot (), textField .getText ());
756+ (HideableTreeNode )tree .getModel ().getRoot (), textField .getText (), true );
757757 for (TreePath path : expandedCopy )
758758 tree .expandPath (path );
759759 }
@@ -763,7 +763,7 @@ public void removeUpdate(DocumentEvent e)
763763 {
764764 List <TreePath > expandedCopy = new ArrayList <>(expanded );
765765 updateFilter (specificSearch != null ? (HideableTreeNode )specificSearch .getLastPathComponent () :
766- (HideableTreeNode )tree .getModel ().getRoot (), textField .getText ());
766+ (HideableTreeNode )tree .getModel ().getRoot (), textField .getText (), true );
767767 for (TreePath path : expandedCopy )
768768 tree .expandPath (path );
769769 }
@@ -773,13 +773,16 @@ public void changedUpdate(DocumentEvent e)
773773 {
774774 List <TreePath > expandedCopy = new ArrayList <>(expanded );
775775 updateFilter (specificSearch != null ? (HideableTreeNode )specificSearch .getLastPathComponent () :
776- (HideableTreeNode )tree .getModel ().getRoot (), textField .getText ());
776+ (HideableTreeNode )tree .getModel ().getRoot (), textField .getText (), true );
777777 for (TreePath path : expandedCopy )
778778 tree .expandPath (path );
779779 }
780780 });
781781 JButton button = new JButton ("Refresh" );
782- button .addActionListener (a -> refreshTree (textField .getText ()));
782+ button .addActionListener (a -> {
783+ refreshTree (textField .getText ());
784+ clearSpecificSearch .setEnabled (false );
785+ });
783786 GridBagConstraints buttonC = new GridBagConstraints ();
784787 buttonC .anchor = GridBagConstraints .EAST ;
785788 buttonC .weightx = 1 ;
@@ -825,7 +828,7 @@ public void mousePressed(MouseEvent e)
825828 clearSpecificSearch .setEnabled (specificSearch != null );
826829 List <TreePath > expandedCopy = new ArrayList <>(expanded );
827830 updateFilter (specificSearch != null ? (HideableTreeNode )specificSearch .getLastPathComponent () :
828- (HideableTreeNode )tree .getModel ().getRoot (), textField .getText ());
831+ (HideableTreeNode )tree .getModel ().getRoot (), textField .getText (), true );
829832 for (TreePath pth : expandedCopy )
830833 tree .expandPath (pth );
831834 });
@@ -920,21 +923,21 @@ public void mousePressed(MouseEvent mouseEvent)
920923
921924 JPanel leftPanel = new JPanel (new GridBagLayout ());
922925
926+ Data data = (Data )table .getValueAt (table .getSelectedRow (), 2 );
927+ Method method = (Method )data .data [1 ];
928+
923929 GridBagConstraints ownerLabelC = new GridBagConstraints ();
924930 ownerLabelC .insets = new Insets (10 , 10 , 0 , 0 );
925931 ownerLabelC .anchor = GridBagConstraints .NORTHWEST ;
926932 ownerLabelC .fill = GridBagConstraints .HORIZONTAL ;
927933 ownerLabelC .weightx = 1 ;
928- leftPanel .add (new JLabel ("Owner: " + ((Class <?>)((Data )table .
929- getValueAt (table .getSelectedRow (), 2 )).data [0 ]).getName ()), ownerLabelC );
930- Data data = (Data )table .getValueAt (table .getSelectedRow (), 2 );
934+ leftPanel .add (new JLabel ("Owner: " + method .getDeclaringClass ().getName ()), ownerLabelC );
931935 GridBagConstraints accessModC = new GridBagConstraints ();
932936 accessModC .insets = new Insets (10 , 10 , 0 , 0 );
933937 accessModC .anchor = GridBagConstraints .NORTHWEST ;
934938 accessModC .fill = GridBagConstraints .HORIZONTAL ;
935939 accessModC .weightx = 1 ;
936940 accessModC .gridy = 1 ;
937- Method method = (Method )data .data [1 ];
938941 String methodString = "<b><font color=7f0055>" + Modifier .toString (method .getModifiers ()) + "</font></b>" ;
939942 if (method .isDefault ())
940943 methodString += "<b><font color=7f0055> default</font></b>" ;
@@ -2303,8 +2306,17 @@ public void propertyChange(PropertyChangeEvent changeEvent)
23032306 return panel ;
23042307 }
23052308
2306- private void updateFilter (HideableTreeNode node , String filterText )
2309+ private void updateFilter (HideableTreeNode node , String filterText , boolean clear )
23072310 {
2311+ if (clear && node != tree .getModel ().getRoot ())
2312+ {
2313+ for (int i = 0 ; i < ((HideableTreeNode )tree .getModel ().getRoot ()).getChildCountFilterless (); i ++)
2314+ {
2315+ HideableTreeNode child = (HideableTreeNode )((HideableTreeNode )tree .getModel ().getRoot ()).getChildAtFilterless (i );
2316+ child .filtered = false ;
2317+ updateFilter (child , filterText , false );
2318+ }
2319+ }
23082320 for (int i = 0 ; i < node .getChildCountFilterless (); i ++)
23092321 {
23102322 HideableTreeNode child = (HideableTreeNode )node .getChildAtFilterless (i );
@@ -2313,14 +2325,15 @@ private void updateFilter(HideableTreeNode node, String filterText)
23132325 child .filtered = false ;
23142326 else
23152327 child .filtered = true ;
2316- updateFilter (child , filterText );
2328+ updateFilter (child , filterText , false );
23172329 }
23182330 ((DefaultTreeModel )tree .getModel ()).reload ();
23192331 }
23202332
23212333 private void refreshTree (String filter )
23222334 {
23232335 expanded .clear ();
2336+ specificSearch = null ;
23242337 deleteChildren ((HideableTreeNode )tree .getModel ().getRoot ());
23252338 for (Field f : clazz .getDeclaredFields ())
23262339 {
@@ -2538,7 +2551,7 @@ else if(Modifier.isVolatile(f.getModifiers()) && !placedVolatile)
25382551 fieldIcon = combineAccess (fieldIcon , volatileCo , 1 );
25392552 else if (Modifier .isStatic (f .getModifiers ()) && !placedStatic )
25402553 fieldIcon = combineAccess (fieldIcon , staticCo , 1 );
2541- model .addRow (new Object [] {fieldIcon , icon , new Object [] {owner , f , tableValue , nullValue }, inst });
2554+ model .addRow (new Object [] {fieldIcon , icon , new Data ( new Object [] {owner , f , tableValue , nullValue }) , inst });
25422555 }
25432556 clazz = clazz .getSuperclass ();
25442557 }
0 commit comments