sdi.create:|:Create a Single Document Interface application. method.long:|:Avoid long methods. Each method that you create should be short, to promotencapsulation. If you have a method that is longer than 25 lines, then it probably needs to be divided into smaller methods. data.new:|:Do not create a new data structure if one that already exists willsolve the problem. image.create:|:Create Image image.project:|:Create a separate project that will draw to an image and save the image to a file. image.250:|:The image should be no larger than 250x250 pixels. image.four:|:Only use four colors to create the image. Use four known colors. image.pen.6:|:Use a pen that is at least 6 pixels wide. image.arc:|:Draw an arc. image.bezier:|:Fill a closed bezier. image.cap.anchor:|:Set the end cap for the pen as an anchor. image.poly:|:Draw a polygon with at least three points. image.lines:|:Draw several connected lines. Draw at least four lines. image.dash.color:|:Change the color of the dashed pen. image.dash.anchor:|:Change the type of anchor for the dashed pen. image.dash.custom:|:Create a custom pen dashing. image.dash.tran:|:Translate the graphics context and draw the exact same lines again with a dashed pen. image.compound.color:|:Change the color for the compound pen. image.compound.anchor:|:Change the type of anchor for the compound pen. image.compound:|:Change the pen to a compound pen. image.compound.dash:|:Turn off the dashing for the compound pen. image.compound.tran:|:Translate the graphics context and draw the exact same lines again for the compound pen. image.solid.color:|:Change the color for the solid pen. image.solid.:|:Change the type of anchor for the solid pen. image.solid:|:Change the pen to a simple, solid pen. image.solid.tran:|:Translate and rotate the graphics context and draw the exact same lines again for the solid pen. image.canvas:|:Be sure that all of your shapes stay within the canvas of the image. image.background:|:Set the image as the background image for the main form. image.save:|:Save the image to the folder that contains the executable. Use the Application class to access this path. image.run:|:Run this project once, before running the main project for the first time. library.hw1:|:Use the control library from homework 1. Be sure to include the file in the zip that you upload. library.include:|:Be sure to include your control library in your uploaded file. library:|:Add a form to the Control Library that will be used as a base form for the main form in the main project. library.menu:|:Add a menu strip, docked to the top. library.help:|:Add a top level menu item named Help to the menu strip. library.oath:|:Add a menu item named Oath library.about:|:Add a menu item named About. library.virtual:|:Add handlers for both of the oath and about menu options; make them virtual. library.virtual.exception:|:The implementation of the handlers for oath and help in the base class should throw a new NotSupportedException with an appropriate message. library.tips:|:Add tool tips to the top level menu item and to each submenu item. library.file:|:Add a top level menu item named File to the menu strip. library.close:|:Add a menu item named Close. When clicked, close the application. library.status:|:Add a status strip, docked to the bottom. library.name:|:Add a name control from your user library, dock it to the top, so that it abuts the bottom of the menu strip. library.panel:|:Add a main panel that fills the remaining area of the form; if the form is resized, the panel should still fill the rest of the client area. library.access:|:Change the access modifier for the base class controls, so that derived classes can access them. main.interface:|:Use interfaces to encapsulate implementation details. Design code so that the implementation details of data could be changed in the future without having to rewrite all the code that accesses that data. resource.image:|:Add the image that you created to the project resources. oath:|:Create a dialog in the main application that will display the pledge of honesty. oath.image:|:Use the image resource as the background image. oath.extend:|:Extend the oath dialog from the base dialog in the control library. oath.oath:|:Add the oath control. Center it in the remaining space. oath.fixed:|:The oath dialog should be a fixed size. oath.buttons:|:Remove the icon, minimize button and maximize button for the oath dialog. about:|:Create a dialog in the main application that will display a description of the assignment. about.image:|:Use the image resource as the background image. about.extend:|:Extend the about dialog from the base dialog in the control library. about.about:|:Add a description of the assignment in your own words. Center it in the remaining space. about.fixed:|:The dialog should be a fixed size. about.buttons:|:Remove the icon, minimize button and maximize button. word:|:Create a class that will hold data for a word. word.text:|:Property for text in word class. word.loc:|:Property for location in word class. word.size:|:Property for font size in word class word.typeface:|:Property for typeface in word class. word.props:|:Add properties to the word class to improve encapsulation. word.helper:|:Add more properties and helper methods that contain operations that work on words. Encapsulate word processes in this class. doc:|:Create a document class that will store words. doc.data:|:Add a data structure for storing words in the document class. doc.helper:|:Add properties and helper methods to encapsulate document processes in this class. options:|:Create a dialog in the main application that will allow the user to modify information for words. options.:|:Extend it from the base dialog from the control library. options.:|:Add controls to change all the properties in a word. options.:|:Perform thorough validation. Allow focus change. options.:|:Anchor the OK, Apply and Cancel buttons so that they remain in the lower right area of the form when the form is resized. options.:|:When using an interface, it is better to encapsulate actual properties in the dialog or components than to create additional variables. options.:|:The dialog may not access any members from the main form, application settings or user settings. main.extend:|:Extend the main form from the form that was added to the control library for this assignment. main.help.override:|:Override the handlers for the Oath and About menu items so they open the Oath and About dialogs modelesslly. main.help.single:|:Only allow one of each of Oath and About to be open at a time. main.help.open:|:Open the Oath and About dialogs so they do not cover the main window. main.help.own:|:The main form should own the dialogs. main.:|:Add a tab page group to the main form, so it fills the remaining area. Add two tabs, one for drawing backgrourds and one for drawing text. The details of these tabs are explained below. main.help.insert:|:From the main form, insert a new menu item for Help into the base menu. This cannot be done in the designer, due to issues with visual inheritance of collection containers. back:|:Add a tab page for drawing backgrounds. theme:|:Add an item to the main menu in the base class for the color theme. theme.three:|:The theme menu will contain the names of at least three color themes. theme.enum:|:Create an enumeration for the names of the themes. theme.colors:|:Each theme will have four colors associated with it. theme.known:|:One of the themes should be the known colors that you used to create your image. theme.system:|:One theme should use system colors. theme.unkown:|:One theme should use colors that are not known colors. theme.redraw:|:When a theme is selected, redraw the background with the new colors for the theme. brush.context:|:Create a context menu that contains the options for the brush that will fill the background. tab.back.context:|:Make brush context menu the context menu for the tab page. The brush will be used to fill the client rectanble for the tab page. brush.solid:|:Solid - Use a solid brush to paint the background. The brush should be drawn with a color from the current theme. brush.texture:|:Texture - Use your image to paint the background. brush.texture.wrap:|:Wrap the image so that it flips something. brush.texture.change:|:When the theme changes, change the colors in the image to match the theme. Use the changed image in the brush that draws the background. brush.hatch:|:Hatched - Use a hatched brush. The brush should be drawn using two colors from the current theme. brush.linear:|:LinearGradient - Use a linear gradient brush to draw the background. Use all four colors from the current theme. Set the positions for the colors. brush.path:|:PathGradient - Use a path gradient brush to draw the background. Use all four colors from the current theme. Change the center of the gradient. brush.redraw:|:After an option is selected, be sure the new brush repaints the tab page. main.brush.insert:|:Add an item for the brush menu to the main menu in the base class that will display the same menu items as the context menu. The menu item should only appear when this tab page is open. back.cursor:|:Use an animated cursor that is only used on the background tab. back.cursor.project:|:Add the cursor to the project. Use a relative reference when loading the cursor. main.tab.text:|:Add a tab page for drawing text. text.context:|:Create a context menu, for the text tab, with one option for importing text from a text file. text.import:|:Read the file using a StreamReader and FileReader. There is a convenient method in StreamReader for grabbing all the text from the file. text.import.split:|:Split the text from the file into words and add the words to the document. text.import.font:|:Choose a default font for each word. text.import.loc:|:Set the location of the words so that none of the words will overlap when displayed on the screen. You will need to calculate the size that is needed to display the word using a graphics context and the word's font. It is a bad idea to recalculate this every time that the tab is painted. text.encap:|:Decide where it is best to place the code for these operations to increase encapsulation. text.drag:|:Be able to drag a word anywhere in the page. text.flicker:|:Do not use double buffereing, but limit flicker. text.option:|:Open a word options dialog for a word when the word is right-clicked. text.option.modeless:|:Open the dialog modally modelessly. text.option.button:|:Only have one button, for closing the dialog. text.change:|:Be able to change all the properties for the word, except the location. Show the x and y for the location as labels.. text.change.font:|:If the font is typeface or size are changed, this will affect how the word can be dragged. text.change.text:|:If the text is changed, this will affect how the word can be dragged. text.cursor:|:Use an animated cursor that is only used on this tab. text.cursor.project:|:Add the cursor to the project. Use a relative reference when loading the cursor.