void TR_Groups_E_OnEndNodeClicked(object sender, TreeNodeClickEventArg e)
        {
            TriStateTreeNode selectedNode = TR_Groups.SelectedNode as TriStateTreeNode;

            if (selectedNode.Parent == null)
            {
                //RootNodeContextClicked(selectedNode, text, index);
            }
            else
            {
                if (selectedNode.Parent.Equals(_peersRoot)) //peer
                {
                    //int rowIndex = _peersRoot.Nodes.IndexOf(selectedNode);
                    _activatedPeerNode = selectedNode;

                    if (E_PeerSelected != null)
                    {
                        E_PeerSelected(selectedNode, new PeerSelectedEventArgs(selectedNode.Text, getActivatedPeer()));
                    }
                }
                else if (selectedNode.Parent.Equals(_groupsRoot)) //group
                {
                    TriStateTreeNode peerNode  = _activatedPeerNode;
                    string           groupName = selectedNode.Text;
                    try
                    {
                        getActivatedPeer().SetMsgList(groupName);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        return;
                    }
                    peerNode.Text = peerNode.Name + "[" + groupName + "]";


                    if (E_GroupSelected != null)
                    {
                        E_GroupSelected(selectedNode, new GroupSelectedEventArgs(groupName, _groupsDir + "\\" + groupName));
                    }
                }
                else if (selectedNode.Parent.Parent != null && selectedNode.Parent.Parent.Equals(_groupsRoot)) //packet selected
                {
                    TriStateTreeNode peerNode = _activatedPeerNode;                                            // _peersRoot.Nodes[peerIndex] as TriStateTreeNode;

                    string groupName = selectedNode.Parent.Text;
                    String groupPath = _groupsDir + "\\" + groupName;
                    getActivatedPeer().SetMsgList(groupName);
                    peerNode.Text = peerNode.Name + "[" + groupName + "]";

                    if (E_GroupSelected != null)
                    {
                        E_GroupSelected(selectedNode, new GroupSelectedEventArgs(selectedNode.Parent.Text, groupPath));
                    }
                    String packetPath = groupPath + "\\" + selectedNode.Text;
                    if (E_PacketChanged != null)
                    {
                        E_PacketChanged(selectedNode, new PacketChangedEventArgs(selectedNode.Text, packetPath));
                    }
                }
            }
        }