Developing User Interfaces book cover

Developing User Interfaces

In the early days of computing, technicians in white coats controlled refrigerator-sized computers housed in sealed rooms, far from ordinary users. Today, computers are inexpensive commodities, like television sets,and ordinary people control and interact with them. This new paradigm has led to a burgeoning demand for graphics-intensive and highly interactive interfaces.

Developing User Interfaces is targeted at the programmer who will actually implement, rather than design, the user interface. Most user interface books focus on psychology and usability, not programming techniques. This book recognizes the need for programmers to collaborate with usability experts and psychologists, so topics such as the principles of visualization, human perception, and usability evaluation are touched upon. Yet the primary focus remains on those tools and techniques required for programming the complex user interface.

* Focuses on advanced programming topics* event handling* interaction with geometric objects* widget tool kits* input syntax* Useful to programmers using any language—no particular windowing system or tool kit is presumed, examples are drawn from a variety of commercial systems, and code examples are presented in pseudo code* The basic concepts of traditional computer graphics such as drawing and three-dimensional modeling are covered for readers without a computer graphics background.

Paperback, 414 Pages

Published: February 1998

Imprint: Morgan Kaufmann

ISBN: 978-1-55860-418-6

Contents

    • Preface
    • Chapter 1 Introduction
      • 1.1 What This Book Is About
        • 1.1.1 Early Computing
        • 1.1.2 Winds of Change
        • 1.1.3 The Legacy of Lab Coats
        • 1.1.4 A Question of Control
      • 1.2 Setting the Context
        • 1.2.1 Computer Graphics
        • 1.2.2 Human Factors and Usability
        • 1.2.3 Object-Oriented Software
        • 1.2.4 Commercial Tools
      • 1.3 An Overview of the User Interface
        • 1.3.1 The Interactive Cycle
        • 1.3.2 The Interactive Porthole
        • 1.3.3 The Interface Design Process
      • 1.4 Summary
    • Chapter 2 Designing the Functional Model
      • 2.1 Examples of Task-Oriented Functional Design
        • 2.1.1 Line Oriented vs. Full-Screen Text Editors
        • 2.1.2 Word Processors
        • 2.1.3 Why Do Secretaries Have Typewriters?
      • 2.2 Overall Approach
        • 2.2.1 Task Analysis
        • 2.2.2 Evaluation of the Analysis
        • 2.2.3 Functional Design
      • 2.3 Task Analysis
        • 2.3.1 Examples of Task Analysis
        • 2.3.2 VCR Task Analysis
        • 2.3.3 Student Registration Task Analysis
      • 2.4 Evaluation of the Analysis
        • 2.4.1 Understanding the User
        • 2.4.2 Goals
        • 2.4.3 Scenarios
        • 2.4.4 Programmers and User Interface Design
      • 2.5 Functional Design
        • 2.5.1 Assignment of Agency
        • 2.5.2 Object-Oriented Functional Design
      • 2.6 Summary
    • Chapter 3 Basic Computer Graphics
      • 3.1 Models for Images
        • 3.1.1 Stroke Model
        • 3.1.2 Pixel Model
        • 3.1.3 Region Model
      • 3.2 Coordinate Systems
        • 3.2.1 Device Coordinates
        • 3.2.2 Physical Coordinates
        • 3.2.3 Model Coordinates
        • 3.2.4 Interactive Coordinates
      • 3.3 Human Visual Properties
        • 3.3.1 Update Rates
      • 3.4 Graphics Hardware
        • 3.4.1 Frame Buffer Architecture
        • 3.4.2 Cathode Ray Tube
        • 3.4.3 Liquid Crystal Display
        • 3.4.4 Hardcopy Devices
      • 3.5 Abstract Canvas Class
        • 3.5.1 Methods and Properties
      • 3.6 Drawing
        • 3.6.1 Paths
        • 3.6.2 Closed Shapes
      • 3.7 Text
        • 3.7.1 Font Selection
        • 3.7.2 Font Information
        • 3.7.3 Drawing Text
        • 3.7.4 Outline vs. Bitmapped Fonts
        • 3.7.5 Character Selection
        • 3.7.6 Complex Strings
      • 3.8 Clipping
        • 3.8.1 Regions
      • 3.9 Color
        • 3.9.1 Models for Representing Color
        • 3.9.2 Human Color Sensitivity
      • 3.10 Summary
    • Chapter 4 Basics of Event Handling
      • 4.1 Windowing System
        • 4.1.1 Software View of the Windowing System
        • 4.1.2 Window Management
        • 4.1.3 Variations on the Windowing System Model
        • 4.1.4 Windowing Summary
      • 4.2 Window Events
        • 4.2.1 Input Events
        • 4.2.2 Windowing Events
        • 4.2.3 Redrawing
      • 4.3 The Main Event Loop
        • 4.3.1 Event Queues
        • 4.3.2 Filtering Input Events
        • 4.3.3 How to Quit
        • 4.3.4 Object-Oriented Models of the Event Loop
      • 4.4 Event Dispatching and Handling
        • 4.4.1 Dispatching Events
        • 4.4.2 Simple Event Handling
        • 4.4.3 Object-Oriented Event Handling
      • 4.5 Communication between Objects
        • 4.5.1 Simple Callback Model
        • 4.5.2 Parent Notification Model
        • 4.5.3 Object Connections Model
      • 4.6 Summary
    • Chapter 5 Basic Interaction
      • 5.1 Introduction to Basic Interaction
        • 5.1.1 Functional Model
      • 5.2 Model-View-Controller Architecture
        • 5.2.1 The Problem with Multiple Parts
        • 5.2.2 Changing the Display
        • 5.2.3 General Event Flow
      • 5.3 Model Implementation
        • 5.3.1 Circuit Class
        • 5.3.2 CircuitView Class
        • 5.3.3 View Notification in the Circuit Class
        • 5.3.4 Overview of the Circuit Class
      • 5.4 View/Controller Implementation
        • 5.4.1 PartListView Class
        • 5.4.2 LayoutView Class
      • 5.5 Review of Important Concepts
        • 5.5.1 Functional Model
        • 5.5.2 View Notification
        • 5.5.3 View Implementation
      • 5.6 An Alternative Implementation
      • 5.7 Visual C++
        • 5.7.1 CView
        • 5.7.2 CDocument
      • 5.8 Summary
    • Chapter 6 Widget Tool Kits
      • 6.1 Model-View-Controller
        • 6.1.1 Widget Models
        • 6.1.2 Independence of View and Controller
      • 6.2 Abstract Devices
        • 6.2.1 Acquire and Release
        • 6.2.2 Enable and Disable
        • 6.2.3 Active and Inactive
        • 6.2.4 Echo
      • 6.3 Look and Feel
      • 6.4 The Look
        • 6.4.1 What the Look Must Present
        • 6.4.2 Economy of Screen Space
        • 6.4.3 Consistent Look
        • 6.4.4 Architectural Issues in Designing the Look
      • 6.5 The Feel
        • 6.5.1 The Alphabet of Interactive Behaviors
        • 6.5.2 Perceived Safety
      • 6.6 Summary
    • Chapter 7 Interfaces from Widgets
      • 7.1 Data-Driven Widget Implementations
        • 7.1.1 Collections of Widgets
      • 7.2 Specifying Resources
        • 7.2.1 Resource Organizations
        • 7.2.2 Interface Design Tools
      • 7.3 Layout
        • 7.3.1 Fixed-Position Layout
        • 7.3.2 Struts and Springs
        • 7.3.3 Intrinsic Size
        • 7.3.4 Variable Intrinsic Size
      • 7.4 Communication
        • 7.4.1 Parent Notification
      • 7.5 Summary
    • Chapter 8 Input Syntax
      • 8.1 Syntax Description Languages
        • 8.1.1 Fields and Conditions
        • 8.1.2 Special Types of Fields and Conditions
        • 8.1.3 Productions
        • 8.1.4 Input Sequences
      • 8.2 Buttons
        • 8.2.1 Check Buttons
      • 8.3 Scroll Bars
      • 8.4 Menus
      • 8.5 Text Box
      • 8.6 From Specification to Implementation
        • 8.6.1 Fields
        • 8.6.2 Productions
      • 8.7 Summary
    • Chapter 9 Geometry of Shapes
      • 9.1 The Geometry of Interacting with Shapes
        • 9.1.1 Scan Conversion
        • 9.1.2 Distance from a Point to an Object
        • 9.1.3 Bounds of an Object
        • 9.1.4 Nearest Point on an Object
        • 9.1.5 Intersections
        • 9.1.6 Inside/Outside
      • 9.2 Geometric Equations
        • 9.2.1 Implicit Equations
        • 9.2.2 Parametric Equations
      • 9.3 Path-Defined Shapes
        • 9.3.1 Lines
        • 9.3.2 Circles
        • 9.3.3 Arcs
        • 9.3.4 Ellipses and Elliptical Arcs
        • 9.3.5 Curves
        • 9.3.6 Piecewise Path Objects
      • 9.4 Filled Shapes
        • 9.4.1 Rectangles
        • 9.4.2 Circles and Ellipses
        • 9.4.3 Pie Shapes
        • 9.4.4 Boundary-Defined Shapes
      • 9.5 Summary
    • Chapter 10 Geometric Transformations
      • 10.1 The Three Basic Transformations
        • 10.1.1 Translation
        • 10.1.2 Scaling
        • 10.1.3 Rotation
        • 10.1.4 Combinations
      • 10.2 Homogeneous Coordinates
        • 10.2.1 Introduction to the Homogeneous Coordinates Model
        • 10.2.2 Concatenation
        • 10.2.3 Vectors
        • 10.2.4 Inverse Transformations
        • 10.2.5 Transformation about an Arbitrary Point
        • 10.2.6 Generalized Three-Point Transformation
      • 10.3 A Viewing Transformation
        • 10.3.1 Effects of Windowing
        • 10.3.2 Alternative Controls of Viewing
      • 10.4 Hierarchical Models
        • 10.4.1 Standard Scale, Rotate, Translate Sequence
      • 10.5 Transformations and the Canvas
        • 10.5.1 Manipulating the Current Transformation
        • 10.5.2 Modeling with Display Procedures
      • 10.6 Summary
    • Chapter 11 Interacting with Geometry
      • 11.1 Input Coordinates
      • 11.2 Object Control Points
      • 11.3 Creating Objects
        • 11.3.1 Line Paths
        • 11.3.2 Splines
        • 11.3.3 Polygons
      • 11.4 Manipulating Objects
        • 11.4.1 Selection and Dragging
        • 11.4.2 General Control Point Dragging Dialog
      • 11.5 Transforming Objects
        • 11.5.1 Transformable Representations of Shapes
        • 11.5.2 Interactive Specification of the Basic Transformations
        • 11.5.3 Snapping
      • 11.6 Grouping Objects
        • 11.6.1 Selection in a Hierarchical Model
        • 11.6.2 Level of Interaction in a Hierarchy
      • 11.7 Summary
    • Chapter 12 Drawing Architectures
      • 12.1 Basic Drawing Interface
      • 12.2 Interface Architecture
        • 12.2.1 Draw-Area Architecture
        • 12.2.2 Palette Architecture
        • 12.2.3 Summary of Architecture
      • 12.3 Tasks
        • 12.3.1 Redrawing
        • 12.3.2 Creating a New Object
        • 12.3.3 Selecting Objects
        • 12.3.4 Dragging Objects
        • 12.3.5 Setting Attributes
        • 12.3.6 Manipulating Control Points
      • 12.4 Summary
    • Chapter 13 Cut, Copy, and Paste
      • 13.1 Clipboards
        • 13.1.1 Simple Clipboard
      • 13.2 Publish and Subscribe
      • 13.3 Embedded Editing
        • 13.3.1 Embedded Pasting
        • 13.3.2 Edit Aside
        • 13.3.3 Edit in Place
      • 13.4 Summary
    • Chapter 14 Monitoring the Interface: Undo, Groupware, and Macros
      • 14.1 Undo/Redo
        • 14.1.1 Simple History Architecture
        • 14.1.2 Selective Undo
        • 14.1.3 Hierarchical Undo
        • 14.1.4 Review of Undo Architectural Needs
      • 14.2 Groupware
        • 14.2.1 Asynchronous Group Work
        • 14.2.2 Synchronous Group Work
        • 14.2.3 Groupware Architectural Issues
      • 14.3 Macros
      • 14.4 Monitoring Architecture
        • 14.4.1 Command Objects
        • 14.4.2 Extended Command Objects
      • 14.5 Summary
    • Endnotes
    • Index

Advertisement

advert image