Project 2: Revised Editor

For this project, you will be revising your editor implementation based on the feedback you received from code reviews. You should consider all of the comments you received, both in class and via the code review tool, and I expect you to fix all of the issues that I raised in my code review (check with me if you don't think it is possible or reasonable to deal with some of my comments). Most of you will need to do significant re-architecting. Your overall goal should be to make your code as clean and simple as possible. For example, you should refactor your abstractions to provide the simplest possible interface to your classes, with the best possible information hiding. Also, make your code as easy to read as possible; to do this you will need good documentation as well as a clean class structure.

Clean classes for text management and undo/redo

Your Project 2 submission should cleanly separate out basic text management and the core undo/redo mechanism, so that they are (a) relatively general-purpose (they could be used for other purposes than your text editor) and (b) not intimately tied to the rest of the application or each other. For example, it should be easy to add new kinds of undoable operations not related to text, and there should be no piece of code that knows how to undo both text changes and the selection/cursor.

Unit tests

Use JUnit to write unit tests that cover all of your code related to text storage and undo/redo. You do not need to write unit tests for the code that displays text on the screen or the top-level event handlers. Use the "isomorphic to the code" approach I described in class, so that it's easier for me to see that you have appropriate coverage.

Changes file

Create a file changes in the top-level directory of your repository, which briefly describes the most significant changes you made for Project 2 (what you changed, at a high level, and why you did it). This file can be relatively short (10-20 lines): it's intended to make it easier for reviewers to find the most important changes.

Submitting Your Project

To submit your project, create another issue on cs190codereview.appspot.com as follows:

Once you have created the code review, check to make sure it is visible at cs190codereview.appspot.com.

Late Days

If you are planning to use late days for this project (or any project) please send me an email before the project deadline so that I know your plans. Send me another email once you eventually upload your code review.