470 likes | 685 Views
quill: A UI Design Case Study. A. Chris Long Postdoctoral Research Fellow HCI Institute. Administrivia. Turn in Homework #1 Homework #2 assignment on course website. Outline. Gestures quill Design quill Architecture & Implementation Object-Oriented Design
E N D
quill: A UI Design Case Study A. Chris Long Postdoctoral Research Fellow HCI Institute
Administrivia • Turn in Homework #1 • Homework #2 assignment on course website
Outline • Gestures • quill Design • quill Architecture & Implementation • Object-Oriented Design • Long-running Tasks and Interfaces • Recognition-based UIs • How Gesture Recognition Works • More quill Implementation
Gestures • Mark that invokes a command
Gestures • Mark that invokes a command delete me
Gestures • Mark that invokes a command • Benefits • Fast • Save screen space • Avoid “aerobic interface” • Specify operation and operand(s) simultaneously delete me
Problems With Gestures • For users • Computer often misrecognizes gestures • Difficult to learn and remember gestures • For designers • Gestures are hard to design
Who: Designer of pen-based UI When: During design phase What: Designing gestures Why: To design better gestures quill’s Place in the World Design Test Prototype
User Interface Application “back end” OS Pen Input Display Another View of quill
Designing quill • Design low-fi prototype • Pilot test low-fi • Redesign • Implement Java version
Current Version • Tree view • Expanded view • Suggestion for improvement
Gestures, Packages, and Groups, Oh My! Gesturepackage MyApplication Gesturegroup Edit View … Gesturecategory copy … cut Gesture …
JDK Core Gesture Objects Gesture Gesture Category … Recognizer Gesture Analyses Widgets quill Architecture
Java/Swing 93 classes, 26,000 lines Clipboard Desktop windows Tree display Main window Notice management Implementation Overview
Gesture Objects Gesture GestureCategory GestureGroup GesturePackage Gesture Display Widgets GestureDisplay GestureInteractor GestureCategoryDisplay GestureGroupDisplay GesturePackageDisplay GestureCategoryThumbnailDisplay Object Oriented Design
OO Design GestureObject GestureContainer DefaultGestureObject AbstractGestureContainer GestureCategory GestureGroup GesturePackage
Analyzing Gestures • Problem: Analysis may take a long time • Solutions?
Analyzing Gestures • Problem: Analysis may take a long time • Strategies for analyzing gestures • Run analysis in foreground, disable all actions • Analyze in background • Disable all conflicting actions • Allow anything, cancel analyses • Allow anything
Multithreading • Benefits • ? • Drawbacks • ?
Multithreading • Benefits • Computation in background • Can do very complex tasks • User can perform any action, any time • Drawbacks • Must synchronize data across threads • Deadlock • Race conditions
Multiple Threads in Java • Thread class • Start separate thread that runs any method • synchronized keyword • Prevents a method from being called or object from being accessed by more than one thread at once • SwingWorker class • Easy to run background thread that produces a result
Recognition-Based UIs • Examples • Pen gesture • Handwriting • Speech • Advantages • ? • Disadvantages • ?
Recognition-Based UIs • Advantages • Natural input • Informal • Multiple interpretations • Disadvantages • No clear separation of data and commands • Ambiguous commands • Individual differences • Multiple interpretations
Dealing with Recognition • Confirm dangerous operations • Multiple modes may help disambiguate • Speech + pen, for example • Provide undo/redo
Training Measure geometric features of gestures Compute average feature values for each type of gesture Compute how important each feature is Recognition (a.k.a. Classification) Measure geometric features of unknown gesture Compare with features of known gestures Pick closest known gesture How Does Recognition Work?
Rubine’s Feature Set • Initial angle • Length of bounding box diagonal • Angle of bounding box diagonal • Distance between first and last points • Angle between first and last points • Length • Total angle traversed
Rubine’s Feature Set (cont.) • Sum of absolute value of angle at each point • Sum of squared angle at each point (sharpness) • Square of maximum speed • Duration
Weakness of Feature-based Recognition • Feature set has to be right
Feature-based Training • Mean feature vector • Per-class covariance matrix
Training (cont.) • Average covariance matrix • Weights estimation
Feature-based Classification • For all gesture classes c, compute • Return class with max vc
quill Implementation Issues (cont’d) • Suggestions (cont’d) • When do they disappear? • User says to ignore • No longer apply • When are two notices the same? • At time A, gestures X and Y are too similar • At time B, something happens and they aren’t similar • At time C, they are similar again • Display notice again?
Implementation Issues (cont’d) • Annotations • Special purpose vs. generic • How to compose? • Gesture display • Desktop windows • Tiled • Standard MDI • Display factory
Implementation issues (cont’d) • Generic properties void GestureObject.setProperty(String name, Object value) Object GestureObject.getProperty(String name) • What happens to properties like “isMisrecognized” when copy & paste? • Persistent vs. transient
Implementation issues (cont’d) • Generic properties void GestureObject.setProperty(String name, Object value) Object GestureObject.getProperty(String name) • What happens to properties like “isMisrecognized” when copy & paste? • Persistent vs. transient
Implementation Issues (cont’d) • Menus: enable/disable items, and dispatching commands • Context-dependent menu items • Context-dependent gesture drawing • Solution: “Chain of command” pattern that follows selection
Questions? • Other topics • Grad school • Berkeley (city or university) • Speech UIs • More on pen-based UIs
The End Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides http://www.cs.cmu.edu/~chrisl/ http://guir.berkeley.edu/projects/quill/
Criticisms • Recognition is due to poor recognizers, which will eventually be perfect • Not for a long time, if ever • Learning and memory predictions still useful • Recognition will never be good enough • Already good enough for many users • Is improving over time • Typing is faster and more accurate than writing • Pens won’t replace keyboards, but are better in many situations
Criticisms (cont.) • Gestures will always be too hard to learn and remember, and will never be useful enough • Gestures very often used on paper in many domains • Design tool doesn’t guarantee good gestures • Will provide useful advice • Will shorten design cycle • There are only a small number of common gestures • Application/domain-specific gestures • Personal shorthand
Criticisms (cont.) • Marking menus are better than free-form gestures • Can’t specify additional information with marking-menus • Shapes are arbitrary • All straight lines and 45/90º angles
Criticisms (cont.) • What’s wrong with traditional GUI interaction techniques? • Pen mouse • Pen • Finer control • Has other dimensions (e.g., pressure, tilt) • Mouse • More buttons (sometimes)
Pen vs. Mouse • Kato, et al • Pen significantly faster & more accurate than mouse for precise dragging • Pen significantly faster for pointing • Pen has directional dependencies; mouse doesn’t • Mackenzie, et al • Pen slightly faster for pointing • Mouse slightly faster for dragging