public void selectRegion(Region regionToSelect)
    {
        // ONLY LOOK FOR IT IF IT EXISTS
        if (worldDataManager.hasRegion(regionToSelect))
        {
            LinkedList<Region> pathToRegion = worldDataManager.getPathFromRoot(regionToSelect);
            DefaultMutableTreeNode walker = (DefaultMutableTreeNode)worldTreeModel.getRoot();
            boolean regionFound = false;
            int pathIndex = 0;
            while (!regionFound)
            {
                Region testRegion = (Region)walker.getUserObject();
                if (testRegion.getId().equals(regionToSelect.getId()))
                {
                    // SELECT THIS NODE
                    TreePath pathToWalker = new TreePath(walker.getPath());
                    worldTree.setSelectionPath(pathToWalker);
                    regionFound = true;
                }
                // LOOK THROUGH THE CHILD NODES FOR THE NEXT ONE
                else
                {
                    DefaultMutableTreeNode testNode;
                    boolean childFound = false;
                    for (int i = 0; i < walker.getChildCount() && !childFound; i++ )
                    {
                        testNode = (DefaultMutableTreeNode)walker.getChildAt(i);
                        testRegion = (Region)testNode.getUserObject();
                        Region testChild = pathToRegion.get(pathIndex + 1);
                        if (testRegion.getId().equals(testChild.getId()))
                        {
                            childFound = true;
                            walker = testNode;
                        }
                    }
                    pathIndex++;
                }
            }
            TreeNode[] pathToRoot = worldTreeModel.getPathToRoot(walker);
            TreePath path = new TreePath(pathToRoot);
            worldTree.setSelectionPath(path);  
        }
    }