Project 4 Extra Credit Options

As Project 4 is slightly different than the other projects in this course, extra credit is also a bit different. Below are five possible extra credit "mini-projects". They represent interesting directions to further the project, and might have gotten included in projects of their own, if there were enough time in the semester! ;-)

You may implement one, some, or all of these. Each is worth ten points, and you can receive extra credit for each one, for a total of fifty possible points. Remember that the usual restrictions apply: you must complete all portions of the "regular" assignment before you can gain credit for these extra add-ons.

In your submitted project documentation, please indicate clearly which extra-credit options (if any) you chose to implement, and of course document their use as you do the rest of your project.


1) Additional object features (10 pts)

Add the following features to your draw shapes: Also, the user should be able to set the properties of groups. This should include line and fill colors, fill mode, line width, and line style. Setting these properties on a group overrides the properties of each shape in the group. This change is "permanent", in that ungrouping the objects should not revert the properties to their former state. If you have implemented Undo, these actions should also be undo-able.

References:


2) Text objects (10 pts)

Add a "text" tool to your project, which should allow the user to create objects consisting of typed text. The user should be able to select from at least four standard fonts, and be able to use plain, italic, and bold typefaces. You need not implement interactive resizing, but when text is created the user should be able to select one of several point sizes. Colors apply to text as to regular shapes, except that text need not be fillable.

References:


3) Creating and using a file format (10 pts)

You will add saving and loading commands to your program. Selecting "Save" should output the current drawing in a format you will devise, first producing a dialog which allows the user to specify a file name and location (using the built-in file dialogs in either Motif and Java). "Load" will enable the user to load in a file previously saved.

You will also need to allow the user to export the drawing to any popular graphic file format of your choosing, i.e., PNG, JPEG, TIFF, etc. You do not need to be able to convert a file from another format in order to load it (since these formats do not retain all the necessary information!). Many libraries exist for different file formats; C libraries for PNG, JPEG, and TIFF are available on GL.

An acceptable alternative method is to export a more "local" format, such as an X pixmap, and use a Unix conversion program to produce the final exported file. You should allow the user to configure the locations of the necessary programs, and should give the user some different format options to maintain portability.


4) Usability Testing (10 pts)

You will construct and carry out tests to evaluate the usability of your interface. You should utilize techniques for interface evaluation as discussed in class.

You will design a 20 to 30-minute set of tasks. These tasks should be aimed at finding out how usable your interface is, given about 5-10 minutes of training on users. Your "subject" users should be somewhat experienced with computers, but not students of this class. Each subject should be asked to perform the tasks, within an evaluation technique discussed in class. At least five sample users must be included in your test.

Along with your documentation, you should include the data from your testing. You should discuss weaknesses and strengths exposed in your interface, and what changes this caused you (or would have caused you) to implement in the "final release."

References:


5) Online, context-sensitive help (10 pts)

Built-in help systems are now a common feature in commercial software. For this option, you will add context-sensitive help to your application. Users will select an "In Context..." item from a Help menu, and then click on some part of the interface. This will bring up a viewer, which will display help on that particular part of the interface.

The help system will actually be a network of help screens. Any help screen may have links to other help screens on related topics, and a link to a top-level index. Another command in the help menu should bring up the top index.

To save some effort (and allow easy distribution of help on the WWW), we will use Netscape and it's -remote option to view the help screens. You should construct your on-line documentation as a set of web pages, placing them in a publicly-accesible area (as you would your personal home page). Be sure to include a top-level index into your "help network". You will then associate parts of your interface with URLs, so that different help requests link into different parts of the tree.

You can instruct an already-running Netscape process to load a new page from the command line, by doing something like:

	netscape -remote 'openURL(http://frobozz.org/my/home/page/)'
This will fail with a non-zero result code if no Netscape process is running, otherwise, Netscape will load the page. If Netscape is not running, your application should start it up for the user. You can read more about the -remote facility here. Read the manual page on the system() function call to see how to execute the Netscape -remote command line.

Section 6.7 of the Young book describes how to implement context-sensitive help in Motif, by adding helpCallback's to widgets. You can implement similar behavior in Java, by setting a state flag when you're in "get help mode", and checking that flag in the event handlers. You might consider having objects implement a ContextHelp interface if they have a link to help; you can then check if an object implements ContextHelp in the event handler.

Apart from these technical considerations, you should take care in the writing of your help system. Keep in mind novice users who need help and guidance! You might consider including a tutorial, also accesible from the Help menu; a new user could read the web page and use your program side-by-side. Also keep in mind that on-line help is different from a user manual; a user asking for in-context help wants immediate information with quick solutions, if applicable.

References:


Ian Soboroff -- ian@cs.umbc.edu