wxTreeItemId luProjTree::findItemByData(const wxTreeItemId& parent, const wxString& data)
{
	if (!parent.IsOk()) return parent;

	ItemData* item = dynamic_cast<ItemData*>(GetItemData(parent));
	if (item && item->GetName() == data)
		return parent;

	if (item) gkPrintf("%s", (const char*)item->GetName());

	if (HasChildren(parent))
	{
		wxTreeItemIdValue cookie;
		wxTreeItemId item = GetFirstChild(parent, cookie);
		while (item.IsOk())
		{
			wxTreeItemId find = findItemByData(item, data); //find is item self or children.
			if (find.IsOk()) return find;

			item = GetNextChild(item, cookie);
		}
	}

	return wxTreeItemId(); //not found
}
void luProjTree::OnItemActivated(wxTreeEvent& event)
{
    wxTreeItemId itemId = event.GetItem();
    ItemData* item = (ItemData*)GetItemData(itemId);

	luMainFrame* frame = getLuMainFrame();

	if (!item || !frame) return;
	int data = item->GetData();

	wxString name = item->GetName();
}
wxString luProjTree::getSelectedItemName()
{
	ItemData* itemData = _getSelectedItemData();
	return itemData ? itemData->GetName() : "";
}