# Zoomable User Interface

Zoomable User Interface (kurz ZUI) ist ein Begriff aus der Informatik und beschreibt eine spezielle Art von grafischer Benutzeroberfläche (GUI), bei der Benutzer den Maßstab des angezeigten Bereichs ändern können, um mehr oder weniger Details zu sehen, und durch verschiedene Dokumente zu wechseln. Ein ZUI kann unterschiedliche Skalierungsgrade annehmen, die vom Benutzer gesteuert werden. Ein ZUI erfordert eine zusätzliche Eingabe vom Benutzer, um Zoom und Pan zu kontrollieren.

## Definition

Benutzeroberflächen, die einen der folgenden Punkte erfüllen, gelten als ZUI.
* Bedienelemente liegen auf einer Arbeitsfläche, die gezoomt und horizontal sowie vertikal verschoben werden kann (englisch Pan).
* Mindestens ein Element enthält skalierbare Bestandteile.

## Geschichte

Die Geschichte der ZUIs knüpft an die Geschichte des GUIs an. Ivan Sutherland entwickelte im Jahr 1963 am Massachusetts Institute of Technology (MIT) Sketchpad, das heute als erstes GUI gilt und über eine Zoom-Funktion verfügte. Das sog. Fisheye Zooming wurde 1981 von George W. Furnas definiert und wird häufig in ZUIs eingesetzt. 1991 entwickelten David Fox und Ken Perlin Pad am Courant Institute of Mathematical Sciences an der New York University. Pad gilt als erstes ZUI. Mit Pad sowie der Weiterentwicklung Pad++ können multimediale Daten auf einer zweidimensionalen Ebene dargestellt werden. Pad nutzte bereits die Semantische Skalierung (siehe unten). Am Human-Computer Interaction Lab (HCIL) wurde Pad durch das Projekt Jazz fortgesetzt und nach Java portiert. Die jüngste ZUI-Bibliothek des HCIL ist Piccolo, die die Programmierung von ZUIs im Vergleich zu Jazz wesentlich vereinfachte. Piccolo ist für Java und C# als Open-Source-Bibliothek verfügbar.

## ZUI-Elemente

ZUIs verfügen in der Regel über primitive Elemente, die zur Zusammenstellung von Bedienelementen genutzt werden können. Je nach Programmierbibliothek können diese Elemente wie in einer GUI-Bibliothek mit Eventhandlern für Maus- und Tastatureingaben versehen sowie animiert und transformiert werden.
* Pfade: Diese können einfache Kanten, gefüllte Rechtecke, Polygone bis hin zu Bezierkurven darstellen.
* Text
* Bitmap
In einem ZUI können je nach Programmierbibliothek Elemente von GUIs verwendet werden. Das Piccolo Toolkit bietet beispielsweise Wrapper in der Programmiersprache C# für Bedienelemente der Grafikschnittstelle GDI.
* Schaltfläche
* Checkbox
* Radiobutton
Siehe auch: GUI-Elemente

## Semantische Skalierung

Die Semantische Skalierung (englisch Semantic Zooming) ist eine Technik der ZUIs, Objekte abhängig zum Skalierungsgrad in unterschiedlichen Detailstufen darzustellen. Dies verschafft einen guten Gesamtüberblick über die Informationen, bei näherer Betrachtung ist ein Objekt jedoch sehr detailliert, d. h. Informationen werden je nach Skalierung ein- oder ausgeblendet. Programmierer nutzen diese Möglichkeit um die Performance ihrer Programme zu verbessern sowie eine bessere Übersicht zu schaffen.

## Liste von ZUI-Bibliotheken

Viele ZUI-Programmierbibliotheken setzen verstärkt auf Graphen, durch die eine strukturierte Ansicht in Flowcharts ermöglicht wird.
* Piccolo Toolkit – A Structured 2D Graphics Framework – Programmierbibliothek für Java und C#. Piccolo ist unter der freien BSD-Lizenz verfügbar.
* Ziteboard ist ein geräteunabhängiges, webbasiertes Whiteboard mit Zoomfunktion und der Möglichkeit zur Kollaboration in Echtzeit, geschrieben in purem html5 und javascript.
* Jazz Toolkit des Human Computer Interaction Labs der University of Maryland. Jazz ist ein Vorgänger des Piccolo Toolkits implementiert in Java. Die Weiterentwicklung wurde eingestellt, die Quellen sind jedoch weiterhin zugänglich.
* ZVTM – Zoomable Visual Transformation Machine
* Zomit – Java ZUI-Library