Many UI events come in pairs, e.g., MOUSE DOWN and MOUSE UP
You can use these events to break the interaction into stages:
The trick is to think of states like a flowchart with discrete steps.
When you need to make a choice in the flowchart, think of the state as a question, and events as the answers.
See also Core Concepts