Skip to main content

Developing User Interfaces

  • 1st Edition - February 24, 1998
  • Latest edition
  • Author: Dan R. Olsen
  • Language: English

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 in… Read more

Purchase options

Sorry, this title is not available for purchase in your country/region.

World Book Day celebration

Where learning shapes lives

Up to 25% off trusted resources that support research, study, and discovery.

Description

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.

Table of 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

Product details

  • Edition: 1
  • Latest edition
  • Published: February 24, 1998
  • Language: English

About the author

DO

Dan R. Olsen

Dan R. Olsen, Jr. is the director of the HCI Institute at Carnegie Mellon University and a professor of computer science at Brigham Young University. Dr. Olsen earned his B.S. and M.S. degrees in computer science from Brigham Young University and his Ph.D. in computer and information science at the

University Pennsylvania in 1981. He is also the author of User Interface Management Systems. Dr. Olsen has considerable expertise in user interface mangement systems (UIMS), computer graphics, and the construction of compiled and interpreted languages