private static void Level1Config(AureaColor systemColor, UPMCoIEdgeViewConfig parentEdgeConfigurationLevel1, UPMCoIEdgeViewConfig additionalEdgeConfiguration, UPMCoIViewConfig config)
        {
            var level = new UPMCoILevelViewConfig();

            var node = new UPMCoINodeViewConfig(AureaColor.RedGreenBlue(1.0, 1.0, 1.0), new Size(58, 58),
                                                AureaColor.RedGreenBlueAlpha(100.0 / 255.0, 162.0 / 255.0, 160.0 / 255.0, 1.0), 5.0f, 50.0f, true, true, true, new Size(75, 75),
                                                new Size(175, 175), int.MaxValue, new Size(150, 60), new Size(25, 40), new Size(0, 0), new Size(0, 0), 0.0f, new Size(0, 1), 1.0f,
                                                AureaColor.RedGreenBlue(219.0f / 255.0f, 219.0f / 255.0f, 219.0f / 255.0f), false, new Size(150, 100), 60.0f, 55, true,
                                                parentEdgeConfigurationLevel1, additionalEdgeConfiguration, 5, UPNodeViewAction.SelectNodeAndExpandCollapse, UPNodeViewAction.SelectNode,
                                                UPNodeViewAction.CustomViaDelegate, AureaColor.RedGreenBlueAlpha(187.0f / 255.0f, 187.0f / 255.0f, 187.0f / 255.0f, 1.0),
                                                AureaColor.RedGreenBlueAlpha(1.0, 1.0, 1.0, 1.0), 1.5f, 5, 17, AureaColor.RedGreenBlue(1.0, 1.0, 1.0), null, systemColor,
                                                null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                                                null, null, null, null, null, null, null, null, null, null);

            level.AddConfig(node);

            UpdateRowConfig(
                systemColor,
                node,
                UIFont.FontWithNameSize(HelveticaNeue, 12),
                UIFont.FontWithNameSize(HelveticaNeue, 12),
                UIFont.FontWithNameSize(HelveticaNeue, 12),
                UIFont.FontWithNameSize(HelveticaNeue, 12));

            config.AddConfig(level);
        }
        /// <summary>
        /// Applies the json configuration.
        /// </summary>
        /// <param name="jsonNodesViewConfig">The json nodes view configuration.</param>
        public void ApplyJsonConfig(string jsonNodesViewConfig)
        {
            if (!string.IsNullOrEmpty(jsonNodesViewConfig))
            {
#if PORTING
                NSData  data      = jsonNodesViewConfig.DataUsingEncoding(NSUTF8StringEncoding);
                NSError error     = null;
                object  theObject = NSJSONSerialization.JSONObjectWithDataOptionsError(data, -1, error);
                if (!error)
                {
                    NSDictionary dict = (NSDictionary)theObject;
                    foreach (string key in dict.Keys)
                    {
                        if (key.StartsWith("#"))
                        {
                            int config     = 0;
                            int level      = 0;
                            int group      = 0;
                            var components = key.Substring(1).Split('#');
                            foreach (string component in components)
                            {
                                switch (component[0])
                                {
                                case 'c':
                                    config = Convert.ToInt32(component.Substring(1));
                                    break;

                                case 'l':
                                    level = Convert.ToInt32(component.Substring(1));
                                    break;

                                case 'g':
                                    group = Convert.ToInt32(component.Substring(1));
                                    break;

                                default:
                                    break;
                                }
                            }

                            UPMCoINodeViewConfig nodeViewConfig = this.ConfigAtIndex(config).ConfigAtIndex(level).ConfigAtIndex(group);
                            nodeViewConfig.ApplyJsonDictionary(dict.ObjectForKey(key));
                        }
                        else
                        {
                            // Standard Property
                            this.SetValueForKey(dict.ObjectForKey(key), key);
                        }
                    }
                }
#endif
            }
        }
        private static void UpdateRowConfig(
            AureaColor systemColor,
            UPMCoINodeViewConfig node,
            UIFont textFont0,
            UIFont selectedTextFont0,
            UIFont textFont1,
            UIFont selectedTextFont1)
        {
            var rowConfig0 = node.TextRowConfigAtIndex(0);

            rowConfig0.Color        = AureaColor.RedGreenBlue(51.0 / 255.0f, 51.0 / 255.0f, 51.0 / 255.0f);
            rowConfig0.Font         = textFont0;
            rowConfig0.ShadowColor  = AureaColor.RedGreenBlue(1.0, 1.0, 1.0);
            rowConfig0.ShadowOffset = new Size(0, 1);
            rowConfig0.LineNumbers  = 1;

            var rowConfigS0 = node.SelectedTextRowConfigAtIndex(0);

            rowConfigS0.Color        = systemColor;
            rowConfigS0.Font         = selectedTextFont0;
            rowConfigS0.ShadowColor  = AureaColor.RedGreenBlue(1.0, 1.0, 1.0);
            rowConfigS0.ShadowOffset = new Size(0, 1);
            rowConfigS0.LineNumbers  = 1;

            var rowConfig1 = node.TextRowConfigAtIndex(1);

            rowConfig1.Color        = AureaColor.RedGreenBlue(102.0 / 255.0f, 102.0 / 255.0f, 102.0 / 255.0f);
            rowConfig1.Font         = textFont1;
            rowConfig1.ShadowColor  = AureaColor.RedGreenBlue(1.0, 1.0, 1.0);
            rowConfig1.ShadowOffset = new Size(0, 1);
            rowConfig1.LineNumbers  = 1;

            var rowConfigS1 = node.SelectedTextRowConfigAtIndex(1);

            rowConfigS1.Color        = systemColor;
            rowConfigS1.Font         = selectedTextFont1;
            rowConfigS1.ShadowColor  = AureaColor.RedGreenBlue(1.0, 1.0, 1.0);
            rowConfigS1.ShadowOffset = new Size(0, 1);
            rowConfigS1.LineNumbers  = 1;
        }
        private static void Level0Config(AureaColor systemColor, UPMCoIEdgeViewConfig additionalEdgeConfiguration, UPMCoIViewConfig config)
        {
            var level = new UPMCoILevelViewConfig();
            var node  = new UPMCoINodeViewConfig(AureaColor.RedGreenBlue(1.0, 1.0, 1.0), new Size(117, 117),
                                                 AureaColor.RedGreenBlueAlpha(179.0 / 255.0, 210.0 / 255.0, 103.0 / 255.0, 1.0), 8.0f, 50.0f, true, true, true, new Size(175, 175),
                                                 new Size(100, 100), int.MinValue, new Size(75, 50), new Size(40, 40), new Size(0, -25), new Size(0, 10), 0.0f, new Size(0, 1), 1.0f,
                                                 AureaColor.RedGreenBlue(219.0f / 255.0f, 219.0f / 255.0f, 219.0f / 255.0f), false, new Size(150, 100), 60.0f, 55, true, null,
                                                 additionalEdgeConfiguration, 5, UPNodeViewAction.SelectNodeAndExpandCollapse, UPNodeViewAction.SelectNode, UPNodeViewAction.RelayoutNode,
                                                 AureaColor.RedGreenBlueAlpha(187.0f / 255.0f, 187.0f / 255.0f, 187.0f / 255.0f, 1.0), AureaColor.RedGreenBlueAlpha(1.0, 1.0, 1.0, 1.0),
                                                 1.5f, 5, 26, AureaColor.RedGreenBlue(1.0, 1.0, 1.0), null, systemColor, null, null, null, null, null, null, null, null, null, null,
                                                 null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);

            level.AddConfig(node);

            var rowConfig0 = node.TextRowConfigAtIndex(0);

            rowConfig0.Color = AureaColor.RedGreenBlue(51.0 / 255.0f, 51.0 / 255.0f, 51.0 / 255.0f);
            rowConfig0.Font  = UIFont.FontWithNameSize(HelveticaNeueBold, 13);

            var rowConfigS0 = node.SelectedTextRowConfigAtIndex(0);

            rowConfigS0.Color = systemColor;
            rowConfigS0.Font  = UIFont.FontWithNameSize(HelveticaNeueBold, 13);

            var rowConfig1 = node.TextRowConfigAtIndex(1);

            rowConfig1.Color = AureaColor.RedGreenBlue(102.0 / 255.0f, 102.0 / 255.0f, 102.0 / 255.0f);
            rowConfig1.Font  = UIFont.FontWithNameSize(HelveticaNeueMedium, 12);

            var rowConfigS1 = node.SelectedTextRowConfigAtIndex(1);

            rowConfigS1.Color = systemColor;
            rowConfigS1.Font  = UIFont.FontWithNameSize(HelveticaNeueMedium, 12);

            config.AddConfig(level);
        }
 /// <summary>
 /// Adds the configuration.
 /// </summary>
 /// <param name="config">The configuration.</param>
 public void AddConfig(UPMCoINodeViewConfig config)
 {
     this.groupConfigs.Add(config);
 }