vrijdag 12 februari 2010

DiamondSpin

paper: DiamondSpin: An Extensible Toolkit for Around-the-Table Interaction
youtube video
Wanneer meerdere personen rond een tafel moeten samenwerken aan eenzelfde project of document, in dit geval het maken van een muziekstuk, moet de grafische interface deze face-to-face samenwerking ondersteunen. Het probleem hierbij is dat noch processing noch Java AWT of Swing hier mogelijkheden voor bieden. Met de DiamondSpin-toolkit probeert men die mogelijkheden binnen Java uit te breiden naar een tabletopomgeving waar meerdere personen met verschillende oriëntaties ten opzichte van de tafel samenkomen. Het wordt dus mogelijk om rechthoekige, octagonale of circulaire tabletop layouts te maken, waarbij de plaatsing van de documenten niet langer gericht zijn naar 1 bepaalde persoon. Om de voordelen van around-the-table interactie ten volle te benutten is het dus absoluut noodzakelijk om een toolkit zoals DiamondSpin te gebruiken.
De grote fundamentele uitdaging die de ontwikkelaars van DiamondSpin aangingen is het afstappen van de single-user rechthoekige interface en trachten een multi-user tabletop interface te maken die gelijktijdige interactie mogelijk maakt. Hiervoor wordt een nieuwe architectuur bedacht die leidde tot de DiamondSpin toolkit.

DiamondSpin architectuur

DiamondSpin bestaat grotendeels uit 2 componenten:
1) een engine die verantwoordelijk is voor de omzetting tussen poolcoördinaten en Carthesiaanse coördinaten. TouchEvents of MouseEvents komen typisch binnen als grafische 2D-coördinaten en worden omgezet naar poolcoördinaten omdat DiamondSpin intern met deze representatie werkt. Men kan dan gemakkelijk inzien dat er 3 vrijheidsgraden zijn voor een element van de GUI: de afstand tot de oorsprong, de hoek ten opzichte van de oorsprong en de oriëntatie ten opzichte van het eigen middelpunt (of een punt waar dat element geselecteerd wordt).
2) een engine die instaat voor multi-layer multi-thread display management. De verschillende elementen van de grafische interface kunnen deel uitmaken van verschillende layers. Layer 0 bevat bv. de elementen die ongevoelig zijn voor rotatie van de tabletop. Layer 1 bevat typisch elementen die passief zijn, maar actief kunnen gemaakt worden door ze bv. te selecteren (Layer 2). Ook zorgt deze engine voor het management van meerdere threads. Er is een thread die verantwoordelijk is voor input handling (aanpassing van eigenschappen van interface-elementen) en een andere voor de repaint van de elementen.

DiamondSpin API
In deze sectie legt men de belangrijkste klassen kort uit en zegt men hoe een kleine applicatie bestaande uit een DSFrame kan worden gemaakt. DSContainer (in de nieuwste versie heet deze klasse DSTabletopPane) en DSView zijn hierbij de belangrijkste klassen. DSContainer biedt methodes aan voor input handling, repainting/refreshing, documentoriëntatie, ... DSView kan gebruikt worden om meerdere views te creëren op dezelfde tabletop: een workspace per gebruiker of een gedeelde workspace voor groepen van gebruikers. DSFrame, DSPanelen DSWindow zijn klassen die de bestaande klassen uit Java Swing uitbreiden en geschikt maken voor een tabletopomgeving.

Hierna vermeldt men nog enkele voorbeelden van applicaties die steunen op DiamondSpin.

Geen opmerkingen:

Een reactie posten