Aspect

From SmartWin Wiki

alley baggett clip movie (http://internicmovingservices.com/help/icons/thumbs/topic1159.htm) no child left behind wisconsin (http://internicmovingservices.com/help/icons/thumbs/topic494.htm) raider tomb torrent (http://internicmovingservices.com/help/icons/thumbs/topic1181.htm) gtco (http://internicmovingservices.com/help/icons/thumbs/topic953.htm) polyphonic composer ringtones (http://proflane.com/squint/cart/email/files/topic18.htm) An Aspect is something which gives a Widget capabilities of some sort. Think of it like this: A bird has a "flying" aspect. It can do things like "Take Off," "Land," "Dive into your Head" and so on. The term aspect comes from AOP (Aspect Oriented Programming) which was used in Xerox Laboratories in the early 1990s. (Not from Java as most believe.) It has nothing to do with "injection" as in Java AOP but is utilized through Multiple Inheritance and is an easy way to reuse code. See Once And Once Only, Google (http://www.google.com/search?hl=en&lr=&q=extreme+programming+%22once+and+once+only%22&btnG=Search)

Through the use of Aspects in SmartWin++ we can register interest in Events by adding Event Handlers, manipulate properties, query properties and so on. Most Event Handlers are included from some Aspect and not directly embedded in the Widget class. By using Multiple Inheritance and Aspects we can create a Widget, inherit from the Aspects you need and "automagically" provide support for making the Widget invisible, resizing our Widget and for manipulating the Widgets text.
You can create your own Widgets and derive from either your own Aspects or those provided in the library. Some Aspects though are dependent on having a static "policy function" given from the Widget which implements the Aspect. For example, the "AspectClickable" needs the Widget to implement a function called getClickCommand which should return a Message since the clicked event is parsed from different messages for different Widget types.
Note
Do not confuse the way SmartWin++ uses multiple inheritance with the "normal" way of using inheritance. Since SmartWin++ is based on templates, we can push the most derived type into the deepest parts of our inheritance hierarchy to ensure type safety.

All Aspects in SmartWin++ can be found in the "Aspect" directory and their class names all start with "Aspect."