protected void ShowProperties(XmlNode xmlNode) { XmlAttributeAdapter attAdapter = null; if (xmlNode != null) { attAdapter = new XmlAttributeAdapter(xmlNode, WixFiles); } CurrentGrid.SelectedObject = attAdapter; CurrentGrid.Update(); return; }
private void InfoAboutCurrentElement_Click(object sender, System.EventArgs e) { if (currTreeView.SelectedNode == null) { return; } XmlNode xmlNode = (XmlNode)currTreeView.SelectedNode.Tag; if (xmlNode != null) { XmlDocumentationManager docManager = new XmlDocumentationManager(WixFiles); XmlAttributeAdapter attAdapter = (XmlAttributeAdapter)CurrentGrid.SelectedObject; string title = String.Format("Info about '{0}' element", xmlNode.Name); string message = docManager.GetDocumentation(attAdapter.XmlNodeDefinition); MessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public void OnNewPropertyGridItem(object sender, EventArgs e) { wixFiles.UndoManager.BeginNewCommandRange(); // Temporarily store the XmlAttributeAdapter XmlAttributeAdapter attAdapter = (XmlAttributeAdapter)elementPropertyGrid.SelectedObject; ArrayList attributes = new ArrayList(); XmlNodeList xmlAttributes = attAdapter.XmlNodeDefinition.SelectNodes("xs:attribute", wixFiles.XsdNsmgr); foreach (XmlNode at in xmlAttributes) { string attName = at.Attributes["name"].Value; if (attAdapter.XmlNode.Attributes[attName] == null) { attributes.Add(attName); } } if (attAdapter.XmlNodeDefinition.Name == "xs:extension") { bool hasInnerText = false; foreach (GridItem it in elementPropertyGrid.SelectedGridItem.Parent.GridItems) { if (it.Label == "InnerText") { hasInnerText = true; break; } } if (hasInnerText == false) { attributes.Add("InnerText"); } } attributes.Sort(); SelectStringForm frm = new SelectStringForm(); frm.PossibleStrings = attributes.ToArray(typeof(String)) as String[]; if (DialogResult.OK != frm.ShowDialog()) { return; } // Show dialog to choose from available items. XmlAttribute att = null; for (int i = 0; i < frm.SelectedStrings.Length; i++) { string newAttributeName = frm.SelectedStrings[i]; if (string.Equals(newAttributeName, "InnerText")) { attAdapter.ShowInnerTextIfEmpty = true; } else { att = wixFiles.WxsDocument.CreateAttribute(newAttributeName); attAdapter.XmlNode.Attributes.Append(att); } } // resetting the elementPropertyGrid. elementPropertyGrid.SelectedObject = null; // Update the elementPropertyGrid. elementPropertyGrid.SelectedObject = attAdapter; elementPropertyGrid.Update(); string firstNewAttributeName = frm.SelectedStrings[0]; foreach (GridItem it in elementPropertyGrid.SelectedGridItem.Parent.GridItems) { if (it.Label == firstNewAttributeName) { elementPropertyGrid.SelectedGridItem = it; break; } } }
public void OnPropertyGridPopupContextMenu(object sender, EventArgs e) { elementPropertyGridContextMenu.MenuItems.Clear(); if (elementPropertyGrid.SelectedObject == null) { return; } XmlAttributeAdapter attAdapter = (XmlAttributeAdapter)elementPropertyGrid.SelectedObject; if (attAdapter.XmlNodeDefinition == null) { // Don't know, but can not show the context menu. return; } // Need to change "Delete" to "Clear" for required items. bool isRequired = false; // Get the XmlAttribute from the PropertyDescriptor XmlAttributePropertyDescriptor desc = elementPropertyGrid.SelectedGridItem.PropertyDescriptor as XmlAttributePropertyDescriptor; if (desc != null) { XmlAttribute att = desc.Attribute; XmlNode xmlAttributeDefinition = attAdapter.XmlNodeDefinition.SelectSingleNode(String.Format("xs:attribute[@name='{0}']", att.Name), wixFiles.XsdNsmgr); if (xmlAttributeDefinition.Attributes["use"] != null && xmlAttributeDefinition.Attributes["use"].Value == "required") { isRequired = true; } } MenuItem menuItemSeparator = new IconMenuItem("-"); // See if new menu item should be shown. bool canCreateNew = false; XmlNodeList xmlAttributes = attAdapter.XmlNodeDefinition.SelectNodes("xs:attribute", wixFiles.XsdNsmgr); foreach (XmlNode at in xmlAttributes) { string attName = at.Attributes["name"].Value; if (attAdapter.XmlNode.Attributes[attName] == null) { canCreateNew = true; } } if (canCreateNew) { // Define the MenuItem objects to display for the TextBox. MenuItem menuItem1 = new IconMenuItem("&New", new Bitmap(WixFiles.GetResourceStream("bmp.new.bmp"))); menuItem1.Click += new EventHandler(OnNewPropertyGridItem); elementPropertyGridContextMenu.MenuItems.Add(menuItem1); } // Add the clear or delete menu item MenuItem menuItem2 = null; if (elementPropertyGrid.SelectedGridItem.PropertyDescriptor != null && !(elementPropertyGrid.SelectedGridItem.PropertyDescriptor is InnerTextPropertyDescriptor)) { if (isRequired) { menuItem2 = new IconMenuItem("&Clear", new Bitmap(WixFiles.GetResourceStream("bmp.clear.bmp"))); } else { menuItem2 = new IconMenuItem("&Delete", new Bitmap(WixFiles.GetResourceStream("bmp.delete.bmp"))); } menuItem2.Click += new EventHandler(OnDeletePropertyGridItem); elementPropertyGridContextMenu.MenuItems.Add(menuItem2); } if (elementPropertyGridContextMenu.MenuItems.Count > 0) { elementPropertyGridContextMenu.MenuItems.Add(menuItemSeparator); } MenuItem menuItem3 = new IconMenuItem("Description"); menuItem3.Click += new EventHandler(OnToggleDescriptionPropertyGrid); menuItem3.Checked = elementPropertyGrid.HelpVisible; elementPropertyGridContextMenu.MenuItems.Add(menuItem3); }
protected void PopupTreeViewContextMenu(System.Object sender, System.EventArgs e) { currTreeViewContextMenu.MenuItems.Clear(); if (currTreeView.SelectedNode == null) { return; } XmlNode node = currTreeView.SelectedNode.Tag as XmlNode; if (node == null) { return; } IconMenuItem item1 = new IconMenuItem("&New", new Bitmap(WixFiles.GetResourceStream("bmp.new.bmp"))); IconMenuItem item2 = new IconMenuItem("&Delete", new Bitmap(WixFiles.GetResourceStream("bmp.delete.bmp"))); item2.Click += new System.EventHandler(DeleteElement_Click); IconMenuItem item3 = new IconMenuItem("&Info", new Bitmap(WixFiles.GetResourceStream("bmp.info.bmp"))); item3.Click += new System.EventHandler(InfoAboutCurrentElement_Click); ArrayList newElementStrings = WixFiles.GetXsdSubElements(node.Name, SkipElements); bool isExtention = false; foreach (string newElementString in newElementStrings) { if (!isExtention && newElementString.Contains(":")) { item1.MenuItems.Add(new MenuItem("-")); isExtention = true; } MenuItem subMenuItem = new MenuItem(newElementString); subMenuItem.Click += new EventHandler(NewElement_Click); item1.MenuItems.Add(subMenuItem); } if (item1.MenuItems.Count > 0) { currTreeViewContextMenu.MenuItems.Add(item1); } currTreeViewContextMenu.MenuItems.Add(item2); XmlAttributeAdapter attAdapter = (XmlAttributeAdapter)CurrentGrid.SelectedObject; if (attAdapter != null) { XmlDocumentationManager docManager = new XmlDocumentationManager(WixFiles); if (docManager.HasDocumentation(attAdapter.XmlNodeDefinition)) { currTreeViewContextMenu.MenuItems.Add(new IconMenuItem("-")); currTreeViewContextMenu.MenuItems.Add(item3); } } AddCustomTreeViewContextMenuItems(node, currTreeViewContextMenu); }