// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. namespace WixToolset.Data { using System; using SimpleJson; public class LocalizedControl { public LocalizedControl(string dialog, string control, int x, int y, int width, int height, bool rightToLeft, bool rightAligned, bool leftScroll, string text) { this.Dialog = dialog; this.Control = control; this.X = x; this.Y = y; this.Width = width; this.Height = height; this.RightToLeft = rightToLeft; this.RightAligned = rightAligned; this.LeftScroll = leftScroll; this.Text = text; } public string Dialog { get; } public string Control { get; } public int X { get; } public int Y { get; } public int Width { get; } public int Height { get; } public bool RightToLeft { get; } public bool RightAligned { get; } public bool LeftScroll { get; } public string Text { get; } /// /// Get key for a localized control. /// /// The localized control id. public string GetKey() => LocalizedControl.GetKey(this.Dialog, this.Control); /// /// Get key for a localized control. /// /// The optional id of the control's dialog. /// The id of the control. /// The localized control id. public static string GetKey(string dialog, string control) => String.Concat(dialog, "/", control); internal JsonObject Serialize() { var jsonObject = new JsonObject { { "dialog", this.Dialog }, }; jsonObject.AddIsNotNullOrEmpty("control", this.Control); jsonObject.AddNonDefaultValue("x", this.X); jsonObject.AddNonDefaultValue("y", this.Y); jsonObject.AddNonDefaultValue("width", this.Width); jsonObject.AddNonDefaultValue("height", this.Height); jsonObject.AddNonDefaultValue("rightToLeft", this.RightToLeft); jsonObject.AddNonDefaultValue("rightAligned", this.RightAligned); jsonObject.AddNonDefaultValue("leftScroll", this.LeftScroll); jsonObject.AddIsNotNullOrEmpty("text", this.Text); return jsonObject; } internal static LocalizedControl Deserialize(JsonObject jsonObject) { var dialog = jsonObject.GetValueOrDefault("dialog"); var control = jsonObject.GetValueOrDefault("control"); var x = jsonObject.GetValueOrDefault("x", 0); var y = jsonObject.GetValueOrDefault("y", 0); var width = jsonObject.GetValueOrDefault("width", 0); var height = jsonObject.GetValueOrDefault("height", 0); var rightToLeft = jsonObject.GetValueOrDefault("rightToLeft", false); var rightAligned = jsonObject.GetValueOrDefault("rightAligned", false); var leftScroll = jsonObject.GetValueOrDefault("leftScroll", false); var text = jsonObject.GetValueOrDefault("text"); return new LocalizedControl(dialog, control, x, y, width, height, rightToLeft, rightAligned, leftScroll, text); } } }