void ShowGroupContextMenu(Rect rect, string groupName, SelectionGroup group)
        {
            var menu = new GenericMenu();

            menu.AddItem(new GUIContent("Duplicate Group"), false, () =>
            {
                SelectionGroupManager.instance.DuplicateGroup(group.groupId);
            });
            menu.AddItem(new GUIContent("Clear Group"), false, () =>
            {
                Undo.RegisterCompleteObjectUndo(SelectionGroupManager.instance, "Clear");
                group.Clear();
            });
            menu.AddItem(new GUIContent("Configure Group"), false, () => SelectionGroupConfigurationDialog.Open(group, this));
            menu.AddItem(new GUIContent("Delete Group"), false, () =>
            {
                SelectionGroupManager.instance.RemoveGroup(group.groupId);
            });
            menu.DropDown(rect);
        }
        void HandleHeaderMouseEvents(Rect rect, string groupName, SelectionGroup group)
        {
            var e = Event.current;

            if (rect.Contains(e.mousePosition))
            {
                switch (e.type)
                {
                case EventType.MouseDown:
                    switch (e.button)
                    {
                    case RIGHT_MOUSE_BUTTON:
                        ShowGroupContextMenu(rect, groupName, group);
                        break;

                    case LEFT_MOUSE_BUTTON:
                        if (e.clickCount == 1)
                        {
                            activeSelectionGroup = group;
                        }
                        else
                        {
                            SelectionGroupConfigurationDialog.Open(group, this);
                        }
                        break;
                    }

                    break;

                case EventType.MouseDrag:
                    DragAndDrop.PrepareStartDrag();
                    DragAndDrop.StartDrag(groupName);
                    DragAndDrop.objectReferences = group.ToArray();
                    e.Use();
                    break;
                }
            }
        }