Views - Status February 2004

Judith Bishop http://www.cs.up.ac.za/~jbishop
Nigel Horspool http://www.cs.uvic.ca/~nigelh

This project was set up with two aims - to investigate XML-based platform-independent GUI design as an alternative to WinForms, and to promote the use of C# in teaching by writing a textbook. With the help of excellent students we have made significant progress in both.

Views
--------
The Views system (Vendor Independent Extensible Windowing System) has been written and Version 1.19 has been extensively tested, both by us and by students at University of Pretoria. It is available for download from this page with a manual [1]. Views defines XML tags and attributes which mirror those in WinForms. A GUI can be setup in a program by sending the XML as a string parameter to the Views constructor. The GUI is drawn, and thereafter the user interacts with it via a small set of methods such as GetControl, GetText, SetValue and so on. The emphasis is entirely on ease of use and everthing is defaulted in sensible ways. The XML approach to GUIs has been tried with XUL and UIML and we have compare out approach to these in [2] and [3]. An earlier version of Views was hand-translated to Java, and of course within the Windows world, the C# version can be called from Java via JNI.

Views on Rotor
----------------
The standard distribution of Views runs on Windows, and requires access to the WinForms API provided by the System.Windows.Forms namespace.  The advantages of Views in this environment are its small footprint, its user friendliness, and the ability to develop GUIs easily without using Visual Studio. In January 2004, Views was ported to the SSCLI / Rotor platform and runs without requiring access to WinForms.  Instead, it uses Qt to display GUIs.  This version of Views is therefore platform independent. It has been successfully moved (in an afternoon) to a Mac, and run on FreeBSD with Rotor. 
     Independently, a form design tool which is compatible with Views is being developed.  It allows the user to design a form by dragging and dropping controls, and authomatically generates the XML specification used by Views.  The implementation of this design tool will use Qt and is therefore suitable for use on the Rotor platform.

Views with other languages
---------------------------------
Views is used most commonly with C# but it transports transparently to other .NET languages such as C++ and VB.

Future plans for Views
--------------------------
Version 1.0 through 1.19 of Views have been successful in providing access to a chosen set of WinForms controls and properties of those controls, and allows the user to interact with mouse and keyboard events only via a highly controlled interface.  Such tight control over what the user can do is advantageous when teaching beginners how to develop GUIs, but it may discourage more advanced programmers from using Views.  We are planning to provide more generality in Versions 2.0. There will be total compatibility with earlier version of Views, but access to the full set of controls and all their properties will be provided.  Users will have the choice of interacting with the controls either via the simplified event model supported in Views 1.x or via the full event model provided in WinForms.

“C# Concisely” textbook
------------------------------
While there are now many trade books on C# (some excellent, some mediocre), text books are few. We decided in January 2002 to write one and the book came out in October 2003. Consult the website on http://csharp.cs.uvic.ca

Publications and tutorials
------------------------------
We have also been busy writing papers and promoting C#. The latest is our SIGCSE paper in March 2004 [10]. In print, we have the poster presented at JavaGrande [5] (yes, we told the high-performance Java community how great C# was) and its journal version as an invited submission [3]. The Views work was presented at the Rotor Workshops in Cambridge [8] and Seattle [9] and at the IFIP WG2.4 meeting in Dagstuhl in November [2].
    The tutorial on C# and applying it in a Java environment via Rotor was presented in December [6] for RISE in Sweden to 60 people (with the Swedish Microsoft Academic Advisor who made several contacts that day) and a version of this tutorial was presented at the Joint Modular Languages Conference in Austria in August. 
We also had a ten week C# Enrichment course CEN101 for first and second year students at UP, and you can see them on [7].
    Microsoft has promoted C# Concisely and we have presented talks at MSR events in Munich, Copenhagen, Dubai, Edinburgh, Cambridge, Budapest, Dresden and Cape Town.

References
-------------

[1] Views website at http://views.cs.up.ac.za

[2] Bishop J M and Horspool R N, Views - a Vendor Independent Extensible Windowing System, presented at IFIP WG2.4 meeting, Dagstuhl, Germany, November 2002, http://views.cs.up.ac.za/vdata/Views-Dagstuhl.ppt

[3] Bishop J M, Horspool R N and Worrall B G, Experience with integrating Java with C# and .NET, Invited submission to CCPE, January 2002, http://views.cs.up.ac.za/vdata/Views-CCPE.pdf

[4] Bishop J M and Horspool R N, C# Concisely, Preface and Contents, to be published by Addison-Wesley May 2003, http://views.cs.up.ac.za/vdata/CSharpCPreface.pdf

[5] Bishop J M, Horspool R N and Worrall B G, Experience with integrating Java with C#, XML and Webservices, JavaGrande, Seattle, November 2002.
http://views.cs.up.ac.za/vdata/Views-JavaGrande.pdf

[6] Bishop J M, Tutorial at RISE, University of Linkoping, Sweden, December 2002, http://views.cs.up.ac.za/vdata/Views-Linkoping.ppt - to come

[7] CEN101 class photo , http://views.cs.up.ac.za/vdata/images/CEN101.JPG October 2002.

[8] Horspool R N and Bishop J M, Views - an independent GUI development tool for Rotor, 1st Rotor Workshop, Cambridge July 2002. http://views.cs.up.ac.za/vdata/Views-Cambridge.pdf

[9] Bishop Judith and Horspool Nigel,  Views - an independent GUI development tool for Rotor, Poster at 1st Rotor Workshop, Cambridge September 2003.

[10] (2003) Judith Bishop & Nigel Horspool, Developing Principles of GUI Programming Using Views, ACM-SIGCSE, Norfolk, USA, March 2004