CMSC 498B: Developing User Interfaces - Spring 2002

Drawing Architectures

Drawing Architectures

Functions

  • objects with drawing order
  • position
  • selection
  • operations (delete, resize, open)
  • attributes (color, font, pen width, etc.)
    • How do you apply to multiple selection?
    • Do these attributes get stored in the base class, or in sub-classes?
  • redraw
  • pick
  • group

Interaction

  • click to select
  • marquee for multiple selection
  • shift/control-click for multiple selection
  • click-and-drag to drag
    • Some initial threshold movement is required before object starts moving
    • Cursor should stay on part of object that was clicked on
  • double-click to open (activate) object if not moved
  • manipulate control points

Data Structures

  • abitrary (i.e., asteroids)
  • list
  • hierarchy
  • table
  • text
  • rich text

Expense

  • storage
  • picking (hit detection)
  • rendering

Sample code

This code implements a basic arbitrary object drawing architecture with support for simple selection.

Glyph.java   RectGlyph.java   Scene.java   Application.java

How would we:

  • Implement marquee selection? 
  • click-and-drag?

Toolkits

Jazz - A zoomable structured object manager

Piccolo Jazz - A smaller and simpler version of Jazz (in the works)