void ReleaseDesignerOutlets()
        {
            if (OtherButton6 != null)
            {
                OtherButton6.Dispose();
                OtherButton6 = null;
            }

            if (OtherButton5 != null)
            {
                OtherButton5.Dispose();
                OtherButton5 = null;
            }

            if (AddMonsterButton != null)
            {
                AddMonsterButton.Dispose();
                AddMonsterButton = null;
            }

            if (RacialView != null)
            {
                RacialView.Dispose();
                RacialView = null;
            }

            if (SimpleView != null)
            {
                SimpleView.Dispose();
                SimpleView = null;
            }

            if (OtherView != null)
            {
                OtherView.Dispose();
                OtherView = null;
            }

            if (SimpleHeaderView != null)
            {
                SimpleHeaderView.Dispose();
                SimpleHeaderView = null;
            }

            if (RacialHeaderView != null)
            {
                RacialHeaderView.Dispose();
                RacialHeaderView = null;
            }

            if (OtherHeaderView != null)
            {
                OtherHeaderView.Dispose();
                OtherHeaderView = null;
            }

            if (AdvancedButton != null)
            {
                AdvancedButton.Dispose();
                AdvancedButton = null;
            }

            if (SimpleSizeButton != null)
            {
                SimpleSizeButton.Dispose();
                SimpleSizeButton = null;
            }

            if (OutsiderButton != null)
            {
                OutsiderButton.Dispose();
                OutsiderButton = null;
            }

            if (AugmentSummoningButton != null)
            {
                AugmentSummoningButton.Dispose();
                AugmentSummoningButton = null;
            }

            if (RacialHitDieButton != null)
            {
                RacialHitDieButton.Dispose();
                RacialHitDieButton = null;
            }

            if (RacialBonusButton != null)
            {
                RacialBonusButton.Dispose();
                RacialBonusButton = null;
            }

            if (RacialSizeButton != null)
            {
                RacialSizeButton.Dispose();
                RacialSizeButton = null;
            }

            if (OtherTemplateButton != null)
            {
                OtherTemplateButton.Dispose();
                OtherTemplateButton = null;
            }

            if (AdvancerHeaderView != null)
            {
                AdvancerHeaderView.Dispose();
                AdvancerHeaderView = null;
            }

            if (ResetButton != null)
            {
                ResetButton.Dispose();
                ResetButton = null;
            }

            if (OtherTemplateOptionView != null)
            {
                OtherTemplateOptionView.Dispose();
                OtherTemplateOptionView = null;
            }

            if (OtherButton1 != null)
            {
                OtherButton1.Dispose();
                OtherButton1 = null;
            }

            if (OtherButton2 != null)
            {
                OtherButton2.Dispose();
                OtherButton2 = null;
            }

            if (OtherButton3 != null)
            {
                OtherButton3.Dispose();
                OtherButton3 = null;
            }

            if (OtherButton4 != null)
            {
                OtherButton4.Dispose();
                OtherButton4 = null;
            }
        }
        public void SetupButtons()
        {
            //advanced button
            advancedPopover = new ButtonStringPopover(AdvancedButton);
            advancedPopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "None", Tag = 0
            });
            for (int i = 1; i < 4; i++)
            {
                advancedPopover.Items.Add(new ButtonStringPopoverItem()
                {
                    Text = "Advanced x" + i, Tag = i
                });
            }
            advancedPopover.ItemClicked += HandleAdvancedPopoverItemClicked;

            //simple size button
            simpleSizePopover = new ButtonStringPopover(SimpleSizeButton);
            for (int i = -3; i < 0; i++)
            {
                simpleSizePopover.Items.Add(new ButtonStringPopoverItem()
                {
                    Text = "Young x" + (-i), Tag = i
                });
            }
            simpleSizePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "None", Tag = 0
            });
            for (int i = 1; i < 4; i++)
            {
                simpleSizePopover.Items.Add(new ButtonStringPopoverItem()
                {
                    Text = "Giant x" + i, Tag = i
                });
            }
            simpleSizePopover.ItemClicked += HandleSimpleSizePopoverItemClicked;

            //simple outsider button
            simpleOutsiderPopover = new ButtonStringPopover(OutsiderButton);
            simpleOutsiderPopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "None", Tag = null
            });
            foreach (Monster.HalfOutsiderType t in Enum.GetValues(typeof(Monster.HalfOutsiderType)))
            {
                simpleOutsiderPopover.Items.Add(new ButtonStringPopoverItem()
                {
                    Text = Monster.GetOutsiderTypeName(t).Capitalize(),
                    Tag  = new Monster.HalfOutsiderType ?(t)
                });
            }
            simpleOutsiderPopover.ItemClicked += HandleSimpleOutsiderPopoverItemClicked;

            //simple outsider button
            augmentSummoningPopover = new ButtonStringPopover(AugmentSummoningButton);
            augmentSummoningPopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "On", Tag = true
            });
            augmentSummoningPopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "Off", Tag = false
            });

            augmentSummoningPopover.ItemClicked += HandleAugmentSummoningPopoverItemClicked;


            racialHitDiePopover = new ButtonStringPopover(RacialHitDieButton);

            for (int i = -20; i < 21; i++)
            {
                if (i == 0)
                {
                    racialHitDiePopover.Items.Add(new ButtonStringPopoverItem()
                    {
                        Text = "None", Tag = 0
                    });
                }
                else
                {
                    racialHitDiePopover.Items.Add(new ButtonStringPopoverItem()
                    {
                        Text = i.PlusFormat(), Tag = i
                    });
                }
            }
            racialHitDiePopover.ItemClicked += HandleRacialHitDiePopoverItemClicked;
            UpdateButtonState();


            racialBonusPopover = new ButtonStringPopover(RacialBonusButton);
            foreach (Stat t in Enum.GetValues(typeof(Stat)))
            {
                racialBonusPopover.Items.Add(new ButtonStringPopoverItem()
                {
                    Text = Monster.StatText(t).Capitalize(),
                    Tag  = t
                });
            }
            racialBonusPopover.ItemClicked += HandleRacialBonusPopoverItemClicked;


            racialSizePopover = new ButtonStringPopover(RacialSizeButton);
            racialSizePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "50% HD", Tag = true
            });
            racialSizePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "No Size Change", Tag = false
            });

            racialSizePopover.ItemClicked += HandleRacialSizePopoverItemClicked;

            ResetButton.SetImage(UIExtensions.GetSmallIcon("reset"), UIControlState.Normal);

            AdvancerHeaderView.Gradient    = new GradientHelper(CMUIColors.SecondaryColorBDarker);
            AdvancerHeaderView.BorderColor = UIExtensions.RGBColor(0xFFFFFF);

            AddMonsterButton.SetSmallIcon("sword");

            otherTemplatePopover = new ButtonStringPopover(OtherTemplateButton);
            otherTemplatePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "None", Tag = AdvancerTemplate.None
            });
            otherTemplatePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "Half-Celestial", Tag = AdvancerTemplate.HalfCelestial
            });
            otherTemplatePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "Half-Dragon", Tag = AdvancerTemplate.HalfDragon
            });
            otherTemplatePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "Half-Fiend", Tag = AdvancerTemplate.HalfFiend
            });
            otherTemplatePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "Skeleton", Tag = AdvancerTemplate.Skeleton
            });
            otherTemplatePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "Vampire", Tag = AdvancerTemplate.Vampire
            });
            otherTemplatePopover.Items.Add(new ButtonStringPopoverItem()
            {
                Text = "Zombie", Tag = AdvancerTemplate.Zombie
            });
            otherTemplatePopover.ItemClicked += HandleOtherTemplateItemClicked;
            _OtherPopovers = new List <ButtonStringPopover>();
            for (int i = 0; i < _OtherButtons.Length; i++)
            {
                _OtherPopovers.Add(new ButtonStringPopover(_OtherButtons[i]));
                _OtherPopovers[i].Data             = i;
                _OtherPopovers[i].WillShowPopover += HandleWillShowOtherPopover;
                _OtherPopovers[i].ItemClicked     += HandleOtherPopoverItemClicked;
            }
        }