Creating a Tree Structure of the Contact List


The DynamicTree.java file creates and maintains a tree structure of the contact list. Listing 7-7 shows the contents of the DynmaicTree.java file:

Listing 7-7: The DynamicTree.java File

start example
 /*Imports required GridLayout class*/ import java.awt.GridLayout; /*Imports required Toolkit class*/ import java.awt.Toolkit; /*Imports required JPanel class*/ import javax.swing.JPanel; /*Imports required JScrollPane class*/ import javax.swing.JScrollPane; /*Imports required JTree class*/ import javax.swing.JTree; /*Imports required DefaultMutableTreeNode class*/ import javax.swing.tree.DefaultMutableTreeNode; /* mports required DefaultTreeModel class*/ import javax.swing.tree.DefaultTreeModel; /*Imports required MutableTreeNode class*/ import javax.swing.tree.MutableTreeNode; /*Imports required TreePath class*/ import javax.swing.tree.TreePath; /*Imports required TreeSelectionModel class*/ import javax.swing.tree.TreeSelectionModel; /*Imports required TreeModelEvent class*/ import javax.swing.event.TreeModelEvent; /*Imports required TreeModelListener class*/ import javax.swing.event.TreeModelListener; /* class DynamicTree - This class is used to create a tree. Constructor: DynamicTree-This constructor creates GUI. Methods: clear: This method is called remove all node from tree. getTreeHandler: This method is called to get handler of the object of JTree class. removeCurrentNode: This method is called to remove selected node from tree. addObject: This method is called to add node into the tree. */ public class DynamicTree extends JPanel  {    /*Declares object of DefaultMutableTreeNode class.*/    DefaultMutableTreeNode rootNode;    /*Declares object of DefaultTreeModel class.*/    DefaultTreeModel treeModel;    /*Declares object of JTree class.*/    JTree tree;    /*Declares and initializes object of Toolkit class.*/    Toolkit toolkit = Toolkit.getDefaultToolkit();    public DynamicTree(DefaultMutableTreeNode node)    {       super(new GridLayout(1, 0));       /*initializes the object of DefaultMutableTreeNode class.*/       rootNode = new DefaultMutableTreeNode("My Contact List");       /*initializes the object of DefaultTreeModel class.*/       treeModel = new DefaultTreeModel(rootNode);       treeModel.addTreeModelListener(new RosterTreeModelListener());       /*initializes the object of JTree class.*/       tree = new JTree(treeModel);       tree.setEditable(true);       tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);       tree.setShowsRootHandles(true);       /*Declares and initializes object of JScrollPane class.*/       JScrollPane scrollPane = new JScrollPane(tree);       add(scrollPane);    }    /*    clear: This method is called remove all node from tree.    Parameter: N/A    Return Value: N/A    */    public void clear()    {       rootNode.removeAllChildren();       treeModel.reload();    }    /*    getTreeHandler: This method is called to get handler of the object of JTree class.    Parameter: N/A    Return Value: JTree    */    public JTree getTreeHandler()    {       return tree;    }    /*    removeCurrentNode: This method is called to remove selected node from tree.    Parameter: N/A    Return Value: N/A    */    public void removeCurrentNode()     {    TreePath currentSelection = tree.getSelectionPath();    if (currentSelection != null)    {       DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)       (currentSelection.getLastPathComponent());       MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());       if (parent != null) {          treeModel.removeNodeFromParent(currentNode);          return;          }       }       toolkit.beep();    }    /*    addObject: This method is called to add node into the tree.    Parameter: child - Object of Object class.    Return Value: DefaultMutableTreeNode    */    public DefaultMutableTreeNode addObject(Object child)     {       DefaultMutableTreeNode parentNode = null;       TreePath parentPath = tree.getSelectionPath();       if (parentPath == null)        {          parentNode = rootNode;       }       else       {          parentNode = (DefaultMutableTreeNode)(parentPath.getLastPathComponent());       }       return addObject(parentNode, child, true);    }    /*    addObject: This method is called to add child into the give tree node.    Parameter: parent - Object of DefaultMutableTreeNode class, child - Object of Object class.    Return Value: DefaultMutableTreeNode    */    public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,Object child)     {       return addObject(parent, child, true);    }    /*    addObject: This method is called to add child into the give tree node.    Parameter: parent - Object of DefaultMutableTreeNode class, child - Object of Object    class, shouldBeVisible    Return Value: DefaultMutableTreeNode    */    public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent, Object child, boolean    shouldBeVisible)     {       DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(child);       if (parent == null)        {          parent = rootNode;       }       treeModel.insertNodeInto(childNode, parent, parent.getChildCount());       if (shouldBeVisible)        {          tree.scrollPathToVisible(new TreePath(childNode.getPath()));       }       return childNode;    }    /*    class DynamicTree - This class implements TreeModelListener interface.    */    class RosterTreeModelListener implements TreeModelListener     {       public void treeNodesChanged(TreeModelEvent e)        {          DefaultMutableTreeNode node;          node = (DefaultMutableTreeNode)(e.getTreePath().getLastPathComponent());          try          {             int index = e.getChildIndices()[0];             node = (DefaultMutableTreeNode)(node.getChildAt(index));          }          catch (NullPointerException exc) {}       }       public void treeNodesInserted(TreeModelEvent e) {}       public void treeNodesRemoved(TreeModelEvent e) {}       public void treeStructureChanged(TreeModelEvent e) {}    } } 
end example

Download this listing.

In the above code, the constructor of the DynamicTree class takes an object of the DefaultMutableTreeNode class and creates a tree structure of the contact list for the Contact List application.

The methods defined in Listing 7-7 are:

  • clear(): Removes all end user names from the tree structure of the contact list.

  • getTreeHandler(): Returns the object of the JTree class.

  • removeCurrentNode(): Removes the selected end users from the tree structure of the contact list.

  • addObject(): Adds other end users to the tree structure of the contact list.




Developing Applications Using Jabber
Developing Applications Using Jabber
ISBN: N/A
EAN: N/A
Year: 2004
Pages: 68

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net