public void valueChanged(TreeSelectionEvent e)
        {
            JTree tree = (JTree) e.getSource();
            TreePath treepath = tree.getSelectionPath();
            if (null == treepath)  return;
            
            NamedDataSectionable parentDataSectionable = null;
            if (treepath.getPathCount() > 1)
            	parentDataSectionable = (NamedDataSectionable)treepath.getPathComponent(treepath.getPathCount() - 2);
            NamedDataSectionable namedDataSectionable = (NamedDataSectionable)treepath.getPathComponent(treepath.getPathCount() - 1);
            
            Object object = namedDataSectionable.getData();
            
            if (namedDataSectionable instanceof ListItemDataSectionable)
            {
                ListItemDataSectionable listItemDataSectionable = (ListItemDataSectionable)namedDataSectionable;
                displayList(listItemDataSectionable.getParentDataSectionable(), listItemDataSectionable.getListID(), listItemDataSectionable.getList(), listItemDataSectionable.getIndex(), listItemDataSectionable.getIndex());
                return;
            }
            else if (namedDataSectionable instanceof ListDataSectionable)
            {
                ListDataSectionable listDataSectionable = (ListDataSectionable)namedDataSectionable;

                displayList(listDataSectionable.getParentDataSectionable(), listDataSectionable.getListID(), listDataSectionable.getList(), listDataSectionable.getStartIndex(), listDataSectionable.getEndIndex());
                return;
            }
            else if (null == parentDataSectionable)
	        {
	            displayPanel.removeAll();
	            displayPanel.add(new JLabel("Nothing selected."));
	            displayPanel.getTopLevelAncestor().validate();
	            return;
	        }
            else
            {
//                if (object instanceof byte[])
//                {
//            		ByteDataTableControl bDTC = new ByteDataTableControl((byte[])object, 32, 0);
//                    displayPanel.removeAll();
//                    displayPanel.add(bDTC);
//                    displayPanel.getTopLevelAncestor().validate();
//                    return;
//                }
                
                DataSection dataSection;
                if (parentDataSectionable instanceof ListDataSectionable)
                {
                    ListDataSectionable listDataSectionable = (ListDataSectionable)parentDataSectionable;
                    dataSection = getDataSectionForParentAndName(parentDataSectionable, listDataSectionable.getListID());
                }
                else
                {
                    dataSection = getDataSectionForParentAndName(parentDataSectionable, namedDataSectionable.getLabel());
                }
                // IMPLEMENT: probably dump the above
                display(parentDataSectionable, dataSection.getDataSectionName());
            }
        }