You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SIPRP/trunk/SIPRPSoft/src/leaf/ui/LeafTree.java

75 lines
1.5 KiB

package leaf.ui;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import com.evolute.adt.TreeTools;
public class LeafTree extends JTree
{
private static final long serialVersionUID = 1L;
private final List<Object> expandedNodes = new LinkedList<Object>();
public LeafTree(TreeModel model)
{
super(model);
}
public void saveExpansionState()
{
expandedNodes.clear();
TreePath treePath = new TreePath(getRoot());
savePath( treePath );
}
private DefaultMutableTreeNode getRoot()
{
return (DefaultMutableTreeNode) getModel().getRoot();
}
private void savePath( TreePath treePath )
{
if( treePath != null )
{
Enumeration<TreePath> expanded = getExpandedDescendants(treePath);
if( expanded != null )
{
while( expanded.hasMoreElements() )
{
TreePath path = expanded.nextElement();
if( path != null )
{
Object leaf = path.getLastPathComponent();
if( leaf instanceof DefaultMutableTreeNode )
{
Object userObject = ((DefaultMutableTreeNode)leaf).getUserObject();
if( userObject != null )
{
expandedNodes.add(userObject);
}
}
}
savePath(path);
}
}
}
}
public void loadExpansionState()
{
for( Object userObject : expandedNodes )
{
TreeTools.expandNodeForObject( userObject, this );
}
}
}