private void cmdAddAdapter_Click(object sender, EventArgs e)
        {
            cmdAddAdapter.Enabled = false;
            dlgOpenAdapterDll.InitialDirectory = Application.StartupPath;

            if (DialogResult.OK == dlgOpenAdapterDll.ShowDialog())
            {
                if (AdapterManager.TryToAdd(dlgOpenAdapterDll.FileName))
                {
                    RefreshAdapters();
                }
            }

            cmdAddAdapter.Enabled = true;
        }
        private void cmdRemoveAdapter_Click(object sender, EventArgs e)
        {
            if (0 == lvAdapters.SelectedItems.Count)
            {
                return;
            }

            AdapterManager.AdapterType tAdapterType = lvAdapters.SelectedItems[0].Tag as AdapterManager.AdapterType;
            if (null == tAdapterType)
            {
                return;
            }

            if (AdapterManager.UnregisterAdapterDatatype(tAdapterType))
            {
                RefreshAdapters();
            }
        }
Exemple #3
0
            public override Boolean Import(XmlDocument xmlDocument, XmlNode xmlRootNode, ref AdapterList BMObject, int nIndex)
            {
                if ((null == xmlDocument) || (null == xmlRootNode))
                {
                    return(false);
                }

                try
                {
                    //! get root node

                    XmlNode AdapterTypesNode = null;
                    //! find groups from root node
                    if (xmlRootNode.Name != XMLRootName)
                    {
                        AdapterTypesNode = xmlRootNode.SelectSingleNode(XMLRootName);
                    }
                    else
                    {
                        AdapterTypesNode = xmlRootNode;
                    }

                    if (null == AdapterTypesNode)
                    {
                        if (0 == xmlRootNode.ChildNodes.Count)
                        {
                            return(false);
                        }

                        //! search for node "Groups" in each childnode
                        foreach (XmlNode xmlChildren in xmlRootNode.ChildNodes)
                        {
                            if (Import(xmlDocument, xmlChildren, ref BMObject, nIndex))
                            {
                                return(true);
                            }
                        }

                        return(false);
                    }

                    //! get parameter group set with index number
                    XmlNodeList xmlParameterAgentList = AdapterTypesNode.SelectNodes(XMLObjectName);
                    if (null == xmlParameterAgentList)
                    {
                        return(false);
                    }

                    if (xmlParameterAgentList.Count <= nIndex)
                    {
                        return(false);
                    }

                    //! get specified setting entrance
                    XmlNodeList xmlAdapterTypes = xmlParameterAgentList[nIndex].SelectNodes("AdapterType");
                    if (null == xmlAdapterTypes)
                    {
                        //! nothing to import
                        return(true);
                    }

                    //! import each node
                    foreach (XmlNode tNode in xmlAdapterTypes)
                    {
                        //! get assmebly string
                        if (null == tNode.SelectSingleNode("Assembly"))
                        {
                            continue;
                        }
                        String tAssembly = tNode.SelectSingleNode("Assembly").InnerText;
                        if (null == tAssembly)
                        {
                            continue;
                        }
                        if ("" == tAssembly.Trim())
                        {
                            continue;
                        }


                        //! get type
                        if (null == tNode.SelectSingleNode("Type"))
                        {
                            continue;
                        }
                        String tAdapterType = tNode.SelectSingleNode("Type").InnerText;
                        if (null == tAdapterType)
                        {
                            continue;
                        }
                        if ("" == tAdapterType.Trim())
                        {
                            continue;
                        }

                        //! read version
                        String tVersion = tNode.SelectSingleNode("Version").InnerText;

                        try
                        {
                            //! load assmebly
                            Assembly ass = Assembly.LoadFrom(System.IO.Path.Combine(Application.StartupPath, tAssembly));
                            if (null == ass)
                            {
                                continue;
                            }

                            //! load class
                            Object newAdapter = ass.CreateInstance("ESnail.Device.Adapters.AdapterLoader");
                            if (null == newAdapter)
                            {
                                continue;
                            }

                            //! load method
                            MethodInfo tMethod = ass.GetType("ESnail.Device.Adapters.AdapterLoader").GetMethod("Create");
                            if (tMethod == null)
                            {
                                continue;
                            }

                            //! load adapter
                            Adapter tAdapter = tMethod.Invoke(newAdapter, new Object[] { null, null }) as Adapter;
                            if (null == tAdapter)
                            {
                                continue;
                            }

                            if (null == tAdapter.Type)
                            {
                                continue;
                            }
                            else if ("" == tAdapter.Type.Trim())
                            {
                                continue;
                            }
                            else if (tAdapter.Type.Trim().ToUpper() != tAdapterType.Trim().ToUpper())
                            {
                                continue;
                            }
                            if (tAdapter.Version != tVersion)
                            {
                                continue;
                            }

                            //! register adapter
                            AdapterManager.RegisterAdapterDatatype(tAdapter, tAssembly);
                        }
                        catch (Exception Err)
                        {
                            Err.ToString();
                            continue;
                        }
                    }

                    BMObject = new AdapterList(AdapterManager.AdapterTypes);
                }
                catch (Exception Err)
                {
                    m_Exception = Err;
                    return(false);
                }
                return(true);
            }