private void MapClrAttributesToAttributes(LinkedElementCollection <ClrAttribute> clrAttributes, LinkedElementCollection <Attribute> attributes, Store store) { attributes.Clear(); foreach (var clrAttribute in clrAttributes) { var attribute = new Attribute(store); attribute.Name = clrAttribute.Name; foreach (var clrAttributeParameter in clrAttribute.Parameters) { var attributeParameter = new AttributeParameter(store); attributeParameter.Name = clrAttributeParameter.Name; attributeParameter.Value = clrAttributeParameter.Value; attribute.Parameters.Add(attributeParameter); } attributes.Add(attribute); } }
private void AttributeTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { if (e.Node == addAttributeNode) { string newAttributeLabel = e.Label; e.CancelEdit = true; Attribute attribute = new Attribute(_store) { Name = newAttributeLabel }; _attributes.Add(attribute); IsDirty = true; TreeNode newAttribute = AttributeTree.Nodes.Insert(AttributeTree.Nodes.Count - 1, newAttributeLabel); newAttribute.Tag = attribute; TreeNode addParameter = CreateAddParameterNode(newAttribute); newAttribute.Expand(); AttributeTree.BeginInvoke((Action)(() => { AttributeTree.SelectedNode = addParameter; AttributeTree.StartLabelEdit(); })); } else if (e.Node.IsAddParameterNode()) { TreeNode addParameter = e.Node; TreeNode attributeNode = e.Node.Parent; Attribute attribute = attributeNode.Tag as Attribute; string newParameterLabel = e.Label; e.CancelEdit = true; AttributeParameter parameter = null; NamedPropertyEvaluation(newParameterLabel, (value) => { newParameterLabel = value; parameter = new AttributeParameter(_store) { Value = value }; }, (name, value) => { newParameterLabel = string.Format("{0} = {1}", name, value); parameter = new AttributeParameter(_store) { Name = name, Value = value }; } ); attribute.Parameters.Add(parameter); IsDirty = true; TreeNode newParameter = addParameter.Parent.Nodes.Insert(addParameter.Parent.Nodes.Count - 1, newParameterLabel); newParameter.Tag = parameter; SetParameterIcons(attributeNode.Nodes); AttributeTree.BeginInvoke((Action)(() => { AttributeTree.SelectedNode = addParameter; AttributeTree.StartLabelEdit(); })); } else { if (e.Node.Tag is Attribute) { ((Attribute)e.Node.Tag).Name = e.Label; e.Node.Text = e.Label; } else if (e.Node.Tag is AttributeParameter) { AttributeParameter property = (AttributeParameter)e.Node.Tag; NamedPropertyEvaluation(e.Label, (value) => { e.Node.Text = value; property.Name = null; property.Value = value; }, (name, value) => { e.Node.Text = string.Format("{0} = {1}", name, value); property.Name = name; property.Value = value; } ); } IsDirty = true; } }