public PropertyWheelMenu(QuickActionMenu parent) : base(null)
            {
                Register(parent, true);
                this.quickActionMenu = parent;
                wheelBody            = new PropertyWheelMenuBody(this)
                {
                };

                // Selection wheel for block properties
                propertyWheel = new RadialSelectionBox <PropertyWheelEntryBase, Label>()
                {
                    Visible         = false,
                    BackgroundColor = bodyColor,
                    HighlightColor  = highlightColor,
                    SelectionColor  = highlightFocusColor,
                    ZOffset         = -1,
                };
                propertyWheel.Register(wheelBody, true);

                // Selection wheel for dupe shortcuts
                dupeWheel = new RadialSelectionBox <PropertyWheelEntryBase, Label>()
                {
                    Visible             = false,
                    BackgroundColor     = bodyColor,
                    HighlightColor      = highlightColor,
                    SelectionColor      = highlightFocusColor,
                    ZOffset             = -1,
                    CollectionContainer =
                    {
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Back",
                            ShortcutAction = quickActionMenu.StopPropertyDuplication,
                        },
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Open List",
                            ShortcutAction = quickActionMenu.OpenDupeList,
                        },
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Open List and Select All",
                            ShortcutAction = quickActionMenu.OpenDupeListAndSelectAll,
                        },
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Clear Selection",
                            ShortcutAction = quickActionMenu.ClearSelection,
                        },
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Copy Selected",
                            ShortcutAction = quickActionMenu.CopySelectedProperties,
                        },
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Copy All but Name",
                            ShortcutAction = () => quickActionMenu.CopyAllProperties(false),
                        },
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Copy All",
                            ShortcutAction = () => quickActionMenu.CopyAllProperties(true),
                        },
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Paste",
                            ShortcutAction = quickActionMenu.PasteCopiedProperties,
                        },
                        new PropertyWheelShortcutEntry()
                        {
                            Text           = "Undo",
                            ShortcutAction = quickActionMenu.UndoPropertyPaste,
                        },
                    }
                };
                dupeWheel.Register(wheelBody, true);

                // Shortcuts to be added to the property wheel later
                shortcutEntries = new List <PropertyWheelShortcutEntry>()
                {
                    new PropertyWheelShortcutEntry()
                    {
                        Text           = "Copy Settings",
                        ShortcutAction = () =>
                        {
                            MenuState = QuickActionMenuState.WheelMenuControl;
                            quickActionMenu.StartPropertyDuplication();
                        },
                    }
                };

                // I'm using a generic pool because I'm using two types of entry in the same list, but only
                // one is pooled, and I can't be arsed to do this more neatly.
                propertyEntryPool = new ObjectPool <object>(
                    () => new PropertyWheelEntry(),
                    x => (x as PropertyWheelEntry).Reset()
                    );

                debugText = new Label(this)
                {
                    Visible         = false,
                    BuilderMode     = TextBuilderModes.Lined,
                    ParentAlignment = ParentAlignments.Right
                };
            }