Main window: contains two text fields, and a splitter between them
Status bar
Over the status bar: a progress bar and a corresponding label on the right of it, showing the progress in percents.
'Ready' button, overlapping the label
The button, the progress bar, and the label should be invisible as the program runs, and appear only when neccessary
Functionality and features:
Both the left and the right text fields have exactly the same functionality for text edition: Open, Save and Save As, Copy and Paste (access from the menu, and the Key shortcuts - these will apply for the window with the focus)
The status bar shows the number of characters in each of the text fields, and the name of the files, if opened
Additional options:
If there is a text selected in one of the fields, search for it in the second field (call the search from the menu)
if the text is found, highlight it in the second field, and scroll the window to make it appear
if there is no selection, the option should be disabled
Enable to change the text font and color for each of the windows (with the appropriate common dialogs)
Text statistics:
Number of characters
Number of words (chunks containing the letters only)
Number of appearances for each character (ASCII code between 32 and 126)
Ten most frequently appearing chunks with the length of 2, 3 and 4, and the number of appearances
Requirements for text statistics
Statistics are evaluated for one text field only
The evaluation should be done in a separate thread, and its results provided in the separate window (modal dialog)
As the evaluation takes place, the text field, for which it's being performed, should be disabled. The other text field should not, i.e. the user should be able to perform all the actions on it
While the stats are evaluated, the progress bar and the progress label become visible, showing the progress of the evaluation. After the evaluation is done, the bar and the label dissappear, and the 'Ready' button becomes visible. The 'Ready' button, when pushed, launches the statistics dialog and dissapears. It should dissapear as well when another evaluation is launched
Technical requirements:
Catch all exceptions
Give appropriate filter for opening the files, and appropriate default file extensions for saving
Make sure the statistics evaluation thread is not running when the program ends