Project 1: Text Editor

In this project you and a teammate will implement an interactive text editor that supports basic editing functions plus infinite-level undo and multiple windows on the same file. You will use Java and the Swing toolkit for the implementation.

Features

Here are the specific features your editor must support:

The descriptions above are fairly terse, but they are intended to mimic the basic behaviors of most existing text editors. I recommend experimenting with a couple of different editors to a better feel for exactly how your editor should behave.

Implementation

You must implement your editor in Java using the Swing toolkit. Java offers a newer toolkit called JavaFX, but its features are not a good match to this project. Here are some additional requirements for your implementation:

Development Environment

I recommend using the Eclipse development environment for the projects in this class, but if there is some other development environment that you prefer, that's fine too. Please configure your development environment so that indent widths are 4 spaces, and only space characters are stored in files, never tabs (this will make it easier for me to review your code: tab characters and/or 8-space indents result in very long lines in the code review tool).

Here's how you can configure Eclipse for this:

Please keep your lines no longer than 80 characters in length. Long lines make code harder to read, and they don't work very well in the code review tool that we will be using.

Submitting Your Project

You will submit your project by creating an issue on a Web-based code review tool. For this class we will use the Rietveld code review tool, which is hosted on Google App Engine (this tool has a few features that make it more convenient for this class than the GitHub code review facilities). Here is how to submit your project:

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

If you make changes after creating your issue and would like to replace the issue with a new one, you can delete the existing issue by viewing it, clicking "Edit Issue" in the upper left corner, then clicking the "Delete Issue" button at the bottom of the resulting page.

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.

README file

I will also download your GitHub repo and try running your editor on a large test file. Please create a README file in the top-level directory of your project with instructions for how to run the editor. I have Eclipse available, so if you are using Eclipse for your IDE, the README can just indicate how to run the editor from Eclipse. If you aren't using Eclipse, then you'll need to leave instructions for how I can build and run the editor without an IDE (e.g., an Ant script to build a .jar file, etc.?).