/// <summary>
/// Gets the form.
/// </summary>
/// <param name="formnode">The node of the form.</param>
/// <returns></returns>
private ODFForm CreateForm(XmlNode formnode)
{
ODFForm form = null;
try
{
if (formnode.Name == "form:form")
{
if (this._debugMode)
this.LogNode(formnode, "Log form node before");
//Create a new ODFForm
///////////TODO. Fix for child forms!
form = new ODFForm(formnode.CloneNode(true), this._document);
form.SuppressControlEvents();
foreach(XmlNode nodeChild in form.Node.ChildNodes)
{
switch (nodeChild.Name)
{
case "form:form":
if (nodeChild.ParentNode==form.Node)
{
ODFForm frmchild = CreateForm(nodeChild);
if (frmchild != null)
{
form.ChildForms.Add(frmchild);
}
form.Node.RemoveChild(nodeChild);
}
break;
case "form:properties": break;
case "form:button":
if (nodeChild.ParentNode==form.Node)
{
ODFButton button = new ODFButton(form, nodeChild);
button.FixPropertyCollection();
form.Controls.Add(button);
}
break;
case "form:listbox":
if (nodeChild.ParentNode==form.Node)
{
ODFListBox listbox = new ODFListBox(form, nodeChild);
listbox.FixPropertyCollection();
listbox.FixOptionCollection();
form.Controls.Add(listbox);
}
break;
case "form:combobox":
if (nodeChild.ParentNode==form.Node)
{
ODFComboBox combobox = new ODFComboBox(form, nodeChild);
combobox.FixPropertyCollection();
combobox.FixItemCollection();
form.Controls.Add(combobox);
}
break;
case "form:textarea":
if (nodeChild.ParentNode==form.Node)
{
ODFTextArea text = new ODFTextArea(form, nodeChild);
text.FixPropertyCollection();
form.Controls.Add(text);
}
break;
case "form:frame":
if (nodeChild.ParentNode==form.Node)
{
ODFFrame frm = new ODFFrame(form, nodeChild);
frm.FixPropertyCollection();
form.Controls.Add(frm);
}
break;
case "form:file":
if (nodeChild.ParentNode==form.Node)
{
ODFFile file = new ODFFile(form, nodeChild);
file.FixPropertyCollection();
form.Controls.Add(file);
}
break;
case "form:hidden":
if (nodeChild.ParentNode==form.Node)
{
ODFHidden hidden = new ODFHidden(form, nodeChild);
hidden.FixPropertyCollection();
form.Controls.Add(hidden);
}
break;
case "form:checkbox":
if (nodeChild.ParentNode==form.Node)
{
ODFCheckBox cb = new ODFCheckBox(form, nodeChild);
cb.FixPropertyCollection();
form.Controls.Add(cb);
}
break;
case "form:radio":
if (nodeChild.ParentNode==form.Node)
{
ODFRadioButton rb = new ODFRadioButton(form, nodeChild);
rb.FixPropertyCollection();
form.Controls.Add(rb);
}
break;
case "form:formatted-text":
if (nodeChild.ParentNode==form.Node)
{
ODFFormattedText text = new ODFFormattedText(form, nodeChild);
text.FixPropertyCollection();
form.Controls.Add(text);
}
break;
case "form:value-range":
if (nodeChild.ParentNode==form.Node)
{
ODFValueRange vr = new ODFValueRange(form, nodeChild);
vr.FixPropertyCollection();
form.Controls.Add(vr);
}
break;
case "form:image":
if (nodeChild.ParentNode==form.Node)
{
ODFImage img = new ODFImage(form, nodeChild);
img.FixPropertyCollection();
form.Controls.Add(img);
}
break;
case "form:image-frame":
if (nodeChild.ParentNode==form.Node)
{
ODFImageFrame imgf = new ODFImageFrame(form, nodeChild);
imgf.FixPropertyCollection();
form.Controls.Add(imgf);
}
break;
case "form:grid":
if (nodeChild.ParentNode==form.Node)
{
ODFGrid gr = new ODFGrid(form, nodeChild);
gr.FixPropertyCollection();
gr.FixColumnCollection();
form.Controls.Add(gr);
}
break;
default:
if (nodeChild.ParentNode==form.Node)
{
ODFGenericControl gc = new ODFGenericControl(form, nodeChild);
gc.FixPropertyCollection();
form.Controls.Add(gc);
}
break;
}
}
form.RestoreControlEvents();
form.FixPropertyCollection();
// formnode.RemoveAll();
// formnode.InnerText = "";
}
}
catch(Exception ex)
{
throw new AODLException("Exception while processing a form:form node.", ex);
}
return form;
}