コード例 #1
0
 public void CloseAllPeers()
 {
     for (int i = 0; i < _peersRoot.Nodes.Count; i++)
     {
         Con_Peer peer = _peersRoot.Nodes[i].RelativeObject["peer"] as Con_Peer;
         peer.Close();
     }
 }
コード例 #2
0
        void RootNodeContextClicked(TriStateTreeNode node, String text, int index)
        {
            if (node.Equals(_peersRoot))
            {
                switch (text)
                {
                case "새 Peer 생성":
                    InputForm    input  = new InputForm();
                    DialogResult result = input.ShowDialog("New Packet Name");
                    if (result == DialogResult.Abort || result == DialogResult.Cancel || input.InputText.Trim().Length == 0)
                    {
                        return;
                    }
                    String newPacketPath = _peersDir + "\\" + input.InputText + ".xml";
                    if (File.Exists(newPacketPath))
                    {
                        MessageBox.Show("중복되는 이름이 있습니다.");
                        return;
                    }

                    Con_Peer peer = new Con_Peer(newPacketPath);

                    TriStateTreeNode peerNode = TR_Groups.AddChild(_peersRoot, input.InputText);
                    peerNode.RelativeObject["peer"] = peer;
                    if (_groupsRoot.Nodes.Count > 0)
                    {
                        String groupName = _groupsRoot.Nodes[0].Text;
                        peer.SetMsgList(groupName);
                    }
                    break;
                }
            }
            else if (node.Equals(_groupsRoot))
            {
                switch (text)
                {
                case "새 그룹 생성":
                    FormAdders.InputForm input  = new InputForm();
                    DialogResult         result = input.ShowDialog("Report 사용자이름 입력");

                    if (result == System.Windows.Forms.DialogResult.Cancel || result == System.Windows.Forms.DialogResult.Cancel)
                    {
                        return;
                    }
                    if (input.InputText.Trim().Length == 0)
                    {
                        return;
                    }
                    string newDir = _groupsDir + "\\" + input.InputText;
                    if (Directory.Exists(newDir))
                    {
                        MessageBox.Show("이름이 중복됩니다.");
                        return;
                    }
                    TriStateTreeNode child = TR_Groups.AddChild(_groupsRoot, input.InputText);
                    TR_Groups.AddContextMenuItemParentNode(child, "새 패킷 생성");

                    Directory.CreateDirectory(newDir);

                    _groupPaths = Directory.GetDirectories(_groupsDir);
                    break;
                }
            }
        }
コード例 #3
0
 public PeerSelectedEventArgs(string groupName, Con_Peer peer)
 {
     Name = groupName;
     Peer = peer;
 }
コード例 #4
0
        public void loadGroups()
        {
            TR_Groups.ClearAllItems();



            _peersRoot = TR_Groups.AddRoot("Peers");
            //TR_Groups.AddContextMenuItemEndNode(_peersRoot, "새 Peer 생성");
            TR_Groups.AddContextMenuItemParentNode(_peersRoot, "새 Peer 생성");

            String[] peerPaths = Directory.GetFiles(_peersDir);

            for (int i = 0; i < peerPaths.Length; i++)
            {
                Con_Peer peer = new Con_Peer(peerPaths[i]);
                String   name = peerPaths[i].Substring(peerPaths[i].LastIndexOf("\\") + 1);
                name = name.Substring(0, name.LastIndexOf("."));// .xml을 떼어줌..
                TriStateTreeNode node = TR_Groups.AddChild(_peersRoot, name);
                node.RelativeObject["peer"] = peer;
                peer.SetName(name);
                _activatedPeerNode = node;


                //_peersGroup[peer] = name;//마지막 읽은 group을 _activatedPeer에 배정한다.
                //peer.SetMsgList(name, new ConMsgList(name));
            }

            String[] grpPaths = Directory.GetDirectories(_groupsDir);

            _groupsRoot = TR_Groups.AddRoot("Groups");
            //TR_Groups.AddContextMenuItemEndNode(_groupsRoot, "새 그룹 생성");
            TR_Groups.AddContextMenuItemParentNode(_groupsRoot, "새 그룹 생성");

            for (int i = 0; i < grpPaths.Length; i++)
            {
                String           name = grpPaths[i].Substring(grpPaths[i].LastIndexOf("\\") + 1);
                TriStateTreeNode grp  = TR_Groups.AddChild(_groupsRoot, name);
                TR_Groups.AddContextMenuItemParentNode(grp, "새 패킷 생성");

                grp.RelativeObject["dir"] = grpPaths[i];

                String[] packets = Directory.GetDirectories(grpPaths[i]);

                for (int p = 0; p < packets.Length; p++)
                {
                    String           childName = packets[p].Substring(packets[p].LastIndexOf("\\") + 1);
                    TriStateTreeNode childNode = TR_Groups.AddChild(grp, childName);
                    childNode.RelativeObject["dir"] = packets[p];
                    TR_Groups.AddContextMenuItemEndNode(childNode, "편집");
                    TR_Groups.AddContextMenuItemEndNode(childNode, "삭제");
                    TR_Groups.AddContextMenuItemEndNode(childNode, "복사본만들기");
                }
            }

            for (int i = 0; i < _peersRoot.Nodes.Count; i++)
            {
                if (_groupsRoot.Nodes.Count > 0)
                {
                    TriStateTreeNode node = _peersRoot.Nodes[i];
                    Con_Peer         peer = node.RelativeObject["peer"] as Con_Peer;
                    XmlDocument      xDoc;
                    XmlNode          root = XmlHandlers.XmlGetter.RootNode(out xDoc, peerPaths[i]);
                    XmlNode          Envs = XmlHandlers.XmlGetter.Child(root, "Envs");

                    String groupName = _groupsRoot.Nodes[0].Text;
                    bool   isFound   = false;
                    foreach (XmlNode anEnv in Envs.ChildNodes)
                    {
                        string name = XmlHandlers.XmlGetter.Attribute(anEnv, "Name");
                        if (name.ToLower().Equals("groupname"))
                        {
                            for (int g = 0; g < _groupsRoot.Nodes.Count; g++)
                            {
                                if (_groupsRoot.Nodes[g].Text.Equals(anEnv.InnerText))
                                {
                                    groupName = anEnv.InnerText;
                                    isFound   = true;
                                    break;
                                }
                            }
                            if (isFound)
                            {
                                break;
                            }
                        }
                    }

                    _peersGroup[peer] = groupName;
                    node.Text         = peer.Name + "[" + groupName + "]";
                }
            }

            TR_Groups.Refresh();
            _groupsRoot.Expand();
            _peersRoot.Expand();
            TR_Groups.Refresh();
        }