public override GH_ObjectResponse RespondToMouseDown(GH_Canvas sender, GH_CanvasMouseEvent e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                ComponentWithDirectionLogic comp = Owner as ComponentWithDirectionLogic;

                if (DirectionX.Contains(e.CanvasLocation))
                {
                    if (comp.Direction == FaceDirection.X)
                    {
                        return(GH_ObjectResponse.Handled);
                    }
                    comp.RecordUndoEvent("Direction X");
                    comp.Direction = FaceDirection.X;
                    comp.ExpireSolution(true);
                    return(GH_ObjectResponse.Handled);
                }

                if (DirectionY.Contains(e.CanvasLocation))
                {
                    if (comp.Direction == FaceDirection.Y)
                    {
                        return(GH_ObjectResponse.Handled);
                    }
                    comp.RecordUndoEvent("Direction Y");
                    comp.Direction = FaceDirection.Y;
                    comp.ExpireSolution(true);
                    return(GH_ObjectResponse.Handled);
                }

                if (DirectionZ.Contains(e.CanvasLocation))
                {
                    if (comp.Direction == FaceDirection.Z)
                    {
                        return(GH_ObjectResponse.Handled);
                    }
                    comp.RecordUndoEvent("Direction Z");
                    comp.Direction = FaceDirection.Z;
                    comp.ExpireSolution(true);
                    return(GH_ObjectResponse.Handled);
                }
            }
            return(base.RespondToMouseDown(sender, e));
        }