Introduction:
The Windmill application framework is designed to create robust
and structured applications which are both modular and maintainable. The
framework is made in c#, and based on .net.
Examples of typical applications include technical and scientific
applications, finite elements, simulators, and CAD or CAE like operations.
The framework is built upon well
known design patterns, which are combined in a consistent API. One of the concepts
used is the isolation of object dependencies; This forces developers to
build their modules in such a way that inappropriate object dependencies are
reduced, while appropriate dependencies are handled in a uniform,
understandable, and manageable fashion. The result is an application that is
well organized and easy to extend.
Project based
approach:
Projects play a central role in the framework, and an application can have one or more of these, which are dealt with by a 'project manager'. Each project has collection of 'project-items', which are 'domain' objects containing domain specific knowledge and data. Project items can either be created by the user or by the application itself. The organization of project-items within a project is revealed in the 'project explorer', and they can have one or more views representing the state of the object and reflecting changes to it. If a project-item is selected, its properties are shown in the properties editor. 'Snapshots' of project-items can be saved and then restored at a later time, which allows the user to keep track of the history of changes. Project-items can also be copied and pasted (dragged/dropped) to documents, and an event based mechanism is used to note and respond to changes and choices made by the user.
Data storage:
A customized 'compound file' mechanism is designed to save and
load data in a structured way.
The
framework uses this complete file-system within a single file for storing and
retrieving data. Data is loaded on demand (lazy loading) which means that
big project-files "load" quickly and only receive the data that is
actually needed.
Plug-ins:
The framework uses a plug-in mechanism to add functionality to
the application. The following objects are loaded from plug-ins:
The
framework comes with a series of useful 'default' and demo plug-ins. Examples
are:
plug-ins for the visualization of the
parent-child relationship, a "dependency plug-in" which reveals the
dependencies between objects, and others for attachments and snapshots.
Furthermore, there are many other useful plug-ins which can either be used
directly or serve as a basis for developing domain specific applications.
Key features:
Screenshots:


