private void PopulatePreviousSelections()
        {
            gridPrevSelections.Rows.Clear();
            gridPrevSelections.Rows.Add("  -- empty --");
            List <object> addedObjects = new List <object>();

            foreach (var funcParams in FunctionRunner.CachedParameters.Values)
            {
                foreach (object param in funcParams)
                {
                    if (TypeOfObject.IsInstanceOfType(param))
                    {
                        bool found = false;

                        foreach (object alreadyAddedObj in addedObjects)
                        {
                            if (alreadyAddedObj == param)
                            {
                                found = true;
                                break;
                            }
                        }
                        if (!found)
                        {
                            string name  = string.Format("{0} [{1}]", ProviderInfo.GetDisplayName(param), param.GetType().Name);
                            int    index = gridPrevSelections.Rows.Add(name);
                            gridPrevSelections.Rows[index].Tag = param;
                            addedObjects.Add(param);
                        }
                    }
                }
            }
            gridPrevSelections.Sort(gridPrevSelections.Columns[0], ListSortDirection.Ascending);
        }
        private void AddPropertiesToTreeview(DevComponents.AdvTree.Node parentNode)
        {
            treeList1.BeginUpdate();
            parentNode.Nodes.Clear();
            PopulatedCollectionNodes.Add(parentNode);
            object obj = parentNode.Tag;

            PropertyInfo[] properties = obj.GetType().GetProperties();

            foreach (PropertyInfo prop in properties)
            {
                PropertyAttributes atts = GetPropertyAttributes(prop);

                // We don't want strings to be treated as collections.
                if (atts.IsCollection)
                {
                    DevComponents.AdvTree.Node collectionNode = null;

                    foreach (object item in (System.Collections.IEnumerable)prop.GetValue(obj, null))
                    {
                        // All we want to do is determine whether the collection has any items. Seeing
                        // as we are here, it obviously does
                        collectionNode      = new DevComponents.AdvTree.Node();
                        collectionNode.Text = prop.Name;
                        parentNode.Nodes.Add(collectionNode);
                        //collectionNode.HasChildren = true;
                        DevComponents.AdvTree.Node tempNode = new DevComponents.AdvTree.Node();
                        collectionNode.Nodes.Add(tempNode);
                        break;
                    }
                }
                else if (atts.IsIterator)
                {
                    object propObject = prop.GetValue(obj, null);

                    if (propObject != null)
                    {
                        string displayName = ProviderInfo.GetDisplayName(propObject);
                        DevComponents.AdvTree.Node propNode = new DevComponents.AdvTree.Node();
                        propNode.Text = displayName;
                        propNode.Tag  = propObject;
                        parentNode.Nodes.Add(propNode);
                        DevComponents.AdvTree.Node tempNode = new DevComponents.AdvTree.Node();
                        propNode.Nodes.Add(tempNode);
                    }
                }
            }
            //Slyce.Common.TreelistUtility.TreelistNodeComparer comparer = new Slyce.Common.TreelistUtility.TreelistNodeComparer(Slyce.Common.TreelistUtility.TreelistNodeComparer.SortDirection.Ascending, 0);
            //Slyce.Common.TreelistUtility.SortNodes(treeList1, comparer);
            treeList1.EndUpdate();
        }
        private void AddObjectToTreeview(object obj, DevComponents.AdvTree.Node parentNode)
        {
            if (InvokeRequired)
            {
                MethodInvoker mi = delegate { AddObjectToTreeview(obj, parentNode); };
                Controller.SafeInvoke(this, mi);
                return;
            }

            string displayName = ProviderInfo.GetDisplayName(obj);

            DevComponents.AdvTree.Node node = new DevComponents.AdvTree.Node();
            node.Text = displayName;
            node.Tag  = obj;

            if (parentNode != null)
            {
                parentNode.Nodes.Add(node);
            }
            else
            {
                treeList1.Nodes.Add(node);
            }
            PropertyInfo[] properties = obj.GetType().GetProperties();

            if (properties.Length > 0)
            {
                DevComponents.AdvTree.Node tempNode = new DevComponents.AdvTree.Node();
                node.Nodes.Add(tempNode);
            }
            if (obj != null && TypeOfObject.IsInstanceOfType(obj))
            {
                node.Style = treeList1.Styles["elementStyleHighlighted"];
            }
            else
            {
                node.Style = treeList1.Styles["elementStyle1"];
            }
        }