/// <summary> /// Updates the RadioButtonGroup xml elements. /// </summary> void UpdateRadioButtonGroupElement(Point parentLocation, RadioButtonGroupBox control) { XmlElement controlElement = UpdateControlElement(parentLocation, control); string property = controlElement.GetAttribute("Property"); string xpath = String.Concat("//w:RadioButtonGroup[@Property='", XmlEncode(property), "']"); XmlElement radioButtonGroupElement = (XmlElement)controlElement.SelectSingleNode(xpath, namespaceManager); if (radioButtonGroupElement == null) { radioButtonGroupElement = AppendChildElement(controlElement, "RadioButtonGroup", control.PropertyName); } int radioButtonControlIndex = 0; int radioButtonElementIndex = 0; XmlNodeList radioButtonElements = radioButtonGroupElement.SelectNodes("w:RadioButton", namespaceManager); for (; radioButtonElementIndex < radioButtonElements.Count; ++radioButtonElementIndex) { RadioButton radioButton = GetNextRadioButton(control.Controls, ref radioButtonControlIndex); if (radioButton == null) { break; } XmlElement radioButtonElement = (XmlElement)radioButtonElements[radioButtonElementIndex]; UpdateRadioButton(radioButtonElement, radioButton); ++radioButtonControlIndex; } // Remove radio buttons. if (radioButtonElementIndex < radioButtonElements.Count) { for (; radioButtonElementIndex < radioButtonElements.Count; ++radioButtonElementIndex) { radioButtonGroupElement.RemoveChild(radioButtonElements[radioButtonElementIndex]); } } // Add new radio buttons. if (radioButtonControlIndex < control.Controls.Count) { for (; radioButtonControlIndex < control.Controls.Count; ++radioButtonControlIndex) { RadioButton radioButton = control.Controls[radioButtonControlIndex] as RadioButton; if (radioButton != null) { XmlElement newRadioButtonElement = AppendChildElement(radioButtonGroupElement, "RadioButton"); UpdateRadioButton(newRadioButtonElement, radioButton); } } } }
public void SetUpFixture() { WixDocument doc = new WixDocument(); doc.LoadXml(GetWixXml()); WixDialog wixDialog = doc.CreateWixDialog("WelcomeDialog", new MockTextFileReader()); using (Form dialog = wixDialog.CreateDialog()) { GroupBox groupBox = new GroupBox(); groupBox.Name = "NewGroupBox"; groupBox.Top = 10; groupBox.Left = 20; dialog.Controls.Add(groupBox); TextBox textBox = new TextBox(); textBox.Name = "NewTextBox"; groupBox.Controls.Add(textBox); Button button = new Button(); button.Name = "NewButton"; groupBox.Controls.Add(button); GroupBox childGroupBox = new GroupBox(); childGroupBox.Top = 10; childGroupBox.Left = 20; childGroupBox.Name = "NewChildGroupBox"; groupBox.Controls.Add(childGroupBox); RadioButtonGroupBox radioButtonGroupBox = new RadioButtonGroupBox(); radioButtonGroupBox.Name = "NewRadioButtonGroupBox"; groupBox.Controls.Add(radioButtonGroupBox); Button childButton = new Button(); childButton.Name = "NewChildButton"; childGroupBox.Controls.Add(childButton); dialogElement = wixDialog.UpdateDialogElement(dialog); groupBoxElement = (XmlElement)dialogElement.SelectSingleNode("w:Control[@Id='NewGroupBox']", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); textBoxElement = (XmlElement)dialogElement.SelectSingleNode("w:Control[@Id='NewTextBox']", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); childGroupBoxElement = (XmlElement)dialogElement.SelectSingleNode("w:Control[@Id='NewChildGroupBox']", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); buttonElement = (XmlElement)dialogElement.SelectSingleNode("w:Control[@Id='NewButton']", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); radioButtonGroupElement = (XmlElement)dialogElement.SelectSingleNode("w:Control[@Id='NewRadioButtonGroupBox']", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); childButtonElement = (XmlElement)dialogElement.SelectSingleNode("w:Control[@Id='NewChildButton']", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); } }
/// <summary> /// Creates a radio button group. /// </summary> RadioButtonGroupBox CreateRadioButtonGroup(XmlElement controlElement, IComponentCreator componentCreator) { // Create radio button group box. RadioButtonGroupBox radioButtonGroup = (RadioButtonGroupBox)CreateControl(typeof(RadioButtonGroupBox), controlElement, componentCreator); string property = controlElement.GetAttribute("Property"); radioButtonGroup.PropertyName = property; // Add radio buttons. int radioButtonCount = 0; foreach (XmlElement radioButtonElement in GetRadioButtonElements(property)) { ++radioButtonCount; string radioButtonName = String.Concat(property, "RadioButton", radioButtonCount.ToString()); radioButtonGroup.Controls.Add(CreateRadioButton(radioButtonElement, componentCreator, radioButtonName)); } return(radioButtonGroup); }
public void SetUpFixture() { WixDocument doc = new WixDocument(); doc.LoadXml(GetWixXml()); CreatedComponents.Clear(); WixDialog wixDialog = doc.CreateWixDialog("AcceptLicenseDialog", new MockTextFileReader()); using (Form dialog = wixDialog.CreateDialog(this)) { RadioButtonGroupBox radioButtonGroup = new RadioButtonGroupBox(); radioButtonGroup.Left = 30; radioButtonGroup.Top = 100; radioButtonGroup.Name = "AcceptLicenseRadioButtonGroup"; radioButtonGroup.PropertyName = "AcceptLicense"; dialog.Controls.Add(radioButtonGroup); RadioButton acceptRadioButton = new RadioButton(); acceptRadioButton.Left = 0; acceptRadioButton.Top = 5; acceptRadioButton.Width = 100; acceptRadioButton.Height = 50; acceptRadioButton.Text = "Accept"; acceptRadioButton.Name = "AcceptLicenseRadioButton1"; radioButtonGroup.Controls.Add(acceptRadioButton); RadioButton declineRadioButton = new RadioButton(); declineRadioButton.Left = 10; declineRadioButton.Top = 20; declineRadioButton.Width = 200; declineRadioButton.Height = 30; declineRadioButton.Text = "Decline"; declineRadioButton.Name = "AcceptLicenseRadioButton2"; radioButtonGroup.Controls.Add(declineRadioButton); XmlElement dialogElement = wixDialog.UpdateDialogElement(dialog); controlElement = (XmlElement)dialogElement.SelectSingleNode("w:Control[@Id='AcceptLicenseRadioButtonGroup']", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); radioButtonGroupElement = (XmlElement)dialogElement.SelectSingleNode("//w:RadioButtonGroup[@Property='AcceptLicense']", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); XmlNodeList radioButtonElements = radioButtonGroupElement.SelectNodes("//w:RadioButtonGroup/w:RadioButton", new WixNamespaceManager(dialogElement.OwnerDocument.NameTable)); acceptRadioButtonElement = (XmlElement)radioButtonElements[0]; declineRadioButtonElement = (XmlElement)radioButtonElements[1]; } }