aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.Browser/ViewModelLocator.cs
blob: 054310e9951caa681be7c8fcdef888cef3e4b590 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Core.DI;
using Tango.PPC.Browser.ViewModels;

namespace Tango.PPC.Browser
{
    public static class ViewModelLocator
    {
        /// <summary>
        /// Initializes a new instance of the ViewModelLocator class.
        /// </summary>
        static ViewModelLocator()
        {
            TangoIOC.Default.Register<BrowserViewVM>();
        }

        /// <summary>
        /// Gets the main view VM.
        /// </summary>
        public static BrowserViewVM BrowserViewVM
        {
            get
            {
                return TangoIOC.Default.GetInstance<BrowserViewVM>();
            }
        }
    }
}
="w"> string Name { get; set; } public string Value { get; set; } public List<TreeNode> Children { get; set; } = new List<TreeNode>(); public static TreeNode CreateTree(object obj) { if (obj.GetType().IsValueTypeOrString()) { return new TreeNode() { Name = "Value", Value = obj.ToStringSafe() }; } else { JavaScriptSerializer jss = new JavaScriptSerializer(); var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(obj); Dictionary<string, object> dic = jss.Deserialize<Dictionary<string, object>>(serialized); var root = new TreeNode(); root.Name = "Root"; BuildTree(dic, root); return root; } } private static void BuildTree(object item, TreeNode node) { if (item is KeyValuePair<string, object>) { KeyValuePair<string, object> kv = (KeyValuePair<string, object>)item; TreeNode keyValueNode = new TreeNode(); keyValueNode.Name = kv.Key; keyValueNode.Value = GetValueAsString(kv.Value); node.Children.Add(keyValueNode); BuildTree(kv.Value, keyValueNode); } else if (item is ArrayList) { ArrayList list = (ArrayList)item; int index = 0; foreach (object value in list) { TreeNode arrayItem = new TreeNode(); arrayItem.Name = $"[{index}]"; arrayItem.Value = ""; node.Children.Add(arrayItem); BuildTree(value, arrayItem); index++; } } else if (item is Dictionary<string, object>) { Dictionary<string, object> dictionary = (Dictionary<string, object>)item; foreach (KeyValuePair<string, object> d in dictionary) { BuildTree(d, node); } } } private static string GetValueAsString(object value) { if (value == null) return "null"; var type = value.GetType(); if (type.IsArray) { return "[]"; } if (value is ArrayList) { var arr = value as ArrayList; return $"[{arr.Count}]"; } if (type.IsGenericType) { return "{}"; } return value.ToString(); } } }