CMSC 498B: Developing User Interfaces - Spring 2005

Final Review

Review for Final

Final exam is cumulative.

Major Topics (* most important)

  • GUI elements and programming model
    • Forms, controls, properties
    • Event-driven programming
  • * Layout
    • Manual layout
    • Docks + Anchors
    • Custom layout event handler - positions children of a node in response to a layout event which is usually fired when the parent or any children's bounds change
  • * Model-View-Controller architecture
    • Goal: Separate data from display and interaction
    • Result: Core application manipulates data and ignores UI
      UI Designer can change UI independent of computation
      Multiple views can be synced with model
    • Use MVC to create a custom control.  Should have:
      • Model to specify data, ideally defined by a generic interface
        Model should fire event when data is changed
      • View that renders model data
        Listens to event and changes view appropriately
        Includes properties to configure view
      • Integated Controller that lets user interact through view to access or modify model
    • See TreeControl (Proj #5) solution for example (but doesn't use model events)


     

  • Data Binding
    • A specific application of MVC to a control (i.e., ListBox.DataSource)
  • Undo / Redo (Command design pattern)
    • General mechanism to encapsulate an action
    • See Adobe Photoshop history
  • Cut, Copy, Paste
    • Mechanism to share data among processes
    • Can support general as well as application-specific data types
  • Internationalization
    • Pull out culture-specific UI elements into resource bundles (Globalization)
    • Non-developer can create culture-specific bundles (Localization)
  • 2D Graphics
    • Graphical data types (text, images, paths)
    • Rendering elements (pens, brushes, bitmaps)
    • Coordinate systems
    • Transformations
    • Color models
    • Clipping
    • Region management (efficiency mechanism to only re-render what changes)
  • * Event loop, event queue, threaded programming

  • Technologies
    • C#, Visual Studio.NET
    • Piccolo.NET
    • Web Services
    • Server applications (i.e., JSP, Servlets)