Project Description
Guava (GUI as view) is a framework that supports UI-first application development. From a UI, in-memory data structures and a query interface are automatically generated. Guava provides schema mapping that allows schema evolution, complex data transformation and business logic.

There is one pre-requisite for the source code to compile: SidewalkToolsSetupFiles.exe. This file installs libraries pertaining to the Sidewalk project, on which details can be found here: You will be able to run Guava without these tools if you remove references to its assemblies and comment out any lines of code that refer to them.

The Guava framework has two primary components: a UI library and a mapping language. The UI library is a replacement/enhancement of the standard Windows Forms library in Visual Studio. Using Guava widgets instead of Windows Forms widgets provides the following advantages:
  • Specify relationships between forms using Button properties instead of events
  • Create a DataSet object directly from the UI code, as well as all data bindings from the UI to the DataSet
  • Create a database connection and database with the same schema as the DataSet object, as well as all of the insert/update/delete statements that make data persistent from the UI
  • Create a query interface from the UI code that can be used to query that database
All of the above artifacts are generated automatically just from any UI built using Guava widgets in the Visual Studio designer.

The default 1-1 relationship between the DataSet object and the database can be modified significantly using a channel, a mapping language that allows sophisticated and complex data and schema transformations, including partitioning, merging, pivoting, and function application.

More details will be made available in time. In the meantime, consult dissertation-onesided.pdf, a PhD dissertation on the Guava framework.

Guava source code is released under the Apache 2.0 license. In a nutshell, you may use our code in any derivative works that you wish, provided that you give us credit. However, we welcome contributions to this project, especially ones that improve the usability of the UI widgets and DataSet management. Please contact a coordinator if you would like to contribute.

Last edited May 16, 2009 at 10:35 PM by cybertyche, version 6