ButtonStateController.
Changes Component state and fires [action] events in response to
user input(key, mouse, focus events) and current state.
Repaints component when necessary.
Is typically used by Components such as Button, Checkbox, etc
as input event listener.
Implements scrolling behavior for any container which
has up to 1 child and up to 2 scrollbars[and implements
Scrollable interface], for example ScrollPane.