Brad Myers 05-440/05-640: Interaction Techniques Spring, 2016 Lecture 24: Implementation Techniques and Tools for Interaction Techniques 1 © 2016 - Brad.

Slides:



Advertisements
Similar presentations
implementation support
Advertisements

Chapter 11 Designing the User Interface
Chapter 16 Graphical User Interfaces John Keyser’s Modifications of Slides by Bjarne Stroustrup
CS0004: Introduction to Programming Visual Studio 2010 and Controls.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 11 Designing for Usability I.
Lecture 12: Interactive Tools: Prototypers (HyperCard, Director, Visual Basic), Interface Builders, Sketching Tools Brad Myers Advanced User Interface.
1 Lecture 7: Implementing a Prototype: Overview of Using PowerPoint, Flash Catalyst, html, Microsoft Sketchflow/Expression Blend, etc. Brad Myers
Past, Present and Future of User Interface Software Tools
Graphical User Interface (GUI) Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
Graphical User Interface (GUI) Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
A Guide to Oracle9i1 Creating an Integrated Database Application Chapter 8.
The Task-Centered Design Process figure out who's going to use the system to do what choose representative tasks for task-centered design plagiarize rough.
1 Lecture 13: Demonstrational Tools Brad Myers Advanced User Interface Software.
Rapid Prototyping Marti Hearst (UCB SIMS) SIMS 213, UI Design & Development February 25, 1999.
Stanford hci group / cs376 research topics in human-computer interaction I/O Toolkits Scott Klemmer 29 November 2005.
1 An Introduction to Visual Basic Objectives Explain the history of programming languages Define the terminology used in object-oriented programming.
Brad Myers A/05-499A: Interaction Techniques Spring, 2014 Lecture 24: Implementation Techniques and Tools for Interaction Techniques 1 © Brad.
Objectives Machine language vs.. High-level language Procedure-oriented, object-oriented, and event- driven languages Background of Visual Basic VB Integrated.
Chapter 13: Designing the User Interface
1 Lecture 3: Overview of UI Software and Tools Brad Myers Advanced User Interface Software.
Lecture 8: Overview of UI Software and Tools Brad Myers Advanced User Interface Software 1© Brad Myers.
Lesson 4 Computer Software
Software Tools.  It accomplishes an important task  (for better and for worse) You don’t have to make it yourself, and it abstracts a set of knowledge.
1 Lecture 7: Implementing a Prototype: Overview of Using PowerPoint, Balsamiq, InVision, html, etc. Brad Myers / / : Introduction to.
Microsoft Visual Basic 2005: Reloaded Second Edition
INTRODUCTION TO FRONTPAGE. TOPICS TO BE DISCUSSED……….  Introduction Introduction  Features Features  Starting Front Page Starting Front Page  Components.
14 Chapter 11: Designing the User Interface. 14 Systems Analysis and Design in a Changing World, 3rd Edition 2 Identifying and Classifying Inputs and.
An Introduction to Visual Basic
Department of Mechanical Engineering, LSUSession VII MATLAB Tutorials Session VIII Graphical User Interface using MATLAB Rajeev Madazhy
Introduction to Visual Basic. Quick Links Windows Application Programming Event-Driven Application Becoming familiar with VB Control Objects Saving and.
IE 411/511: Visual Programming for Industrial Applications
11.10 Human Computer Interface www. ICT-Teacher.com.
Web Programming: Client/Server Applications Server sends the web pages to the client. –built into Visual Studio for development purposes Client displays.
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
2. Introduction to the Visual Studio.NET IDE. Chapter Outline Overview of the Visual Studio.NET IDE Overview of the Visual Studio.NET IDE Menu Bar and.
Prof. James A. Landay University of Washington Autumn 2008 Rapid Prototyping November 10, 2008.
Gary MarsdenSlide 1University of Cape Town Human-Computer Interaction - 3 Programmer Support Gary Marsden ( ) July 2002.
CHAPTER TEN AUTHORING.
Visual C++ Programming: Concepts and Projects
1 Implementation support chapter 8 programming tools –levels of services for programmers windowing systems –core support for separate and simultaneous.
Object Oriented Software Development 9. Creating Graphical User Interfaces.
Lead Black Slide. © 2001 Business & Information Systems 2/e2 Chapter 5 Information System Software.
CHAPTER TWO INTRODUCTION TO VISUAL BASIC © Prepared By: Razif Razali 1.
INFO 355Week #71 Systems Analysis II User and system interface design INFO 355 Glenn Booker.
CSCE 121: Introduction to Program Design and Concepts, Honors Dr. J. Michael Moore Spring 2015 Set 15: GUIs 1.
Lecture 10: Toolkits: Intrinsics, Callbacks, Resources, Widget hierarchies, Geometry management Brad Myers Advanced User Interface Software 1© 2013.
1 Lecture 2: Overview of UI Software and Tools Brad Myers Advanced User Interface Software.
Lecture 15: Demonstrational Tools Brad Myers Advanced User Interface Software 1.
Introduction to Interactive Media Interactive Media Tools: Authoring Applications.
Stanford hci group / cs376 u Jeffrey Heer · 26 May 2009 User Interface Toolkits.
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
1 Lecture 5: Interactive Tools: Prototypers (HyperCard, Director, Visual Basic), Interface Builders Brad Myers Advanced User Interface Software.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
COMPUTER III. Fundamental Concepts of Programming Control Structures Sequence Selection Iteration Flowchart Construction Introduction to Visual Basic.
Programming Logic and Design Fourth Edition, Comprehensive Chapter 14 Event-Driven Programming with Graphical User Interfaces.
IE 411/511: Visual Programming for Industrial Applications Lecture Notes #2 Introduction to the Visual Basic Express 2010 Integrated Development Environment.
Support for the Development of Interactive Systems
Lecture 8: Overview of UI Software and Tools
Java Look-and-Feel Design Guidelines
Prototyping.
User Interface Software Look under the hood
Class Announcements 1 week left until project presentations!
Topic 8: (Last two papers)
Lecture 7: Implementing a Prototype: Overview of Using PowerPoint, Balsamiq, InVision, html, etc. Brad Myers / : Introduction to Human Computer.
Brad Myers Advanced User Interface Software Spring, 2017
GRAPHICAL USER INTERFACE
I/O Toolkits Scott Klemmer · 16 November 2006.
Implementation support
Brad Myers : Interaction Techniques Spring, 2019
Implementation support
Presentation transcript:

Brad Myers /05-640: Interaction Techniques Spring, 2016 Lecture 24: Implementation Techniques and Tools for Interaction Techniques 1 © Brad Myers

User Interface Software How to implement the user interface portion Including how to implement widgets & other interaction techniques Various ways have been proposed over time Different layers HCII courses about UI software: PUI SSUI : “Advanced UI Software” Next Spring! 2 © Brad Myers Application Higher Level Tools Toolkit Windowing System Operating System

Examples: Microsoft Windows, Macintosh OS, iOS, Android, Linux In the “old days”, custom “operating systems” for Smalltalk, Bravo editor, Xerox Star, etc. Handles low-level “device drivers” that take hardware inputs from keyboard, mouse, microphone, USB, etc. Also screen drivers to allow output to screen, sounds, etc. Also other services, like file system, networking, etc. Libraries in Java, JavaScript, Adobe Flash ActionScript, etc. that provide “wrappers” to provide this same functionality 3 © Brad Myers

Windowing System Also called “Window Manager” Separate the input and output into different areas Provide graphics libraries and input handling per window Also provides user interface features for users to control the windows Browsers provide windows/tabs for the web 4 © Brad Myers

Toolkits A library of interaction techniques that can be called by application programs Toolkits used only by programmers, only procedural interface Multiple layers in the toolkit itself Including ways to implement the widgets themselves Examples: Macintosh Toolbox Windows Toolkit xtk for X (Motif and OpenLook) Java Swing and awt and swt html for output, with input controls for input JavaScript jQuery & many others Research: Garnet & Amulet, etc. 5 © Brad Myers

6 Toolkits Success Help maintain consistency among UIs Key insight of Macintosh toolbox (1984) Not just that the Macintosh UI guidelines required consistent look and feel è Path of least resistance translates into getting programmers to do the right thing Successful partially because address common, low-level features for all UIs è Address the useful & important aspects of UIs © Brad Myers

7 Graphical Interactive Tools Use a mouse to drag-and-drop parts of the user interface Create or use widgets Examples: Menulay (1983), Trillium (1986), Jean-Marie Hullot from INRIA to NeXT Now: Interface Builders, Visual Basic’s layout editor, resource editors, prototyping tools Advantages: Graphical parts done in an appropriate, graphical way è Address the useful & important aspects of UIs Accessible to non-programmers è Low threshold © Brad Myers

Prototyping Tools Just show what looks like Storyboard of screens “Click-through prototypes” Some support for behavior: typically changing screens Goal: see some of interface very quickly (hours) Often no possibility of migrating to real application May not use "real" widgets "Low Fidelity" Techniques 8 © Brad Myers

Prototyping tools Long history Dan Bricklin’s (inventor of VisiCalc) “Demo” for DOS screens (1985) HyperCard (1987) Modern examples: moqups.com Balsamiq Axure InVision … © Brad Myers 9

Interface Builders Also called Interface Development Tools (IDTs) or GUI Builders or “resource editors” Use widgets (not create them) Lay out widgets to make dialog boxes, menus. Have a palette or menu of kinds of widgets Select widget, place with mouse in a window Set some properties Design menus, palettes, dialog boxes, controls Put in “graphics” pane for main application window Easy to use, but limited Connect call-backs with each widget 10 © Brad Myers

Interface Builders, cont. Layout mechanisms Usually a complication Java’s Layout Managers Various mechanisms in html “Resources” Store information in special files rather than in source code Positions, colors, text labels, etc. Allow for easier modification for users, internationalization, etc. IBs Usually don't support: Error checking of values, e.g. for text input fields Graying of widgets depending on values and other widgets Default values of widgets Dynamic changing of widgets (e.g., add more items) Dynamic changing layers (groups) of widgets (visibility) depending on values and other widgets Any dynamically created graphical objects. 11 © Brad Myers

Early Research IB Menulay (1983) W. Buxton, M.R. Lamb, D. Sherman and K.C. Smith. “Towards a Comprehensive User Interface Management System,” Computer Graphics, Proc. SIGGRAPH'83. Jul, pp Vector screens, widgets, sounds, text, output C code and tables All actions (including transitions) required C programming NeXT Interface Builder (NeXT) popularized the name By Jean-Marie Hullot who had an IB in Lisp at INRIA in France Visual Basic Resource editors in programming environments © Brad Myers 12

VB Screen 13 © Brad Myers

Xcode screen © Brad Myers 14

Research: Garnet / Amulet My research projects to investigate better ways to build user interfaces Create and use widgets Garnet ( ) in Lisp Generating an Amalgam of Real-time, Novel Editors and Toolkits Amulet ( ) in C++ Automatic Manufacture of Usable and Learnable Editors and Toolkits Same architecture Low and high-level tools 15 © Brad Myers

Architecture Low-levels to provide machine- independence Build widgets with the low-level features High-level tools that use the widgets “Interactors” covered in lecture 10 (Models) Garnet video (9:30, 1993) (local copy) Garnet videolocal copy © Brad Myers 16

17 Standard Behavior of Interactors © Brad Myers

Research: Peridot ( ) Myers B. "Creating User Interfaces Using Programming-by-Example, Visual Programming, and Constraints," ACM Transactions on Programming Languages and Systems. vol. 12, no. 2, April, pp (Peridot) Myers B., Creating User Interfaces by Demonstration, Academic Press, San Diego, Myers B., "Creating Interaction Techniques by Demonstration," IEEE Computer Graphics and Applications, Vol. 7, No. 9, IEEE, September 1987, pp First demonstrational tool, and it used by-example techniques to allow the creation of new widgets. From the drawings, it infers: Graphical constraints among the objects, such as that the boxes should be the same size as the text. control structures such as iteration over all the items in a menu how the mouse affects the graphics, such as that the check mark should follow the mouse. feedback: question and answer video (8 min) YouTube or CMU copyYouTube CMU copy 18 © Brad Myers

Flash Catalyst Adobe Catalyst (formerly Thermo) Part of CS5.5, discontinued in CS 6.0 Associate behaviors with the objects Like my Garnet Lapidary 19 © Brad Myers

Research: ConstraintJS and InterState PhD thesis of Stephen Oney Graduated May, Some of Stephen’s slides 20 © Brad Myers

21  graphical-user interfaces (GUIs) defined by:  look (appearance, relatively easy)  feel (behavior, relatively difficult)

22 interactive behaviors  normally programmed using event- callback paradigm  specify what actions to take in reaction to events with callbacks  leads to error-prone code [Letondal 2010, Myers 1991]

23 constraint a relationship that is declared once and automatically maintained

24 constraint a relationship that is declared once and automatically maintained the toolbar is displayed above the workspace

25 constraint a relationship that is declared once and automatically maintained the toolbar is displayed above the workspace toolbar.x <- workspace.x toolbar.y <- workspace.y - toolbar.height

26 constraint a relationship that is declared once and automatically maintained can produce clearer code by reducing the burden of maintaining relationships [Meyerovich, 2009; Myers, 1991]

27 constraints  libraries for imperative (“traditional”) languages  e.g. FlapJax, Angular  used for data bindings and specifying layout [Meyerovich, 2009, angularjs.org]

28 state the status of an interface at a given moment, often controls appearance & behavior [Letondal 2010, Samek 2003]

29 state machines track an interface’s state & when it transitions between states

30 state machines track an interface’s state & when it transitions between states disablednot_underlinedunderlined click no selection click transitions

31  “when the toolbar is docked, it is displayed above the workspace”  “when the toolbar is being dragged, it follows the mouse” stateconstraint

32 ConstraintJS  JavaScript library for developers  integrates constraints & states on Web  integrates with HTML & CSS syntaxes  efficient implementation [Oney, UIST 2012,

{x:5, y: 20}, { }, {x:30, y:30}, {x:60, y:40}, {x: 65, y: 45}, {x: 70, y: 45}, {x: 63, y: 80}, {x: 68, y: 75}, {x: 80, y: 80} x: 20, y:

{x:5, y: 20}, { }, {x:30, y:30}, {x:60, y:40}, {x: 65, y: 45}, {x: 70, y: 45}, {x: 63, y: 80}, {x: 68, y: 75}, {x: 80, y: 80} x: 90, y:

{x:5, y: 20}, { }, {x:30, y:30}, {x:60, y:40}, {x: 65, y: 45}, {x: 70, y: 45}, {x: 63, y: 80}, {x: 68, y: 75}, {x: 80, y: 80} x: 90, y:

{x:5, y: 20}, { }, {x:30, y:30}, {x:60, y:40}, {x: 65, y: 45}, {x: 70, y: 45}, {x: 63, y: 80}, {x: 68, y: 75}, {x: 80, y: 80} x: 90, y:

{x:5, y: 20}, { }, {x:30, y:30}, {x:60, y:40}, {x: 65, y: 45}, {x: 70, y: 45}, {x: 63, y: 80}, {x: 68, y: 75}, {x: 80, y: 80} x: 90, y:

{x:5, y: 20}, { }, {x:30, y:30}, {x:60, y:40}, {x: 65, y: 45}, {x: 70, y: 45}, {x: 63, y: 80}, {x: 68, y: 75}, {x: 80, y: 80} x: 90, y:

39 view_x = cjs(fsm, {idle: model_x,dragging: cjs.mouse.x }); model_x = cjs(fsm, { init: datum.x, dragging: view_x }); fsm: idle dragging mousedown mouseup

var isDragLocked = false, mm_listener = function(mm_event) { draggable.attr({ x: mm_ev.x, y: mm_ev.y }); }, mu_listener = function(mu_event) { removeEventListener("mousemove", mm_listener); removeEventListener("mouseup", mu_listener); }; draggable.mousedown(function(md_ev) { draggable.attr({ x: md_ev.x, y: md_ev.y }); addEventListener("mousemove", mm_listener); addEventListener("mouseup", mu_listener); }).dblclick(function(md_event) { if(isDragLocked) { removeEventListener("mousemove", mm_listener); } else { addEventListener ("mousemove", mm_listener); } isDragLocked = !isDragLocked; }); 40

var isDragLocked = false, mm_listener = function(mm_event) { draggable.attr({ x: mm_ev.x, y: mm_ev.y }); }, mu_listener = function(mu_event) { removeEventListener("mousemove", mm_listener); removeEventListener("mouseup", mu_listener); }; draggable.mousedown(function(md_ev) { draggable.attr({ x: md_ev.x, y: md_ev.y }); addEventListener("mousemove", mm_listener); addEventListener("mouseup", mu_listener); }).dblclick(function(md_event) { if(isDragLocked) { removeEventListener("mousemove", mm_listener); } else { addEventListener ("mousemove", mm_listener); } isDragLocked = !isDragLocked; }); 41

42 InterState  for end-user programmers (EUPs)  augments ConstraintJS with:  visual notation  simpler syntax  live editor  primitives for reuse [Oney 2013]

43

44 properties

45 current values

46 state machine

47 constraints

48 (fill is ‘black’ in idle)

49 (fill is ‘red’ in dragging)

InterState video  Video (3:36) Video 50

51 contributions  constraint model integrating state  library for developers (ConstraintJS)  visual notation of constraint model  live editor for visual notation  primitives for inheritance & templating  evaluation of model, primitives & visual notation

New Research: Gneiss PhD work of Kerry Chang PhD defense is tomorrow! Tuesday, 4/12/16 at 2:30pm in GHC 4405 Allow web services to be utilized with a spreadsheet, to do data analysis & create web applications Aimed at “end-user programmers” (EUP) Video (5:00) (local copy) Videolocal copy 52 © Brad Myers