public static async Task <ITypeMember> AddRandomMemberAsync(this ITypeTemplate template, Authentication authentication) { var member = await template.AddNewAsync(authentication); await member.InitializeRandomAsync(authentication); await template.EndNewAsync(authentication, member); return(member); }
public static async Task AddMemberAsync(this ITypeTemplate template, Authentication authentication, string name, long value, string comment) { var member = await template.AddNewAsync(authentication); await member.SetNameAsync(authentication, name); await member.SetValueAsync(authentication, value); if (comment != string.Empty) { await member.SetCommentAsync(authentication, comment); } await template.EndNewAsync(authentication, member); }
public static async Task <bool> EditAsync(ITypeTemplate template, Authentication authentication) { var memberCount = template.Dispatcher.Invoke(() => template.Count); var memberList = new List <JsonTypeMemberInfos.ItemInfo>(memberCount); var idToMember = new Dictionary <Guid, ITypeMember>(memberCount); template.Dispatcher.Invoke(() => { foreach (var item in template) { var member = new JsonTypeMemberInfos.ItemInfo() { ID = Guid.NewGuid(), Name = item.Name, Value = item.Value, Comment = item.Comment, }; idToMember.Add(member.ID, item); memberList.Add(member); } }); var members = new JsonTypeMemberInfos() { Items = memberList.ToArray() }; using (var editor = new JsonEditorHost(members)) { if (editor.Execute() == false) { return(false); } members = editor.Read <JsonTypeMemberInfos>(); } var terminal = new Terminal(); var key = terminal.ReadKey("do you want to save changes?(Y/N)", ConsoleKey.Y, ConsoleKey.N); if (key != ConsoleKey.Y) { return(false); } //template.Dispatcher.Invoke(() => //{ foreach (var item in idToMember.Keys.ToArray()) { if (members.Items.Any(i => i.ID == item) == false) { var member = idToMember[item]; await member.DeleteAsync(authentication); idToMember.Remove(item); } } for (var i = 0; i < members.Items.Length; i++) { var item = members.Items[i]; if (item.ID == Guid.Empty) { var member = await template.AddNewAsync(authentication); await member.SetNameAsync(authentication, item.Name); await member.SetValueAsync(authentication, item.Value); await member.SetCommentAsync(authentication, item.Comment); await template.EndNewAsync(authentication, member); item.ID = Guid.NewGuid(); idToMember.Add(item.ID, member); members.Items[i] = item; } else if (idToMember.ContainsKey(item.ID) == true) { var member = idToMember[item.ID]; if (member.Name != item.Name) { await member.SetNameAsync(authentication, item.Name); } if (member.Value != item.Value) { await member.SetValueAsync(authentication, item.Value); } if (member.Comment != item.Comment) { await member.SetCommentAsync(authentication, item.Comment); } } else { throw new InvalidOperationException($"{item.ID} is not existed member."); } } for (var i = 0; i < members.Items.Length; i++) { var item = members.Items[i]; var member = idToMember[item.ID]; await member.SetIndexAsync(authentication, i); } await template.EndEditAsync(authentication); //}); return(true); }