/// <summary>
        /// Creates a new SessionFormEditor.
        /// </summary>
        /// <param name="form"> Form collection to load.</param>
        public SessionFormEditor(HtmlFormTag form)
            : this()
        {
            if ( form != null )
            {
                HtmlFormTagCollection forms = new HtmlFormTagCollection(1);
                forms.Add(form.Name, form);

                // Load tree
                LoadFormTree(forms);
            }
        }
        private void LoadFormTree(HtmlFormTagCollection forms)
        {
            foreach (DictionaryEntry de in forms)
            {
                HtmlFormTag form = (HtmlFormTag)de.Value;

                StringBuilder label = new StringBuilder();
                // add Form node
                label.Append("<form name=");
                label.Append((string)de.Key);
                label.Append(" method=");
                label.Append(form.Method);
                label.Append(" action=");
                label.Append(form.Action);
                if ( form.OnSubmit.Length > 0 )
                {
                    label.Append(" onsubmit=");
                    label.Append(form.OnSubmit);
                }
                label.Append(">");

                FormEditorNode formNode = formsTree.AddFormNode(label.ToString(),form);

                foreach (DictionaryEntry dd in form)
                {
                    FormEditorNode child = new FormEditorNode();
                    HtmlTagBaseList controlArray = (HtmlTagBaseList)dd.Value;

                    foreach (HtmlTagBase tag in controlArray)
                    {
            //						if (tag is HtmlALinkTag)
            //						{
            //							HtmlALinkTag a=(HtmlALinkTag)tag;
            //							AddALinkNode(formNode, a);
            //						}

                        if (tag is HtmlInputTag)
                        {
                            HtmlInputTag input=(HtmlInputTag)tag;
                            FormEditorNode node = new FormEditorNode();
                            node.Text = input.Name + "=" + input.Value;
                            formNode.Nodes.Add(node);
                            //AddInputNode(formNode,input);

                        }

                        if (tag is HtmlButtonTag)
                        {
                            HtmlButtonTag button = (HtmlButtonTag)tag;
                            FormEditorNode node = new FormEditorNode();
                            node.Text = button.Name + "=" + button.Value;
                            formNode.Nodes.Add(node);
                            //AddButtonNode(formNode,button);
                        }

                        if (tag is HtmlSelectTag)
                        {
                            HtmlSelectTag select = (HtmlSelectTag)tag;
                            FormEditorNode node = new FormEditorNode();
                            node.Text = select.Name + "=" + select.Value;
                            formNode.Nodes.Add(node);
                            //AddSelectNode(formNode,select);
                        }

                        if (tag is HtmlTextAreaTag)
                        {
                            HtmlTextAreaTag textarea=(HtmlTextAreaTag)tag;
                            FormEditorNode node = new FormEditorNode();
                            node.Text = textarea.Name + "=" + textarea.Value;
                            formNode.Nodes.Add(node);
                            //AddTextAreaNode(formNode,textarea);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Loads the forms into the form tree.
        /// </summary>
        /// <param name="forms"></param>
        public void LoadFormTree(HtmlFormTagCollection forms)
        {
            formEditor.Clear();

            foreach (DictionaryEntry de in forms)
            {
                HtmlFormTag form = (HtmlFormTag)de.Value;

                StringBuilder label = new StringBuilder();
                // add Form node
                label.Append("<form name=");
                label.Append((string)de.Key);
                label.Append(" method=");
                label.Append(form.Method);
                label.Append(" action=");
                label.Append(form.Action);

                if ( form.OnSubmit != null )
                {
                    if ( form.OnSubmit.Length > 0 )
                    {
                        label.Append(" onsubmit=");
                        label.Append(form.OnSubmit);
                    }
                }
                label.Append(">");

                FormEditorNode formNode = formEditor.AddFormNode(label.ToString(),form);

                for (int i=0;i<form.Count;i++)
                {
                    FormEditorNode child = new FormEditorNode();
                    HtmlTagBaseList controlArray = (HtmlTagBaseList)((DictionaryEntry)form[i]).Value;

                    foreach (HtmlTagBase tag in controlArray)
                    {
                        if (tag is HtmlALinkTag)
                        {
                            HtmlALinkTag a=(HtmlALinkTag)tag;
                            AddALinkNode(formNode, a);
                        }

                        if (tag is HtmlInputTag)
                        {
                            HtmlInputTag input=(HtmlInputTag)tag;
                            AddInputNode(formNode,input);

                        }

                        if (tag is HtmlButtonTag)
                        {
                            HtmlButtonTag button = (HtmlButtonTag)tag;
                            AddButtonNode(formNode,button);
                        }

                        if (tag is HtmlSelectTag)
                        {
                            HtmlSelectTag select = (HtmlSelectTag)tag;
                            AddSelectNode(formNode,select);
                        }

                        if (tag is HtmlTextAreaTag)
                        {
                            HtmlTextAreaTag textarea=(HtmlTextAreaTag)tag;
                            AddTextAreaNode(formNode,textarea);
                        }
                    }
                }
            }

            formEditor.ExpandAll();
        }
        /// <summary>
        /// Displays the Form Editor.
        /// </summary>
        private void DisplayFormUserControl()
        {
            SessionRequest sessionRequest = this.CurrentSessionRequest;

            //SessionFormEditor formEditor = (SessionFormEditor)this.pnUserControl.Controls[0];
            formControl.Form = sessionRequest.Form;

            if ( formControl.Form != null )
            {
                HtmlFormTagCollection forms = new HtmlFormTagCollection(1);
                forms.Add(formControl.Form.Name, formControl.Form);
                formControl.LoadFormTree(forms);
            }
            else
            {
                formControl.DisplayNoDataMessage();
            }

            formControl.Show();
            this.SelectedDesignerControl = formControl;
            HideControls(typeof(SessionFormEditor));
        }