using ElectronNET.API.Entities; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System.Collections.Generic; using System; using System.Linq; using ElectronNET.API.Extensions; namespace ElectronNET.API { public sealed class Menu { private static Menu _menu; internal Menu() { } internal static Menu Instance { get { if (_menu == null) { _menu = new Menu(); } return _menu; } } public IReadOnlyCollection Items { get { return _items.AsReadOnly(); } } private List _items = new List(); public void SetApplicationMenu(MenuItem[] menuItems) { menuItems.AddMenuItemsId(); BridgeConnector.Socket.Emit("menu-setApplicationMenu", JArray.FromObject(menuItems, _jsonSerializer)); _items.AddRange(menuItems); BridgeConnector.Socket.On("menuItemClicked", (id) => { MenuItem menuItem = _items.GetMenuItem(id.ToString()); menuItem?.Click(); }); } private JsonSerializer _jsonSerializer = new JsonSerializer() { ContractResolver = new CamelCasePropertyNamesContractResolver(), NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Ignore }; } }