/// <summary> /// Parses a row from the specified <code>obj</code>. /// </summary> /// <param name="section">The parent section of the row.</param> /// <param name="obj">The instance of <code>JObject</code> to be parsed.</param> public static GridRow Parse(GridSection section, JObject obj) { // Some input validation if (obj == null) throw new ArgumentNullException("obj"); // Parse basic properties GridRow row = new GridRow(obj) { Section = section, Id = obj.GetString("id"), Alias = obj.GetString("alias"), Name = obj.GetString("name"), Styles = obj.GetObject("styles", GridDictionary.Parse), Config = obj.GetObject("config", GridDictionary.Parse) }; // Parse the areas row.Areas = obj.GetArray("areas", x => GridArea.Parse(row, x)) ?? new GridArea[0]; // Update "PreviousArea" and "NextArea" properties for (int i = 1; i < row.Areas.Length; i++) { row.Areas[i - 1].NextArea = row.Areas[i]; row.Areas[i].PreviousArea = row.Areas[i - 1]; } // Return the row return row; }
/// <summary> /// Parses an area from the specified <code>obj</code>. /// </summary> /// <param name="row">The parent row of the area.</param> /// <param name="obj">The instance of <code>JObject</code> to be parsed.</param> public static GridArea Parse(GridRow row, JObject obj) { // Some input validation if (obj == null) throw new ArgumentNullException("obj"); // Parse the array of allow blocks JArray allowed = obj.GetArray("allowed"); // Parse basic properties GridArea area = new GridArea(obj) { Row = row, Grid = obj.GetInt32("grid"), AllowAll = obj.GetBoolean("allowAll"), Allowed = allowed == null ? new string[0] : allowed.Select(x => (string)x).ToArray(), Styles = obj.GetObject("styles", GridDictionary.Parse), Config = obj.GetObject("config", GridDictionary.Parse) }; // Parse the controls area.Controls = obj.GetArray("controls", x => GridControl.Parse(area, x)) ?? new GridControl[0]; // Update "PreviousArea" and "NextArea" properties for (int i = 1; i < area.Controls.Length; i++) { area.Controls[i - 1].NextControl = area.Controls[i]; area.Controls[i].PreviousControl = area.Controls[i - 1]; } // Return the row return area; }