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