I need a simple vocabulary tool with one (initial) 4 lines, resizable? listbox and three buttons.
Vocabularies should be read from text file and missed vocabularies written to second text file.
Tool should be writte in Java.
A few? minor, simple, additional features like keypress actions, parameter passing, statistic output.
In detail the following functions should be included:
1.) The program should be implemented in Java 1.5 or 1.6 and put into a startable *.jar file The GUI should be implemented with Swing controls and with standard java classes. No further 3rd party library should be used. The number of created classes and sources files should be reduced to a minimum. If possible and necessary anonymous, inner classes should be used. Intended operation OS is WindowsXP. 2.) The program should be called from commandline with one (file) parameter: java -jar [url removed, login to view] <vocfile />sample: java -jar [url removed, login to view] "D:\test\vocs\[url removed, login to view]"
? 3.) The parameter <vocfile />is a pure text file with the following format: ... src vocabulary1 term or sentence target vocabulary1 term or sentence <one />src vocabulary2 term or sentence target vocabulary2 term or sentence <one />... sample: grant garantiert onion Zwiebel
4.) The GUI of the program should look like the attached drawing and consist simply of - a title bar with minimize and close button - a listbox with initially 4 lines by default - three buttons - a status bar Snapshot see here: [url removed, login to view] The window should be only vertically resizable - not horizontally. When the window is resized vertically only the number of visible lines in the listbox should be increased/decreased. The button sizes remain fixed. 5.) After start the program should randomly (!) pick a src vocabulary from the <vocfile />and present it to the user in the last line of the list box. No vocabulary should be presented twice in a session. If the <vocfile />does not exist or is empty a warning popup should appear.
6.) The user decides now if he remembers the translation or not. In contrast to most other vocabulary programs he does NOT have to enter something into an entry field! When he does not remember it or he remember it wrong the vocabulary is marked as "missed" (for later storage).
? 7.) The user can now click - the "exit" icon button in the right upper corner to leave the program. Alternatively the user can press the <esc />key on the keyboard. Just before leaving the program all missed vocabularies should be written to a second textfile <missfile />. See explanations in 8.) - the "next" button (then the refering target result line (=translation) is presented at the bottom of the listbox, then one blank line is inserted and the next random vocabulary is presented. Whenever a new line (src or target) is shown the older lines are shifted to the top) Instead of clicking the "next" button the user should be able to press the "PageDown" or "Return" key on the keyboard. - the "mark and next" button (same as "next" but here in addition the current src vocabulary is marked as "missed". - the "mark last" (same as before but no new src vocabulary is presented. Instead the the second last src vocabulary is marked as "missed".
8.) The <missfile />mentioned in 7.) which is written just before every prgm exit/close should be placed in the same directory as the original source vocabulary file. The file name should be the same name as the original source vocabulary file but with an additional ".[url removed, login to view]" appended. The format inside <missfile />should be the same as the original source vocabulary file. Obviously the <missfile />should contain only those vocabulary terms which are missed in the current session. A possibly existing old <missfile />should be overwritten.
9.) All dimensions (width, height) of the buttons and the listbox should be declared on top of the class definition in the source code so that they can be changed later (if needed). Same applies to the font name and size for the text of the listbox and buttons. So the java class definition should start similar to: int bHeight = 40; // height is the same for all buttons int bMarkLastWidth = 150; //pixel int bMarkNextWidth = 250; //pixel int bNextWidth = 350; //pixel int lbHeight = 300; // listbox height int windowTotalWidth = bMarkLastWidth + bMarkNextWidth + bNextWidth; int windowTotalHeight = lbHeight + bHeight; .... lbFontSize = 12; // pixel .... lbFont = "Georgia, Times New Roman, Arial"; .... bFontSize = 14; // pixel .... bFont = "Georgia, Times New Roman, Arial";
? 10.) The listbox should initially show 4 lines: - second last src vocabulary - second last target vocabulary - blank line - current src vocabulary When windows is vertically resized the number of visible lines should be decreased/increased (see 4.)
11.) The window title bar should tell the user the currently used vocabulary file name (including the prepended path)
12.) Window status bar should tell the user about the total number of vocabulary items in <vocfile />and the tested vocabulary in the current session similar to: total vocs=1367 curr vocs=89 curr missed=23 The possible number of vocabulary in the file can be 1 up to 10000
? 13.) src vocabulary terms or sentences WITHOUT immediately following target line (=single text lines) should be ignored
14.) There should be no file handle locks on the <vocfile />So the content of the <vocfile />must be read at the beginning of a training session into in internal array/Map. The file handle must be closed afterwards.
? 15.) All characters from western charset (english, german, spanish, french) must be read+writeable The lines can contain special chars like ()?:=-,.;:%/&$!_#'+~* 16.) Source code must be provided at the end and (of cause) be compileable