Exemplo n.º 1
0
        protected XmlNode GetSelectedProperty()
        {
            // Get the XmlAttribute from the PropertyDescriptor
            XmlNode element = null;

            if (elementPropertyGrid.SelectedGridItem.PropertyDescriptor is XmlAttributePropertyDescriptor)
            {
                XmlAttributePropertyDescriptor desc = elementPropertyGrid.SelectedGridItem.PropertyDescriptor as XmlAttributePropertyDescriptor;
                element = desc.Attribute;
            }
            else if (elementPropertyGrid.SelectedGridItem.PropertyDescriptor is CustomXmlPropertyDescriptorBase)
            {
                CustomXmlPropertyDescriptorBase desc = elementPropertyGrid.SelectedGridItem.PropertyDescriptor as CustomXmlPropertyDescriptorBase;
                element = desc.XmlElement;
            }
            else
            {
                string typeString = "null";
                if (elementPropertyGrid.SelectedGridItem.PropertyDescriptor != null)
                {
                    typeString = elementPropertyGrid.SelectedGridItem.PropertyDescriptor.GetType().ToString();
                }

                throw new Exception(String.Format("Expected XmlAttributePropertyDescriptor, but got {0} in GetSelectedProperty", typeString));
            }

            return(element);
        }
        public void Init()
        {
            XmlDocument document = new XmlDocument();

            document.LoadXml("<root first='a' second='b'/>");
            firstAttribute = document.DocumentElement.GetAttributeNode("first");
            properties     = XmlAttributePropertyDescriptor.GetProperties(document.DocumentElement.Attributes);
            firstAttributePropertyDescriptor  = (XmlAttributePropertyDescriptor)properties["first"];
            secondAttributePropertyDescriptor = (XmlAttributePropertyDescriptor)properties["second"];
        }
Exemplo n.º 3
0
        void CurrentGrid_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
        {
            GridItem item = e.ChangedItem;

            if (item.Label == "Id" && !String.IsNullOrEmpty((string)e.OldValue))
            {
                XmlAttributePropertyDescriptor pd = (XmlAttributePropertyDescriptor)item.PropertyDescriptor;
                XmlNodeList equalNamedColumns     = pd.Attribute.OwnerElement.ParentNode.SelectNodes(String.Format("wix:Column[@Id='{0}']", item.Value), WixFiles.WxsNsmgr);
                if (equalNamedColumns.Count >= 2)
                {
                    MessageBox.Show(String.Format("There is already a column with the name \"{0}\"!", item.Value), "Duplicate column name", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    // Rollback
                    WixFiles.UndoManager.Undo();

                    // Refresh the tree
                    if (CurrentTreeView.SelectedNode != null)
                    {
                        XmlNode node        = (XmlNode)currTreeView.SelectedNode.Tag;
                        string  displayName = GetDisplayName(node);
                        if (displayName != null && displayName.Length > 0 &&
                            currTreeView.SelectedNode.Text != displayName)
                        {
                            currTreeView.SelectedNode.Text = displayName;
                        }
                    }

                    // and the grid
                    CurrentGrid.Refresh();
                }
                else
                {
                    // Rename all row elements
                    foreach (XmlElement dataElement in pd.Attribute.OwnerElement.ParentNode.SelectNodes(String.Format("wix:Row/wix:Data[@Column='{0}']", e.OldValue), WixFiles.WxsNsmgr))
                    {
                        dataElement.SetAttribute("Column", (string)item.Value);
                    }
                }
            }
        }
Exemplo n.º 4
0
        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);
        }