## Background Information:
### Project overview:
Create an interactive graphical application using input files and mouse event handling.
Your application shall read the given input file and create a visual application that provides output to a user based on mouse clicks.
See the example GIF below for reference while review the [Project Requirements](#project-requirements) below.
![Sample run of applciation](demo.gif)
### Project Requirements:
Your application must function as described below:
1. Upon starting your application, the user shall be prompted with a file chooser to select the input file.
2. After selecting the file (format given below [Input File Format](#input-file-format)), the user should see a graphical display of the rectangles given in the input file selected.
3. The user shall then be able to click inside any of the colored boxes shown and a message box should show the string given in the file for the box clicked.
1. Clicking within the frame, but outside of any boxes, should display an error message.
4. To end the application, the user will click the close button in the top left (Windows) or top right (Mac) of the frame.
### Input File Format
All fields will be given as integers, with the exception of the STRING_TO_DISPLAY fields.
X_OFFSET_1 Y_OFFSET_1 WIDTH_1 HEIGHT_1 RED_1 GREEN_1 BLUE_1 STRING_TO_DISPLAY_1
X_OFFSET_2 Y_OFFSET_2 WIDTH_2 HEIGHT_2 RED_2 GREEN_2 BLUE_2 STRING_TO_DISPLAY_2
#### Sample data
10 10 100 150 192 251 30 ADM Grace Hopper
110 10 300 100 249 61 27 Alan Turing
510 10 100 50 156 109 95 Edsger Dijkstra
210 110 500 50 187 151 59 Floyd Warshall
10 160 200 150 10 84 134 Joseph O’Rourke
210 210 200 100 253 104 4 Jin Akiyama
510 210 100 250 134 231 143 Vašek Chvátal
10 310 100 50 15 183 101 Erik Demaine
310 310 200 150 60 110 90 Bjarne Stroustrup
10 360 300 150 147 200 7 Walter Savich
### Implementation Notes:
1. Create a project that is object oriented, therefore there should be several classes.
2. You can assume that the file will match the exact format given above.
3. All rectangles defined in the input data can be assumed to be non-overlapping, so your app should show one message per click.
1. The class diagrams should be created in at multiple iterations.
1. The first iteration should be done before you code and should provide a design that the code follows.
2. The second iteration should be completed after the code is complete and should reflex the *exact* class structure of you final program.
3. The class diagrams should include
1. Access specifier (- or +).
2. All instance fields with types.
3. All methods with return type and parameter types.
4. Associations, generalization (inheritance), aggregation and multiplicity .
5. Stereotyping – interface or abstract classes.
4. Create a word document explaining the differences and the rationale behind the differences between the final result of the two series of iterations.
A difference is expected as it is extremely difficult to anticipate every design characteristic prior to coding.