Main Interfaces
ulu.view.Item is the core interface in Uncle Unc, defining a node in the Item tree that has the following attributes:
- it has a name
- it may have properties that can be read or set
- it may have methods that can be invoked
- it may have child nodes and a parent
- it may have a defined type
- it may have a reference to a specific object
- it may handle methods (its own or others)
- it may link to a stream of 'content' via a java.net.URL
This specification is rather bloated, and individual UI widgets may not need access to the full range of capabilities. As a result, the Item interface has been broken down into a set of lower-level interfaces:
- ulu.view.Named
- ulu.view.Propertied
- ulu.view.Invokable
- ulu.view.UContainer and ulu.view.UContained
- ulu.view.Typed
- ulu.view.Referrer
- ulu.view.Handler
- ulu.view.ContentSource
The default implementation of Item supports a core set of these interfaces directly, and the more exotic ones (e.g. UContainer) by delegation. This provides a degree of efficiency - if a Item has no children, it only contains a single null pointer to a delegate class. It also allows lower-level interface implementations to be quickly wrapped as Items simply by slotting them in as a delegate. The ulu.ut.ProcessChain model, which underlies Uncle Unc's Item filters, for example, implement UContainer but not Item.

