MouseEvent + State Pattern