private void NewChild_Click(object sender, EventArgs e)
        {
            var treeT = GetCurrentTree();
            var tree  = treeT.Item1;
            var list  = treeT.Item2;
            var table = treeT.Item3;

            var       item    = TreeToObject[tree.SelectedNode];
            bool      reload1 = false;
            ListEntry listItem;

            if (item is ListEntry)
            {
                listItem = (ListEntry)item;
            }
            else
            {
                var entry2 = (ListEntryEntry)item;
                //find the real class for this type
                listItem = Data.List1.FirstOrDefault(x => x.NameStringID == entry2.TypeStringID);

                //really should not allow this under normal circumstances, but we assume the user knows what they are doing.
                if (listItem == null)
                {
                    listItem = Data.List2.FirstOrDefault(x => x.NameStringID == entry2.TypeStringID);
                }

                if (listItem == null)
                {
                    return; //this is likely a primitive type. can't add child fields to a primitive type.
                }
                reload1 = true;
            }

            var entry = new ListEntryEntry()
            {
                NameStringID = (table == StringTableType.Derived)?0:GetNewNameID(StringTableType.Field),
                Parent       = listItem,
            };

            listItem.Entries.Add(entry);
            ReloadTree(tree, list);
            ReloadTree(TreeView1S, Data.List1);

            var current = new List <TreeNode>();

            foreach (TreeNode node in tree.Nodes)
            {
                current.Add(node);
            }

            tree.SelectedNode = TreeWhere(current, x => TreeToObject[x] == entry);
        }
        private string TypeName(ListEntryEntry child)
        {
            var typeName = Data.GetString(child.TypeStringID);

            switch ((StructFieldClassification)child.TypeClass)
            {
            case StructFieldClassification.List:
                return(typeName + "[]");

            case StructFieldClassification.Map:
                return("Map<uint, " + typeName + ">");

            default:
                return(typeName);
            }
        }
 public TSODataMaskWrapper(ListEntryEntry item)
 {
     Item = item;
 }
 public TSODataStructWrapper(ListEntryEntry item)
 {
     Item = item;
 }