A mandatory UI component for various situations. Button components shall have the following properties:
- A command/action assigned
- A label/text
- An icon (optional)
- A tooltip text (optional)
- A class specifying the type/importance (e.g. primary, secondary, delete)
Buttons should be generic containers and their visual appearance depends on the context they occur in. When grouped in a toolbar component, the button might only be represented with its icon and showing the label as a tooltip when hovering the mouse. Listed in a menu, the icon + text are displayed.
The assigned command/action can also be used to set the button state (enabled/disabled) depending whether the command is currently allowed based on the state of the application (i.e. the reply-to button is only enabled if one single message is selected). The binding of this State <-> Action <-> Button relation is yet to be defined. A global registry of currently available actions can be maintained by the app and button components can observe their respective action.
- Mike browses his Inbox folder
- He selects a message from the list
- The toolbar shows active buttons for reply, forward, delete an archiving the selected mesage
- Mike selects a second message
- The reply button becomes inactive/disabled