CS 6395: Assignment 3: Paint!

Summary

Implement a paint program. You program is to support a selection of drawing primitives and colors. It is also to support move/copy of rectangular regions and region fill.

The purpose of this assignment is to deal with interactivity issues, not to create a full featured paint program.

Due

This assignment is due the last day of class. You are to implement it in Java and Swing.

Details

You are to create a simple paint program. The program should support the following main features:

Your interface should support multiple access to the modal commands. In particular, the drawing primitives and the action to select the copy/move region should be in a palette, a menu, and have keyboard shortcuts.

The colors should only be available from a palette. Clicking on a color should change the current color. Clicking and dragging onto the paint region should perform a fill.

Move and copy are implicit: if the current command is to select a copy/move region, dragging inside an existing region performs copy, and dragging with a shift key held does a move. Dragging outside the region replaces the region replaces the region. Clicking anywhere clears the region.

The palettes for the colors and tools can be in their own subwindow, or in the side of the main paint window, whichever you prefer. They should all be within one top-level window.

Feedback

The major purpose of this assignment is exploring how to provide good feedback and interactivity. For all of the above actions, you should provide as much feedback as possible, while still having the system remain interactive. Here is an incomplete list of possibilities that you should keep in mind

Extra Credit

You may obtain extra credit (up to 20% of the assignment value) for implementing extra features that lead to interesting interactivity problems and solutions. Please send the Professor email (blair@cc) if you would like to attempt to do something for extra credit, and want to make sure it is reasonable.


Blair MacIntyre
Last modified: Thu May 13 16:33:53 Eastern Daylight Time 1999