private void ReadProperties(Type item, TreeNodeCollection nodes, ISchemaBase schema) { PropertyInfo[] pi = item.GetProperties(); nodes.Clear(); foreach (PropertyInfo p in pi) { object[] attrs = p.GetCustomAttributes(typeof(SchemaNodeAttribute), true); if (attrs.Length > 0) { SchemaNodeAttribute show = (SchemaNodeAttribute)attrs[0]; TreeNode node = nodes.Add(p.Name, show.Name); node.ImageKey = "Folder"; ReadPropertyDetail(node, p, schema, show); } } }
private void ReadPropertyDetail(TreeNode node, PropertyInfo p, ISchemaBase schema, SchemaNodeAttribute attr) { Color NodeColor = Color.Black; IList items = (IList)p.GetValue(schema, null); node.Text = node.Text + " (" + items.Count + ")"; node.Nodes.Clear(); foreach (ISchemaBase item in items) { if (CanNodeAdd(item)) { TreeNode subnode = node.Nodes.Add(item.Id.ToString(), (attr.IsFullName ? item.FullName : item.Name)); if (item.Status == ObjectStatus.Drop) { subnode.ForeColor = Color.Red; NodeColor = (NodeColor == Color.Black || NodeColor == Color.Red ? Color.Red : Color.Plum); } if (item.Status == ObjectStatus.Create) { subnode.ForeColor = Color.Green; NodeColor = (NodeColor == Color.Black || NodeColor == Color.Green ? Color.Green : Color.Plum); } if ((item.HasState(ObjectStatus.Alter)) || (item.HasState(ObjectStatus.Disabled))) { subnode.ForeColor = Color.Blue; NodeColor = (NodeColor == Color.Black || NodeColor == Color.Blue ? Color.Blue : Color.Plum); } if (item.HasState(ObjectStatus.AlterWhitespace)) { subnode.ForeColor = Color.DarkGoldenrod; NodeColor = (NodeColor == Color.Black || NodeColor == Color.DarkGoldenrod ? Color.DarkGoldenrod : Color.Plum); } if (item.HasState(ObjectStatus.Rebuild)) { subnode.ForeColor = Color.Purple; NodeColor = (NodeColor == Color.Black || NodeColor == Color.Purple ? Color.Purple : Color.Plum); } subnode.Tag = item; subnode.ImageKey = attr.Image; subnode.SelectedImageKey = attr.Image; } } node.ForeColor = NodeColor; }