COP4226, SDI TEXT EDITOR
Create a Single Document Interface (SDI) application that implements a text editor.
- In order to open multiple files at the same time, multiple instances of the application must be started. Each instance only handles one file. If a new file is opened in an application instance, the current file must be closed first.
- Use a multiline text box to implement the editor. Do not use a rich text box.
- Along with the text, save the color for the text, the background color of the text, the font for the text, the size of the form, the location of the form and the title of the form.
- Open a modeless preferences dialog that allows the user to change these properties, except the text.
- The dialog should be populated with the current values of the properties when it opens.
- Place appropriate validations. In particular, add a combined validation that guarantees that the text color and background color contrast enough so the text can be read.
- The application should use a BinaryFormatter or SOAPFormatter to save a file, open a file that has already been saved, and save a file under a new name. Each file will include the text, colors, font, size, location, and title.
Create a separate class to encapsulate the text, color, font, size, location, and title.
- The main form should know nothing about the implementation details of the class.
- Add public properties and helper methods to the class that can be accessed by the main form.
Additional requirements
- Use the control library from a previous assignment.
- Add Oath and About dialogs.
- Add a main menu. All features should have a menu item.
- Add a status bar.
- Add a toolstrip.
- Add an Edit menu to the main menu that implements cut, copy and paste of text, using the clipboard.
- Upon closing, warn the user if edits have not been saved and give the user the option to return to the application.
- Implement features that make the user interface accessible, including help, validation, menu items, status strip information, toolstrip icons, context menus, etc.
Avoid long methods. Each method that you create should be short, to promote encapsulation. If you have a method that is longer than 25 lines, then it probably needs to be divided into smaller methods.
Use properties to encapsulate implementation details.
Use meaningful names for all variables. Any variable that ends with a number will lose points.
Examine the API for classes. Avoid duplicating work that has already been provided in the classes you are using.
Create a video
Create a 4-6 minute mp4 video. You may use the free version of Screencast-o-matic. The video must include:
Submitting the Assignment
Zip your entire project and upload via Module 5: Group Assignment Source Submission.
The master branch in GitHub should have the final version of your code.
Exclude the Debug and Release directories.
Be sure to include your control library in your uploaded file.