/**
* Called when the material name has changed
* @param pMaterial The material that was deleted.
* @param oldName The old name of the material.
*/
void MaterialTreeView::MV_OnMaterialNameChanged( MaterialDoc *pMaterial, const char *oldName ) {
	CTreeCtrl &tree = GetTreeCtrl();
	if( !internalChange ) {
		//Delete the old tree item
		HTREEITEM *item = NULL;
		materialToTree.Get( oldName, &item );
		CTreeCtrl &tree = GetTreeCtrl();
		HTREEITEM tempItem = *item;
		CleanLookupTrees( tempItem );
		tree.DeleteItem( tempItem );
		//Now add it back
		idStrList list( 1024 );
		idMaterial	*mat = pMaterial->renderMaterial;
		idStr temp;
		if( treeWithFile ) {
			idStr filename = mat->GetFileName();
			filename.StripPath();
			temp = idStr( mat->GetFileName() ) + "/" + idStr( mat->GetName() ) + "|" + filename;
		} else {
			temp = mat->GetName();
		}
		list.Append( temp );
		AddStrList( NULL, &list, treeWithFile );
		//Keep the items sorted
		//item = NULL;
		materialToTree.Get( pMaterial->name.c_str(), &item );
		if( *item ) {
			CTreeCtrl &tree = GetTreeCtrl();
			HTREEITEM parent = tree.GetParentItem( *item );
			tree.SortChildren( parent );
		}
		MV_OnMaterialChange( pMaterial );
	}
}
/**
* Called when a material is added
* @param pMaterial The material that was added.
*/
void MaterialTreeView::MV_OnMaterialAdd(MaterialDoc* pMaterial) {

	idStrList list(1024);

	idMaterial	*mat = pMaterial->renderMaterial;
	idStr temp;

	if(treeWithFile) {
		idStr filename = mat->GetFileName();
		filename.StripPath();
		temp = idStr(mat->GetFileName()) + "/" + idStr(mat->GetName()) + "|" + filename;
	} else {
		temp = mat->GetName();
	}

	list.Append(temp);
	AddStrList(NULL, &list, treeWithFile);

	//Keep the items sorted
	HTREEITEM* item = NULL;
	materialToTree.Get(pMaterial->name, &item);
	if(*item) {
		CTreeCtrl& tree = GetTreeCtrl();
		HTREEITEM parent = tree.GetParentItem(*item);
		tree.SortChildren(parent);
	}

	MV_OnMaterialChange(pMaterial);
}