/// <summary>
        /// (De)Select the given map object
        /// </summary>
        /// <param name="mapObject"></param>
        public void SelectMapObject(MapObject mapObject)
        {
            MapObjectGroup selection = controller.Selection;

            if (mapObject != null)
            {
                if (modifierKey == Keys.Control)
                {
                    if (selection.Contains(mapObject))
                    {
                        mapObject.Selected = false;
                        selection.Remove(mapObject);
                    }
                    else
                    {
                        mapObject.Selected = true;
                        selection.Add(mapObject);
                    }
                }
                else if (!selection.Contains(mapObject))
                {
                    selection.Clear();
                    mapObject.Selected = true;
                    selection.Add(mapObject);
                }
            }
            else if (!selection.Empty)
            {
                // deselect
                SolidGrabHandles handles = controller.RubberBand.Handles;
                selection.Clear();
                handles.ResetMode();
            }
        }