Example #1
0
        public static void RESTORE_FROM_JSON(string file, out TargetManagerDataModel targets, ToolsNavigationDataModel <LayoutDocument> navigation, out ToolLayout dockingLayout, out List <LayoutDocument> floatingLayout)
        {
            targets        = null;
            dockingLayout  = null;
            floatingLayout = null;
            ReadOnlySpan <byte> fs = File.ReadAllBytes(file);

            if (fs.StartsWith(__utf8_bom))
            {
                fs = fs.Slice(__utf8_bom.Length);
            }

            var reader = new Utf8JsonReader(fs, new JsonReaderOptions()
            {
                CommentHandling = JsonCommentHandling.Skip
            });

            try
            {
                while (reader.Read())
                {
                    switch (reader.TokenType, reader.CurrentDepth)
                    {
                    case (JsonTokenType.PropertyName, 1):
                        switch (reader.GetString())
                        {
                        case "Targets":
                            TargetManagerDataModel.RESTORE_FROM_JSON(ref reader, out targets); break;

                        case "Docking":
                            dockingLayout = navigation.ImportDockingToolboxFromJSON(ref reader, fs); break;

                        case "Floating":
                            floatingLayout = navigation.ImportFloatingToolboxFromJSON(ref reader, fs); break;
                        }
                        break;