public void AddChildController(GnosisContainerController childController)
        {
            if (childController is GnosisSplitController)
            {
                if (((GnosisSplit)ControlImplementation).Splits == null)
                {
                    ((GnosisSplit)ControlImplementation).Splits = new List <GnosisSplit>();
                }

                ((GnosisSplit)ControlImplementation).Splits.Add((GnosisSplit)childController.ControlImplementation);
            }
            else if (childController is GnosisTileController)
            {
                if (((GnosisSplit)ControlImplementation).Tiles == null)
                {
                    ((GnosisSplit)ControlImplementation).Tiles = new List <GnosisTile>();
                }

                ((GnosisSplit)ControlImplementation).Tiles.Add((GnosisTile)childController.ControlImplementation);
            }

            ((GnosisContainer)childController.ControlImplementation).PropertyChanged += ChildContainer_PropertyChanged;
            childController.Parent = this;
            ChildControllers.Add(childController);
        }
        public GnosisTileController GetFirstTile()
        {
            GnosisContainerController firstChild = ChildControllers.OrderBy(x => x.ControlImplementation.Order).Where(x => !(x is GnosisNavTileController)).First();

            while (firstChild is GnosisSplitController)
            {
                firstChild = ((GnosisSplitController)firstChild).ChildControllers.OrderBy(x => x.ControlImplementation.Order).First();
            }

            return((GnosisTileController)firstChild);
        }
        public void RemoveChild(GnosisContainerController child)
        {
            if (child is GnosisSplitController)
            {
                //List<GnosisSplit> splits = new List<GnosisSplit>(((GnosisSplit)ControlImplementation).GnosisSplits);
                //splits.Remove((GnosisSplit)child.ControlImplementation);
                //((GnosisSplit)ControlImplementation).GnosisSplits = splits.ToArray();
                ((GnosisSplit)ControlImplementation).Splits.Remove((GnosisSplit)child.ControlImplementation);
            }
            else if (child is GnosisTileController)
            {
                //List<GnosisTile> tiles = new List<GnosisTile>(((GnosisSplit)ControlImplementation).GnosisTiles);
                //tiles.Remove((GnosisTile)child.ControlImplementation);
                //((GnosisSplit)ControlImplementation).GnosisTiles = tiles.ToArray();
                ((GnosisSplit)ControlImplementation).Tiles.Remove((GnosisTile)child.ControlImplementation);
            }
            ((IGnosisSplitImplementation)ControlImplementation).RemoveChild((GnosisContainer)child.ControlImplementation);

            ((GnosisContainer)child.ControlImplementation).PropertyChanged -= ChildContainer_PropertyChanged;
            ChildControllers.Remove(child);
        }
        public override GnosisController FindControllerByID(int controlID)
        {
            if (this.ControlImplementation.ID == controlID)
            {
                return(this);
            }

            //if (SplitDetailController.ID == controlID)
            //{
            //    return SplitDetailController;
            //}

            foreach (GnosisContainerController containerController in ChildControllers)
            {
                GnosisContainerController controller = (GnosisContainerController)containerController.FindControllerByID(controlID);
                if (controller != null)
                {
                    return(controller);
                }
            }

            return(null);
        }