EN FR
EN FR


Section: Software

The FlowStates Toolkit

Participants : Caroline Appert [correspondant] , Michel Beaudouin-Lafon, Stéphane Huot.

FlowStates  [38] , is a new toolkit to program advanced interaction techniques which require non standard input (e.g., two different mice that act independently, a joystick, a tablet, etc.). It is built on top of two existing toolkits: SwingStates  [37] and ICon  [45] .

Figure 4. State machines and data flow in FlowStates
IMG/flowstates.png

With FlowStates the developer can program interaction logic using state machines like SwingStates does but does not restrict the set of possible input channels to Java AWT standard input (a single couple <mouse, keyboard>). The state machines just have to define the virtual input events that are required to trigger their transitions so that FlowStates turns these machines into ICon devices which can be plugged to any physical input channels (Figure 4 ). An ICon device is a data flow building block that has input and output slots in order to be connected to other devices in the simple graphical environment provided by ICon. State machines can also send out events which appear as output slots in the data flow model.

With FlowStates we showed how two models for programming interaction (state machines and data flow) can be fully integrated to offer a huge power of expression. The explicit decision to not set strict limits between the roles of each model makes this hybrid approach highly flexible, the developer setting himself the limit between the two according to his needs and habits.

FlowStates is available at http://www.lri.fr/~appert/FlowStates/ .

  • ACM: H.5.2 [User Interfaces]: Graphical user interfaces (GUI)

  • Software benefit: See C. Appert, S. Huot, P. Dragicevic and M. Beaudouin-Lafon (2009) FlowStates: Prototypage d'applications interactives avec des flots de données et des machines à états. In Proceedings of IHM 2009. ACM, pages 119-128.

  • OS/Middleware: Mac OS X, Linux, Windows

  • Required library or software: ICon, Java virtual machine

  • Programming language: Java