public void SaveSettings()
        {
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                if (ms.Length != 0)
                {
                    ms.SetLength(0);
                    ms.Seek(0, System.IO.SeekOrigin.Begin);
                }

                XmlDocument doc       = new System.Xml.XmlDocument();
                XmlElement  root_elem = doc.CreateElement("root");
                foreach (SNMPAgent agent in agents)
                {
                    XmlElement elem = doc.CreateElement("agent");
                    AgentFactory.SaveAgent(elem, agent);
                    root_elem.AppendChild(elem);
                }

                foreach (IChannel ch in channels)
                {
                    XmlElement elem = doc.CreateElement("channel");
                    ChannelFactory.SaveChannel(elem, ch);
                    root_elem.AppendChild(elem);
                }
                doc.AppendChild(root_elem);
                doc.Save(ms);
                environment.Project.SetData("settings/" + StringConstants.PluginId + "_channels", ms);
            }
        }
        void LoadSettings()
        {
            channels.Clear();
            agents.Clear();
            using (System.IO.Stream ms = environment.Project["settings/" + StringConstants.PluginId + "_channels"])
            {
                if (ms == null || ms.Length == 0)
                {
                    return;
                }
                XmlDocument doc = new System.Xml.XmlDocument();
                try
                {
                    doc.Load(ms);
                }
                catch
                {
                    return;
                }
                XmlNodeList snodes = doc.GetElementsByTagName("agent");
                foreach (XmlElement snode in snodes)
                {
                    agents.Add(AgentFactory.CreateAgent(snode, this));
                }
                XmlNodeList nodes = doc.GetElementsByTagName("channel");
                foreach (XmlElement node in nodes)
                {
                    channels.Add(ChannelFactory.CreateChannel(node, this));
                }

                foreach (SNMPAgent agent in agents)
                {
                    agent.ClearChannels();
                    foreach (SNMPChannelImp chan in channels)
                    {
                        if (chan.AgentName == agent.Name)
                        {
                            agent.AddChannel(chan);
                            chan.MyAgent = agent;
                        }
                    }
                }
            }
            FireChannelChangedEvent();
        }