Scope is a framework built around an extensible implementation of
the Hierarchical Model-View-Controller (HMVC) pattern similar to the
pattern described in
. It provides an easy-to-use Java
library that can be used as a basis for component-oriented application
development following the layered architecture detailed in Sun's J2EE
HMVC: The layered pattern for developing strong client tiers
Cheesman/Daniels: UML Components
Applications developed using Scope are "view-agnostic": a Swing
application uses the same infrastructure and patterns as a web application
that happens to use XML/XSLT to generate HTML, or a JSP-based application.
The framework has been used
in production systems built using the default Swing and XML/XSL Servlet
implementations, as well as proprietary VoiceXML, ColdFusion and custom
Scope provides the following major subsystems:
An HMVC implementation in which Controllers respond to
Control objects issued from Views as a result of user interaction,
or from child Controllers in the chain of responsibility.
Infrastructure for binding models to views with full two-way
synchronisation: change the view and the model is updated,
and vice-versa. (Obvious limitations exist with web
applications that cannot update HTML when a model on
the web server updates.)
Wrappers around common Swing components to implement
full data binding with validation.
A servlet implementation using XSLT to transform model XML
into HTML. The servlet implementation supports persistent
per-user application state if required, and automatic repopulation
of model objects from form parameters in an HTTP request.
An early implementation using JSP Views to suck data from
models into an HTML layout. This also supports automatic
repopulation of model data from HTTP requests.
Infrastructure that allows Scope to act on arbitrary JavaBean
model objects. This infrastructure is designed to be decoupled
in such a way that an alternative can be plugged in, for example
to act on JMX MBeans.
An implementation of "active" model objects that broadcast changes in
their state to allow views to update automatically. A set of "active"
collection models are also provided. Use of these base classes is
optional but convenient in complex applications that use a rich GUI,
eg Swing, in which fully automated synchronisation between model and
view is desirable. However, even where this is not feasible, Scope's
Swing implementation without "active" models enables simple semi-automatic
data-binding -- see the samples.
Support for localisation of user messages.
Support for conversion of arbitrary datatypes to and from
their String representation.
A comprehensive unit test suite to ensure a known quality level.
Scope is distributed with a set of designed to act as tutorials
in the use of various features of the framework.
A Yahoo eGroup has been set up by Scope users to discuss their experiences.
A FAQ is also being compiled by list members -- a useful resource
for all users. For further information: