Hi Jacob,

I totally agree with what you are saying about the problems of
developing complex user interfaces. And thanks for the reference to
the Beaudoin-Lafon paper. Another very good reference is Ian Horrocks
book:

  
http://www.amazon.com/Constructing-User-Interface-Statecharts-Horrocks/dp/0201342782

BTW, I am one of the authors behind the SCXML standard, and three
years ago I implemented my own JavaScript SCXML interpreter, in order
to test out some ideas. You may want to give it a spin:

  http://www.ling.gu.se/~lager/Labs/js-scxml/

Good luck with your thesis!

Best regards,
Torbjörn Lager


On Thu, Dec 16, 2010 at 11:07 AM, Jacob Beard <[email protected]> wrote:
> Hi,
>
> I'm currently writing my master's thesis on how state machines can be
> used to describe complex user interface behaviour. Michel
> Beaudoin-Lafon has a good paper on the motivation for this:
>
> http://portal.acm.org/citation.cfm?id=989865
>
> To summarize, most general-purpose programming languages are
> fundamentally at the wrong level of abstraction for describing certain
> kinds of user interface behaviour. Consider the example of
> drag-and-drop behaviour. To implement this in JavaScript, you would
> likely register three callback functions, for mousedown, mouseup, and
> mousemove, respectively. You would also keep a variable outside of
> these functions to keep track of changes in application state between
> these callbacks. You would probably end up with something like the
> following snippet:
>
>
> var state;
>
> node.addEventListener("mousedown",function(e){
>        state = "DRAGGING";
> },false);
>
> node.addEventListener("mouseup",function(e){
>        state = "IDLE";
> },false);
>
> node.addEventListener("mousemove",function(e){
>        if(state === "DRAGGING"){
>                //move the node based on e
>        }
> },false);
>
>
>
> The problem is that this approach does not scale very well as
> applications become increasingly complex, especially for applications
> that involve a complex notion of state. The reason for this is that,
> what conceptually is a single interaction (drag-and-drop) is broken up
> across a number of callbacks which are not explicitly linked in the
> syntax of the language. What you would like is to be able to describe
> the drag-and-drop interaction holistically, but what you end up with
> instead is a spaghetti of callbacks linked by global variables.
>
> A language at the right level of abstraction would be able to encode
> explicitly the notion of the state of an object changing in reaction
> to events. Finite state machines or Statecharts provide such a
> language, and in fact, state machines have a long history of use in
> human-computer interaction research to describe user interface
> behaviour.
>
> In order to use Statecharts in the web environment, they must first be
> compiled to JavaScript. This is the motivation for my project,
> SCXML-JS, an optimizing Statechart-to-JavaScript compiler. This work
> is still under heavy development, but more information can be found at
> the following links:
>
> http://commons.apache.org/sandbox/gsoc/2010/scxml-js/
> http://www.svgopen.org/2010/registration.php?section=abstracts_and_proceedings#paper_45
> http://www.svgopen.org/2009/registration.php?section=abstracts_and_proceedings#paper_36
>
> If anyone has any questions about this work, please feel free to
> contact me off-list, or on the Apache Commons mailing list.
>
> Cheers,
>
> Jake
>
> --
> To view archived discussions from the original JSMentors Mailman list: 
> http://www.mail-archive.com/[email protected]/
>
> To search via a non-Google archive, visit here: 
> http://www.mail-archive.com/[email protected]/
>
> To unsubscribe from this group, send email to
> [email protected]
>



-- 
Torbjörn Lager
Professor of General and Computational Linguistics
Department of Philosophy, Linguistics and Theory of Science
University of Gothenburg
Box 200, SE-405 30 Gothenburg, Sweden
Phone: +46317864413

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/[email protected]/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/[email protected]/

To unsubscribe from this group, send email to
[email protected]

Reply via email to