Observed User Interface
Last published: June 27, 2007 by 'ardent'
Defines 5 Classes
Extends 6 Classes
ObservedUserInterface is an Application Framework, for Widgetry, meant to make application building in Cincom Smalltalk faster and easier.
ObservedUserInterface is inspired by and borrows heavily from the ValueInterface framework built by Steven T. Abell.
Send bug reports, suggestions, enhancements to: email@example.com
ObservedUserInterface aims to take the most useful features of ValueInterface and make them available in the new Widgetry GUI framework
ObservedUserInterface is still under development, but is useable.
The three main goals of ObservedUserInterface:
1) Make building and reusing application easier
2) Not get in the way when you need to bypass the framework
3) Provide utility methods to simplify common, or difficult but needed, tasks.
The basic theme of ObservedUserInterface is taking the concept of ValueModels (now ObservedValue's in Widgetry) and extending this concept to the Application level.
This gives the application some of the power, flexibility and especially modularity, of ValueModels, making it very simple to reuse and connect applications.
Another theme is "one". Every application has one domain model, known as its value.
Every application has a valueHolder, from which it gets its value. By default, this is an ObservedValue (The Widgetry version of ValueHolder).
Supply your own, if needed, by sending the message #valueHolder: in an appropriate place.
When creating your Widgetry interface, you will build widgets, and connect them to models. In this framework use these methods:
modelAccessing: accessorSymbol change: announcementForThisChange
modelAccessing: accessorSymbol path: accessPath change: announcementForThisChange
self modelAccessing: #name change: CustomerNameChanged
self modelAccessing: #nameModel path: #(firstName) change: CustomerFirstNameChanged
Load the examples and examples II (ObservedUSerInterface - examples) packages.
Read the package comment for each on its contents
Applications built following the few simple guidelines can be easily reused.
To reuse an application that automatically shares the valueHolder of another:
example: Create aCustomerApp, so that aCustomerApp uses aCustomerListApp's value
aCustomerApp := CustomerApp in: aCustomerListApp.
Thats it! When aCustomerListApp changes its value, aCustomerApp's will also.
See the package ObservedUserInterface - Examples
myWindowSize - Provide a point width@height, that will specify the size of the applications window when opened
value description of value
valueHolder description of valueHolder
valueSubscriptions description of valueSubscriptions