As we have seen, there are three ways to implement a new behavior in an application. In increasing order of complexity, you can:
Find a toolbox widget that already does nearly what you need and extend it.
Use the handler mechanism demonstrated previously in Example 10-4.
Override event receiver methods and implement them yourself.
Handling raw events across multiple platforms can be quite complicated. Different devices, for instance, may have radically different keypads: for instance, four-key versus five-key D-pads. Some devices still require triple-tapping to enter alphabetic information. This kind of diversity is a serious issue in the mobile environment and can be a nightmare for the developer who wants to keep her application portable.
When designing your application, it’s clearly smart to let the framework do as much as possible. The best option is to find some toolbox widget that has nearly the behavior you require and extend it to meet your needs. The toolkit provides extensive tools for doing this: XML attributes, fine-grained and overridable methods, and so on.
If it isn’t possible to customize an existing widget, you should consider the listener mechanism, demonstrated previously in Example 10-5. Only when it is necessary to change the existing behavior of a widget should you consider overriding event receiver methods.
User interface frameworks have different names for the components from which they’re composed: the text boxes, buttons, canvases, ...