
//Title:        Your Product Name
//Version:      
//Copyright:    Copyright (c) 1998
//Author:       Your Name
//Company:      Your Company
//Description:  Your description

package presentation;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;

public class TreeExampleFrame extends JFrame {
  private JTree theTree;
  DefaultTreeModel theModel;
  
  public TreeExampleFrame() {
    super("Tree Example");
    setSize(400,300);
    this.addWindowListener(new WindowAdapter() {
    	public void windowClosing(WindowEvent e) {
       	System.exit(0);
       }
    });
  }

  public void createTree() {

    ImageIcon fb = new ImageIcon("C:/Temp/fball.bmp");
    //DefaultTreeCellRenderer dtcr = new DefaultTreeCellRenderer();
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("NFL");
    DefaultMutableTreeNode conferenceN = new DefaultMutableTreeNode("NFC");
    DefaultMutableTreeNode conferenceA = new DefaultMutableTreeNode("AFC");
    DefaultMutableTreeNode eastN = new DefaultMutableTreeNode("Eastern Division");
    DefaultMutableTreeNode centralN = new DefaultMutableTreeNode("Central Division");
    DefaultMutableTreeNode westN = new DefaultMutableTreeNode("Western Division");
    DefaultMutableTreeNode eastA = new DefaultMutableTreeNode("Eastern Division");
    DefaultMutableTreeNode centralA = new DefaultMutableTreeNode("Central Division");
    DefaultMutableTreeNode westA = new DefaultMutableTreeNode("Western Division");
    DefaultMutableTreeNode[] teamsN = buildTeamsN();
    DefaultMutableTreeNode[] teamsA = buildTeamsA();

    theModel = new DefaultTreeModel(root);
    theTree = new JTree(theModel);
    theModel.addTreeModelListener(new TreeModelListener_adapter(this));
    theTree.addTreeSelectionListener(new TreeSelectionListener_adapter(this));

    
    theModel.insertNodeInto(conferenceN,root,0);
    theModel.insertNodeInto(conferenceA,root,1);
    theModel.insertNodeInto(eastN,conferenceN,0);
    theModel.insertNodeInto(centralN,conferenceN,1);
    theModel.insertNodeInto(westN,conferenceN,2);
    theModel.insertNodeInto(eastA,conferenceA,0);
    theModel.insertNodeInto(centralA,conferenceA,1);
    theModel.insertNodeInto(westA,conferenceA,2);
    for (int i=0; i<5; i++) {
      theModel.insertNodeInto(teamsN[i],westN,i);
    }

    for (int i=0; i<5; i++) {
      theModel.insertNodeInto(teamsA[i],eastA,i);
    }

    this.getContentPane().add(theTree, BorderLayout.CENTER);
  }

  private DefaultMutableTreeNode[] buildTeamsN() {

    DefaultMutableTreeNode[] teams = new DefaultMutableTreeNode[5];
    teams[0] = new DefaultMutableTreeNode("San Francisco");
    teams[1] = new DefaultMutableTreeNode("St. Louis");
    teams[2] = new DefaultMutableTreeNode("Atlanta");
    teams[3] = new DefaultMutableTreeNode("Carolina");
    teams[4] = new DefaultMutableTreeNode("New Orleans");
    return teams;
  }

  private DefaultMutableTreeNode[] buildTeamsA() {

    DefaultMutableTreeNode[] teams = new DefaultMutableTreeNode[5];
    teams[0] = new DefaultMutableTreeNode("Buffalo");
    teams[1] = new DefaultMutableTreeNode("Indianapolis");
    teams[2] = new DefaultMutableTreeNode("N.Y. Jets");
    teams[3] = new DefaultMutableTreeNode("Miami");
    teams[4] = new DefaultMutableTreeNode("New England");
    return teams;
  }


  public static void main(String args[]) {

    TreeExampleFrame tef = new TreeExampleFrame();
    tef.createTree();
    tef.setVisible(true);
  }
}

class TreeModelListener_adapter implements javax.swing.event.TreeModelListener{
  TreeExampleFrame adaptee;

  TreeModelListener_adapter(TreeExampleFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void treeNodesChanged(TreeModelEvent e) {
    System.out.println("Made it Here Change");
  }

  public void treeNodesInserted(TreeModelEvent e) {
    System.out.println("Made it Here Insert");
  }

  public void treeNodesRemoved(TreeModelEvent e) {
    System.out.println("Made it Here Remove");
  }

  public void treeStructureChanged(TreeModelEvent e) {
    System.out.println("Made it Here");
  }
}

class TreeSelectionListener_adapter implements javax.swing.event.TreeSelectionListener{
  TreeExampleFrame adaptee;

  TreeSelectionListener_adapter(TreeExampleFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void valueChanged(TreeSelectionEvent e) {
    System.out.println("Made it Here Selection "+e.getSource()+" AND "+e.toString());
  }
  
}

