DiamondSpin
Tabletop Toolkit Project



  • Project
The DiamondSpin toolkit provides to the developer community a rich Java toolkit, based on SWING and compatible with it but ... with openGL fast display of subwindow and new features for these windows. It aims at being used for tabletop user interfaces. Tabletop are different from desktop application in many ways :
  • Multiple users sit around the table displaying the common user interface
  • Each user has a different point of view with the associated preferred orientation for readable content
  • As they intend to work together they want to interact at the same time with the user interface
  • They may use different interaction device : finger, hand or tool (stylus, eraser, ruler, phycon, and even wireless mice/keyboards)
  • A single user may use two interaction devices at the same time (right and left hand driven)
  • The same document may appear multiple times in the same interface
  • Hand(s) over the table hide partially the objects of interaction
  • fingers are less precise than mices at touch time (but almost as precise for drag&drop)
  • There may ba a shadow of the hand(s) if the tabletop interface is video-projected toward the table from the top
  • Tabletop users may want to collaborate with a remote desktop computer, a laptop put on the table or an other tabletop (remote or present in the same room)
To get the latest release of DiamondSpin you should get it from the source sup repository :
svn checkout https://subversion.cru.fr/diamondspin (anonymous svn command)
 
news
I got tired to update the web site. please look at the svn messages to know what we do on diamondspin 2007 may 15th: The openGL version is almost working ... to help you wait I added an inertia manager to throw document accross the table !
2007 april 25th: DiamondSpin 2.3 is at sourcesup
2006 december 2nd: DiamondSpin 2.3a with openGL is coming ...
2006 november 16th: DiamondSpin we used in the Digitable project won the J.P. Noblanc award
2006 september 27th: DiamondSpin 2.2 with Peeling for Piling is online
2006 june 5th: DSTour 6 is online
2006 june 4th: RnT re-implemented in the future DSTour6
2006 june 3th: new engines ... emerald and diamond ones !
2006 may 23th: we released DiamondSPin v2.1 today
2006 may 1rst: Fred is making java web-start for every dstours
2006 april 28th: Guillaume is working har on peeling/folding
2006 april 27th: Fred is back from CHI. I met many of the DS people there. We decided to ask email to dl the lib
2006 april 21th: new domain name diamondspin.org (redirected to diamondspin.free.fr)
2006 april 19th: DSTour 1 is java webstartable
2006 april 18th: DSTour 5 is online. Thank you Guillaume
2006 april 17th: More DSTour screenshots
2006 april 14th: New icons for dstour
2006 april 12th: DSContainer has been renamed DSTabletopPane
2006 april 10th: New DSTour5 started about virtual keyboards
2006 april 9th: New DSTour4 started about menus
2006 april 7th: Global translation added to add panning to the views
2006 april 7th: This web page is online with 3 DSTours


For all these reasons we believe the existing toolkits are not suitable to develop tabletop application so we work hard on making DiamondSpin. In this web page you will find information on:
We've sent an open letter to OS manufacturers to highlight some OS-level issues effecting the design of tabletop applications.


  • History
Screenshots:

www.merl.com/projects/PDH

PDH stands for Personal Digital Historian and was a stand alone application running family pictures on the table. 2001


www.merl.com/projects/diamondspin

DiamondSpin v1.0 was developped at MERL by Fred Vernier to generalize what we did with PDH. 2002-2003


No web site

DiamondSpin Lite was developped at MERL by Mark Hancock. 2004


No web site

DiamondSpin v1.5 was developped in France for MERL by Frédéric Vernier and focussed on Swing/Java beans integration. 2005


www.diamondspin.org

DiamondSpin v2.0 is developped as an open-source project by Frédéric Vernier and others. It now use openGL as graphic engine and TUIO as input events

Videos (to come...)


  • Download
  • Read the legal instructions and accept them before going further
  • Try one or all of the following free examples using DiamondSpin
  • Try to click the icon below or download the project and
    • launch run.bat OR
    • double-click the file dstourX.jar OR
    • type the command "ant run" in console OR
    • type the command "java -jar dstourX.jar" in console
  • Download the Toolkit after identifying yourself: Here
  • Read the DiamondSpin API generated by javadoc


DSTour 1 shows a simple frame in a spinnable/rotatable environement. ONLY THIS EXAMPLE USES A PURE JAVA GRAPHIC ENGINE (NO OPENGL) [source], [screenshot], [project 1.2MB] [JNLP Jogl]


DSTour 2 shows the different behaviors of the view where framed document lay on [source], [screenshot], [project 1.4MB]


DSTour 3 shows frame decorations, utilities and parameters [source], [screenshot], [project 2.5MB] [video 3.7MB]


DSTour 4 shows (push-up) menubars, (pie) popup menus and the magnetization feature (all documents attracted toward a single direction) [screenshot], [project 5.12MB]


DSTour 5 shows virtual keyboards, text input, etc. [video 2.5MB], [screenshot], [project 2.2MB], [video 4.7MB]


DSTour 6 about strokes, drawing, gesture recognition and engines. [video to come], [screenshot], [project 2.2MB],


DSTour 7 about content to put in all the frames ... [screenshot], [project 2.2MB],


DSTour 8 about grouping, piling and other stuff like that [screenshot], [video 1.4MB], [project 2.2MB],


DSTour 9 soon ... about shadows [video 11MB] [screenshot]


DSTour 10 soon ... about multiple views, view splitter, etc.


  • Features
  • DSFrame can be rotated, zoomed, resized and moved ! ... and even peeled (folded)
  • DSFrame have special decorations and a customizable title bar (on top, at bottom or both !)
  • Virtual keyboard may appear attached to a frame or alone on top of a view
  • Real keyboard events are forwarded to the last touched text area
  • Document alignement/orientation can easily be customized to face anything to may think to. We use an independant engine (with many examples provided)
  • DSViews handle a global rotation, zoom and translation of the content and a global translation of the background too. Many dsview can be created and switched later on.
  • Everything can be annotated with colored ink (windows, back of the window, the background of the views, etc.)


  • To Do
  • pulldown menus (jcombobox are working )
  • OpenGL rendering using JoGL and accelerated GLJPanel provided by JSR231
  • More default content (Movie, svg, rich HTML, rtf, pdf, text editor, etc.)
  • Look&Feel integration
  • Piling (how to make pile of document and manage the pile on the table)
  • Voice recognition integration
  • Gesture recognition engine
  • Better virtual Keyboard (with localization, animated show on, sounds, etc.)


  • Other tabletop projects


  • Software Architecture
software architecture diagramm of DiamondSpin



  • → TouchEvent (finger's position) trajectory
  • Interfaces in italic, Classes in bold
  • Inheritance when a class inherit methods and fields from an other class
  • Listener receiving events related from a source they registered first
  • Free hand drawing on the table using finger as a brush
  • Graphical element visible on the table
  • Explaining concretely what could be a DSElement in our architecture
  • → layer superposition in front of the eyes
  • DiamondTouch table in this picture but could be any concurent event generator
  • View are repository of graphical elements handling popup menu, selection of element, etc.
  • Engine transforming cartesian coordinates to polar coordinates and reciprocually
  • Popup menu appearing when double tap is performed on the table
  • Corner of a DSFrame, Used to resize, zoom in/out, rotate or peel the frame


  • Copyright 2001-2010. All Rights Reserved

Permission to use, copy, modify and distribute this software and its documentation for educational, research and non-profit purposes, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and the following three paragraphs appear in all copies.

To request Permission to incorporate this software into commercial products contact one of the authors of the project

IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHORS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

THE AUTHORS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HERE UNDER IS ON AN "AS IS" BASIS, AND THE AUTHORS HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.



  • Contributors
Merrie Ringel-Morris: merriestanford.edu
Ph.D. candidate at Stanford University, San Francisco. Now at Microsoft Reasearc
[web page]
Kate Everitt: everittcs.washington.edu
PhD candidate at the University of Washington, Seattle
[web page]
Gaëtan Rey: gaetan.reyucd.ie
Postdoctoral Associate at LIMSI Labs, Now Associate professor at Univ.of Nice
[web page]
Romain Guy: romain.guymac.com
Swing Team Member at Sun Microsystems, San Francisco. Now at Google
[blog]
Jeana Frost: frostmedia.mit.edu
Postdoctoral Associate at boston medical [web page]
Stacey Scott: sdscottmit.edu
Postdoctoral Associate at MIT HAL Lab, Boston. Now at University of Waterloo, Canada
[web page]
Rami Ajaj: rami.ajajlimsi.fr
Master student at LIMSI Lab, Paris. Now at NTT-DoCoMo Munich
Edward Tse: edwardhtsegmail.com
PhD candidate at the University of Calgary. Now at SMART Technologies
[web page]
Mark Hancock: mshcs.ucalgary.ca
PhD candidate at the University of Calgary. Now assistant professor at the University of Waterloo, Canada
[web page]

want to join us ? please contact frederic.vernierlimsi.fr