sidekick
Class FilteredTreeModel

java.lang.Object
  extended by sidekick.FilteredTreeModel
All Implemented Interfaces:
javax.swing.tree.TreeModel

public class FilteredTreeModel
extends java.lang.Object
implements javax.swing.tree.TreeModel

This class provides a filtered view on an underlying TreeModel. Nodes may be associated with keywords that can be searched for hiding all nodes that do not match the search term.


Nested Class Summary
static interface FilteredTreeModel.ParentProvider
          Interface to retrieve parent nodes.
static class FilteredTreeModel.TreeNodeParentProvider
          Implements TreeNodeParentProvider for tree models that use TreeNode objects such as DefaultTreeModel.
 
Constructor Summary
FilteredTreeModel(javax.swing.tree.DefaultTreeModel model, boolean ignoreCase)
          Constructs a filtering tree model.
FilteredTreeModel(javax.swing.tree.TreeModel model, boolean ignoreCase, FilteredTreeModel.ParentProvider parentProvider)
          Constructs a filtering tree model.
 
Method Summary
 void addSearchKey(java.lang.Object node, java.lang.String key)
          Associates node with a search key.
 void addTreeModelListener(javax.swing.event.TreeModelListener l)
           
 void clearFilter()
          Makes all nodes in the tree visible.
 void filterByText(java.lang.String text)
          Hides nodes from the tree that do not match text.
 java.lang.Object getChild(java.lang.Object parent, int index)
           
 int getChildCount(java.lang.Object parent)
           
 int getIndexOfChild(java.lang.Object parent, java.lang.Object child)
           
protected  java.util.SortedMap<java.lang.String,java.util.List<java.lang.Object>> getMatches(java.lang.String text)
           
 javax.swing.tree.TreeModel getModel()
          Returns the underlying data model.
 java.lang.Object getRoot()
           
 boolean isLeaf(java.lang.Object node)
           
 boolean isVisible(java.lang.Object node)
           
 void reload()
           
 void removeSearchKey(java.lang.Object node, java.lang.String key)
           
 void removeTreeModelListener(javax.swing.event.TreeModelListener l)
           
 void reset()
          Sets all nodes visible.
 void setModel(javax.swing.tree.DefaultTreeModel model)
          Sets the underlying data model.
 void setModel(javax.swing.tree.TreeModel model, FilteredTreeModel.ParentProvider parentProvider)
          Sets the underlying data model.
 void valueForPathChanged(javax.swing.tree.TreePath path, java.lang.Object newValue)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FilteredTreeModel

public FilteredTreeModel(javax.swing.tree.DefaultTreeModel model,
                         boolean ignoreCase)
Constructs a filtering tree model.

Parameters:
model - the underlying data model
ignoreCase - if true, filtering is case insensitive

FilteredTreeModel

public FilteredTreeModel(javax.swing.tree.TreeModel model,
                         boolean ignoreCase,
                         FilteredTreeModel.ParentProvider parentProvider)
Constructs a filtering tree model.

Parameters:
model - the underlying data model
ignoreCase - if true, filtering is case insensitive
parentProvider - used to retrieve parents of nodes
Method Detail

addSearchKey

public void addSearchKey(java.lang.Object node,
                         java.lang.String key)
Associates node with a search key.


addTreeModelListener

public void addTreeModelListener(javax.swing.event.TreeModelListener l)
Specified by:
addTreeModelListener in interface javax.swing.tree.TreeModel

clearFilter

public void clearFilter()
Makes all nodes in the tree visible.


getMatches

protected java.util.SortedMap<java.lang.String,java.util.List<java.lang.Object>> getMatches(java.lang.String text)

filterByText

public void filterByText(java.lang.String text)
Hides nodes from the tree that do not match text.

Parameters:
text - search text

getChild

public java.lang.Object getChild(java.lang.Object parent,
                                 int index)
Specified by:
getChild in interface javax.swing.tree.TreeModel

getChildCount

public int getChildCount(java.lang.Object parent)
Specified by:
getChildCount in interface javax.swing.tree.TreeModel

getIndexOfChild

public int getIndexOfChild(java.lang.Object parent,
                           java.lang.Object child)
Specified by:
getIndexOfChild in interface javax.swing.tree.TreeModel

getModel

public javax.swing.tree.TreeModel getModel()
Returns the underlying data model.


getRoot

public java.lang.Object getRoot()
Specified by:
getRoot in interface javax.swing.tree.TreeModel

isLeaf

public boolean isLeaf(java.lang.Object node)
Specified by:
isLeaf in interface javax.swing.tree.TreeModel

isVisible

public boolean isVisible(java.lang.Object node)

reload

public void reload()

removeSearchKey

public void removeSearchKey(java.lang.Object node,
                            java.lang.String key)

removeTreeModelListener

public void removeTreeModelListener(javax.swing.event.TreeModelListener l)
Specified by:
removeTreeModelListener in interface javax.swing.tree.TreeModel

setModel

public void setModel(javax.swing.tree.DefaultTreeModel model)
Sets the underlying data model.

Parameters:
model - data model

setModel

public void setModel(javax.swing.tree.TreeModel model,
                     FilteredTreeModel.ParentProvider parentProvider)
Sets the underlying data model.

Parameters:
model - data model
parentProvider - used to retrieve parents of nodes

reset

public void reset()
Sets all nodes visible.


valueForPathChanged

public void valueForPathChanged(javax.swing.tree.TreePath path,
                                java.lang.Object newValue)
Specified by:
valueForPathChanged in interface javax.swing.tree.TreeModel