Release Name: 2.0

Notes:
DictionaryMaker is a graphical tool for creating electronic pronunciation dictionaries 
(for natural languages). The system allows a user to develop a pronunciation dictionary 
without requiring expert linguistic knowledge or programming expertise.

==================================================
version 2.0 September 2006
release notes created by: avrensbu@users.sourceforge.net

Version 1.0 was not released on sourceforge.net, so this marks the first public release of
DictionaryMaker.

New features included in this release:
* During project creation, the user is now given the option of importing an exiting 
   dictionary. Previously, users were only able to import a wordlist.
* Added the ability to RE-PROCESS WORDS WITH MISSING GRAPHEMES. When importing
   words, each grahpheme is checked to see whether it already exists in the dictionary. 
   If it does not, the affected word list (i.e. those with missing graphemes) is displayed. 
   The user then has the option of adding or ignoring these words.
* Quick adding of phonemes: Left-clicking on the word panel displays a menu of all 
   phonemes, as left-clicking on phonemes in the word panel. This allows rapid 
   addition and editing of phonemes assigned to a word.
* Word List sort options added to filter.
* Rule export will now also prompt for a gnull rules export file.
* "Import dictionary" option added to Project menu.
* "Syncronise Project Rule-set" added to Project menu.

_______________________
Changes in DictionaryMaker 
-----------------------
2006-09-18  pvzyl  <pvzyl@sourceforge.net>

	* bin/run.bat: changed the jar file to: dictionarymaker-2.0.jar
	* bin/run.sh: removed the setting of paths and home dirs
	* doc/website/index.html: renamed the dictmaker_manual_v2.0.pdf
	* VERSION: added version 2.0
	* build.xml: added make-src-all-release to build the zip and tgz release files. 
		Added the version number to the jar files
		Included release-notes.dir
		Added :make-src-all-release depends="jar,test-jar,docs">
		Added: make-bin-release
	* build.properties.example: added release-version=2.0, and apidoc.dir

2006-09-18  Andries  <avrensbu@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/algorithms/DMRule.java (remove_gnull_list): Changed w.contains("0") to "w.indexOf( "0" ) != -1" to be 1.4 compatable
	* src/java/za/org/meraka/dictionarymaker/ui/ImportRuleDictPanel.java (getChkImportDictionary): Bug 1542055 : Check ItemStateChanged event for selection instead of StateChanged event
	 (importDictionaryButtonActionPerformed): Bug 1560575: Only set import to true if file was selected 

2006-09-11  marius  <marius@Pegasus>

	* src/java/za/org/meraka/dictionarymaker/ui/WordDisplayPanel.java (getPhonemesChanged): Flag added
	to determine if the phonemes had been changed. Appropriate get and reset (set to false) added.
	* src/java/za/org/meraka/dictionarymaker/model/Project.java (isFullRuleExtractionRequired): Use of
	above flag to call full rule extraction with continuous update mode only if phonemes had changed.
	
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java: Checkbox added to sort-unsort WordList
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (clearSoundPanel): Set current wordData
	to null, to ensure status and phonemes are not accidentally altered in the background when one of
	the buttons is pressed. 
	(setWordInvalid): Test for above setting of wordData to null
	(setWordAmbigious): Test for above setting of wordData to null
	(setWordUncertain): Test for above setting of wordData to null
	(setWordCorrect): Test for above setting of wordData to null
	(skipWord): Test if there are more words in list available

2006-09-07  Andries  <avrensbu@csir.co.za>
	
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java: Added check: if word to be diplayed is not in listmodel, force reload of words from dictionary. This is only temporary until the reason for the missing words is found.

2006-09-06  marius  <marius@Pegasus>

	* src/java/za/org/meraka/dictionarymaker/model/Project.java (isFullRuleExtractionRequired): IF added
	to test if update-mode is Continuous or Auto (with the dictionary size less than the switch-to-
	incremental-mode number); runs Full-Rule-Extraction if True.

2006-09-06  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (setWordCorrect): Set new phoneme array in wordData
	Bug 1549785: (displayWord) : If word status is not CORRECT get prediction of phonemes from dictionary
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java: Get unsorted list from dictionary
	* src/java/za/org/meraka/dictionarymaker/ui/WordDisplayPanel.java (mouseMoved): Bug 1549787 If phoneme popup is visible, do not update position of indicator (leads to phoneme being added to wrong position)

2006-09-06  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java: NB: Added another way to populate the word list panel and sort and filter 
	the list
	Removed them again: the other populate/sort methods
	(skipWord): added a boundary check: if you are at the end of the list and press skip it will stay on the last 
	word as there is nothing to skip to at the end of the list
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (displayNextWord):  Removed the do-while's and replaced them with a caal to .getDictionary().getWordStatusMap()
	to get the next unverified word
	(setWordCorrect): added check: if (newPho.length <= 0) { to make sure we don't
	try to mark some word as correct with no phonemes. Was getting an ArrayIndexOutofbounds exception.
	* src/java/za/org/meraka/dictionarymaker/model/WordData.java (WordData): Added 	this.status = STATUS_UNVERIFIED; to make this the default for WordData

2006-09-05  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/utils/FileUtil.java: Force reload of words from dictionary on wordlist if new words are imported

2006-08-29  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeViewer.java (mouseClicked): On double click play audio
	* src/java/za/org/meraka/dictionarymaker/ui/ExpandedPhonemePanel.java: Removed propertychange interface (not used)
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: Force reload of words from dictionary if new words added to list
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java (saveAllValues): Do not force reload of words from dictionary
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java: Only reload list of words from dictionary if model is null or forceReload is true, pass visible status list and text filter to listrenderer
	* src/java/za/org/meraka/dictionarymaker/ui/WordListCellRenderer.java: Added code to allow renderer to filter words according to status or text filter
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java : fire property change to notify wordlistpanel that word status changed 

2006-08-21  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/model/WordData.java (WordData): set status default to STATUS_UNVERIFIED; 
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (getWordStatusMap): Map that contains the words according to their status
	 Example: key: WordData.STATUS_CORRECT value: list of words with this status
	(addToWordStatusMap): add words to this status map
	(removeWordFromStatusMap): remove them
	(getWordList): get all the words in the dictionary
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java:(updateWordListModel)(initialize) changed from get sorted list to get the unsorted
	normal word list	
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (setWordCorrect): added if(newPho.length >0) { 
	so that we don't mark a word correct if there is no phoneme provided
	
2006-08-08  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/WordDisplayPanel.java (playPhonemes): Bug1531627 Check if WordDisplayPanel contains any phonemes to play

2006-08-07  marius  <marius@Pegasus>

        *Added src/java/images/sync24.gif
        * src/java/za/org/meraka/dictionarymaker/ui/ReportPanel.java: Added JRadioButton "Rules" 
		(setRulesDisplay): Method added to display the current rules in the project. Fixes: # 1524343
        * src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java 
		(getMiSynchronise): Added MenuItem 'Synchronise' 
		(synchronise): Method added to Synchronise rule-set and update display when above menuItem is clicked.
	      (getMProject): Above Menuitem added to 'Project' menu. 
		Fixes: # 1524337

2006-08-07  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/Utilities.java (sort): Added method to sort wordData list alphabetically
	* src/java/za/org/meraka/dictionarymaker/utils/Constants.java: Added constants to track missing and conflict words during dictionary import
	* src/java/za/org/meraka/dictionarymaker/utils/FileUtil.java (importDictionaryFromFile): Added method to start import from existing dictionary file
	* src/java/za/org/meraka/dictionarymaker/ui/DictionarImportConflictsPanel.java: Added custom dialog for dictionary import
	* src/java/za/org/meraka/dictionarymaker/ui/ConflictWordListCellRenderer.java: Added custom listcelrederer for dictionary import
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (replaceWordData): If condiotanions is right an imported WordData can replace an existing one
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (importWordData): Added method to add wordData into dictionary (phonemes alreadt added)
	* src/java/za/org/meraka/dictionarymaker/model/WordData.java (setPhonemes): Changed access to public

2006-08-03  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/exceptions/FileAlreadyExistsException.java:  Used to check if files already exists in the destination directory.
	Used for example when we copy phoneme sound files.
	
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java (importDictionary): Added import dictionary

2006-08-03  marius  <marius@Pegasus>

	* src/java/za/org/meraka/dictionarymaker/utils/MutableInteger.java (compareTo): Added to compare MutableIntegers.
	Needed for numerical arrangement of contextSize in ReportPanel()
	Fixes: #1524356

2006-08-02  marius  <marius@Pegasus>

	* src/java/za/org/meraka/dictionarymaker/ui/ReportPanel.java (setNumberofRulesPerGrapheme): Set().iterator changed to TreeSet().iterator to ensure graphemes are sorted in table.
	(setNumberofRulesPerGraphemeContext): Set().iterator changed to TreeSet().iterator to ensure graphemes are sorted in table.


2006-08-02  Thomas Fogwill  <tfogwill@users.sourceforge.net>
	* Added hashcode method to MutableInteger so it works properly in HashMaps
	* Fixes: #1524356

2006-08-02  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/messages.properties: Added: PhonemePanel.TitleSoundFileAlreadyExists and
	PhonemePanel.MessageSoundFileAlreadyExists
	* src/java/za/org/meraka/dictionarymaker/utils/FileUtil.java (copyFile): Bug 1519919 on SourceForge: Added exception:FileAlreadyExistsException
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java (importSoundFile): Bug 1519919 on SourceForge: Not sure if thes was the problems. Added and handle exception:FileAlreadyExistsException
	It seemed that if the file existed we throw an error and the gui hangs as we are not handling this.

2006-08-01  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/model/WordData.java (toString): Added toSting for sorting
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java (populate): Sorting words aphapeticaly for display
	(getNextWordData): Bug: 1532220 Check that next word in user select mode is unverified


2006-07-31  Andries  <avrensbu@csir.co.za>
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java (updateValues): Removed code that disables list when in system select mode

	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (displayNextWord): Bug: 1502708 Check if rules is empty to start rule exstraction for new project

2006-07-31  tfogwill  <tfogwill@users.sourceforge.net>
	* Fixed handling of Windows paths in History
	* Closes: #1524361

2006-07-31  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java:  in "removeWords" Bug 1524364 on SourceForge :removes a list of words(multiple selection) from the dictionary and returns a list of words
	* src/java/za/org/meraka/dictionarymaker/ui/messages.properties: Bug 1523682+1524351 on SourceForge: Changed the messages for GeneralSettingsPanel.LabelBatchSize and
	GeneralSettingsPanel.LabelSizeToSwitchToBatchMode to reflect the true rules/business logic
	
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java (itemStateChanged):  Bug 1523682 on SourceForge: added the ability to specify the batch size for Incremental Mode
	(setValuesOfCurrentProject):  Bug 1524351 on SourceForge: changed getSettings().getNumWordsReqForBatchPhase() to getNumWordsReqForSwitchToIncMode
	Bug 1523682+1524351 on SourceForge: Changed the messages for GeneralSettingsPanel.LabelBatchSize and
	GeneralSettingsPanel.LabelSizeToSwitchToBatchMode to reflect the true rules/business logic
	
	* src/java/za/org/meraka/dictionarymaker/settings/BaseSettings.java (getNumWordsReqForSwitchToIncMode):   Bug 1524351 on SourceForge: enamed getNumWordsReqForBatchPhase to getNumWordsReqForSwitchToIncMode
	* src/java/za/org/meraka/dictionarymaker/settings/Settings.java:  Bug 1524351 on SourceForge:  renamed get/setNumWordsReqForBatchPhase to getNumWordsReqForSwitchToIncMode
	setNumWordsReqForSwitchToIncMode
	* src/java/za/org/meraka/dictionarymaker/model/Project.java (updateIncrementalMode): Bug 1524351 on SourceForge: renamed getNumWordsReqForBatchPhase 
	to getNumWordsReqForSwitchToIncMode. When you use auto mode and you get to a certain size one must switch from continuous mode to incremental mode.
	Changed the names of methods to match this logic as we are using it correctly in Project.updateIncrementalMode()
	* src/java/za/org/meraka/dictionarymaker/utils/GraphemeUtil.java (retryAddingWords):  Bug 1519917 on SourceForge: retry adding missing word as some of the missing graphemes
	may have been added
	(addMissingGraphemes): I have added the ability to RE PROCESS WORDS WOTH MISSING GRAPHEMES
	* src/java/za/org/meraka/dictionarymaker/utils/DictionaryUtil.java (removeWords): Removed the exception that I throw for testing purposes
	* src/java/za/org/meraka/dictionarymaker/ui/MissingGraphemesPanel.java:   Bug 1519917 on SourceForge: added e.printStackTrace


2006-07-31  pvzyl  <pvzyl@sourceforge.net>
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: removed some comments and formated the src

	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (importWords): changed method to use collection rather that List:
	importWords(Collection wordList) {.............

2006-07-28  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/WordDisplayPanel.java (mouseExited): removed code that clears marker on word panel exit

2006-07-28  marius  <marius@Pegasus>

	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java (setSelectionToWord): Added Method to set the selected word in GUI wordList
	(addHistoryWordData): Remove duplicates from History List
	* src/java/za/org/meraka/dictionarymaker/ui/c (readWordStatus): Added Method to display wordData in GUI wordLists
	(getListCellRendererComponent): Display Word status in list
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (displayNextWord): Random added to choose a random next word (bug: 1502705).
	(setWordCorrect): Move processed word to History.
	(setWordUncertain): Move processed word to History.
	(setWordAmbigious): Move processed word to History.
	(setWordInvalid): Move processed word to History.
	* src/java/za/org/meraka/dictionarymaker/utils/DefaultLogs.java (getWriter): Added Method to retrieve the FileWriter to which the logs must be written to.
	(getDefaultRuleLog): System.out replaced with new method.
	
2006-07-27  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/MissingGraphemesPanel.java:  Bug 1519917 on SourceForge: Replaced getDictionary().getMissingGraphemes()
	with .getDictionary().getWordsWithMissingGraphemes() and added closing the component when there is nothing more to add
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (importWordDataList): Bug 1519917 on SourceForge: Added GraphemeUtil
					.checkIfWordContainsMissingGraphemes(wordData.getWord());
	Added Map wordsWithMissingGraphemes that contains word with missing/possible-illegal graphemes
	Delete missingGraphemes.
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: Bug 1519917 on SourceForge: Added updateWordListModel to update the model
	after we have added new words
	removed getDictionary().getMissingGraphemes()
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java (importButtonActionPerformed): added check: if (importCount != null) { as this was falling over if
	the user decided not to import anything
	* src/java/za/org/meraka/dictionarymaker/utils/GraphemeUtil.java (addMissingGraphemes):add word to dictionary as well as their missing graphemes
	(checkIfWordContainsMissingGraphemes): identify words that contain missing graphemes
	* src/java/za/org/meraka/dictionarymaker/utils/DictionaryUtil.java (removeWords): Bug 1524364 on SourceForge :removes a list of words from the dictionary and returns a list of words
	 * that cannot be removed

2006-07-27  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/WordDisplayPanel.java (buildPhonemeMenu): sorted list of phonemes dispalyed on change popupmenu
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: calls ProjectUtil.getExpandedPhonemePanel().updateValues() to remove phoneme from view
	* src/java/za/org/meraka/dictionarymaker/utils/FileUtil.java (importDictionaryFromFile): Added method to parse and import Dictionary file.
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePanel.java (ProjectCreatePanel): Removed importwordlist added import ruledictpanel (this has checkbox to choose woordlist)
	(addPanel): Adds panel to project create steps
	* src/java/za/org/meraka/dictionarymaker/ui/ImportRuleDictPanel.java: Adding panel to import wordlist (option) and dictionary file.
	now adding wordlistpanel through method addPanel
	* src/java/za/org/meraka/dictionarymaker/algorithms/DMRule.java (addGNulls): Add gnulls to gnulls map
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (importWordDataList): Added method to add wordData objects from external 
	(addGNullRules): Add gnulls directly into DMRule


2006-07-26  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: Bug 1524364 on SourceForge: added the ability to remove more than one phoneme at a time
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeModel.java (removePhonemes): added the ability to remove more than one
	phoneme at a time and added new messages. ALSO FIXED THE BUG WITH REMOVING PHONEMES AND GRAPHEMES
	* src/java/za/org/meraka/dictionarymaker/ui/messages.properties: added new titles and messages:
	ImportWordListPanel.TitleWordCouldNotBeRemoved,	ImportWordListPanel.MessageWordCouldNotBeRemoved,etc
	* src/java/za/org/meraka/dictionarymaker/ui/MissingGraphemesPanel.java: Used to display missing graphemes and offer a list to the user to add them(missing graphemes) to
 * the dictionary
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java:   Bug 1524364 on SourceForge: changed removeGrapheme() so that we can have multiple selects and remove
	more than one grapheme at a time.
	Added propertyChange() so that this panel can update it self when grapheme's is added

2006-07-26  pvzyl  <pvzyl@sourceforge.net>
	* src/java/za/org/meraka/dictionarymaker/ui/EditDictionaryPanel.java: added this listener so that we can upadte the grapheme panel with the new graphemes:
	importWordlistPanel.addPropertyChangeListener("graphemeAdded2",getGraphemePanel());

	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (removeGraphemes): added this method to be able to remove a list of graphemes
	Added new exceptions: WordCannotBeRemovedException,PhonemeInUseException, GraphemeInUseException
	* src/java/za/org/meraka/dictionarymaker/exceptions/WordCannotBeRemovedException.java (WordCannotBeRemovedException): : Added these for better error messages and error handling
	* src/java/za/org/meraka/dictionarymaker/exceptions/PhonemeInUseException.java: : Added these for better error messages and error handling
	* src/java/za/org/meraka/dictionarymaker/exceptions/GraphemeInUseException.java: Added these for better error messages and error handling
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java:  added code to display a lsit of missing graphemes
	and let the user select the ones they want to include. NEED TO REMOVE THE WORDS THAT CONTAIN ILLEGAL GRAPHEMES
	* src/java/za/org/meraka/dictionarymaker/utils/GraphemeUtil.java (removeGraphemeFromMissingList): added this method to
	remove graphemes if they are not missing anymore and have been added to the dictionary

2006-07-25  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/algorithms/DefaultAndRefineRules.java (addGrapheme): added lenght + 1 to:
	 dmRule.GraphemeMap.put(grapheme, new Integer(oldGraphemes.length+1)); check comment for why we do this
	(removePhoneme): added    dmRule.updatePhonemeIndices(newPhonemes); to update the phoneme index table after a phoneme was removed
	(removeGrapheme):  added dmRule.updateGraphemeIndices(newGraphemes);to update the grapheme index table after a grapheme was removed
	* src/java/za/org/meraka/dictionarymaker/algorithms/DMRule.java (updatePhonemeIndices): 
	(updateGraphemeIndices): added these two methods to update the index map when phonemes and graphemes are removed from the map
	
	* src-test/java/za/org/meraka/dictionarymaker/model/TestDictionary.java (testRemoveMoreThanOneGrapheme): fixed bug where we could note remove
	more than one phoneme and grapheme when the element was in the middle of the list. Also removing p&g worked fine when removing them from the dictionary but was not 
	removed correctly from the DMrule and some maps: Map GraphemeMap;PhonemeMap was not correclty updated
	(testRemoveMoreThanOnePhoneme): the same as above


2006-07-25  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/messages.properties: Changed label Export > Rules to Rules (g2p and gnull)
	Added strings for Rules Dictionary import panel
	* src/java/za/org/meraka/dictionarymaker/ui/WrappingLabel.java (toString): Added toString to enable Visual Editor to display text on design screen

2006-07-24  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (writeGnullRuleFile): Added method to write gnull rules to file
	* src/java/za/org/meraka/dictionarymaker/algorithms/RuleExtractor.java (getGNullRules): Added method to interface to get gnull rules
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java (getMiExportRules): Added second save file dialog to save gnull rules

2006-07-21  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (writeGnullRuleFile): Added method to export gnulls

2006-07-21  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (addToMissingGraphemeList): add a missing grapheme to this list
	added missingGraphemes list that contains graphemes not in the original grapheme list
	(importWords): added : GraphemeUtil.checkIfGraphemeExists(word); to check if there is new graphemes in 
	the words that can be added later to the dictionary's grapheme list
	
2006-07-19  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeViewer.java (mouseClicked): Removed check for right click only
	(mouseClicked): removed double click check to play sound (first click opens menu second click play sound)

2006-03-17  tfogwill  <tfogwill@users.sourceforge.net>
	* Cleanup of JOptionPane strings. Added ${variable} substitution of
	some UI messages to remove ugly concats.
	* Big messages cleanup
	* Use JoptionPane for ImportSoundFile prompt
	
2006-03-17  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/messages.properties: Added Strings for import fail and count
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java (importButtonActionPerformed): Added message dialog to indicate number of correct and failed graphems imported
	(importButtonActionPerformed): Added message dialog if file import fails on IOException
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (loadGraphemesFromFile): Changed parameters to FileUtil.loadGraphemeFile
	* src/java/za/org/meraka/dictionarymaker/utils/FileUtil.java (loadGraphemeFile): Changed importGraphemes to return a count of correct and failed graphemes

2006-03-16  tfogwill  <tfogwill@users.sourceforge.net>
	* System.out cleanup
	* Several TODO (commented/tagged in code) items addressed
	* Added better system (and debug) logging
	* Removed printStackTrace calls - use loggers instead
	* Big code cleanup (unused imports, unreferenced variables, etc)
	
2006-03-15  tfogwill  <tfogwill@users.sourceforge.net>
	* More Testing code (and resultant code fixes)
	* Added JUnit Report generation to build.xml
	* Test code for new dictionary and arrayutil methods, and resultant bug fixes
	
2006-03-15  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: Play button now AudioButton
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java: Play button now AudioButton
	* src/java/za/org/meraka/dictionarymaker/audio/AudioPlayer.java : Check if audioItem is null 
	(stopPlay): call stopPlay on audioItem
	* src/java/za/org/meraka/dictionarymaker/audio/AudioButton.java: Added classs


2006-03-14  pvzyl  <pvzyl@sourceforge.net>
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (replacePhoneme): added  phonemeA.setAudioFileName(phonemeB.getAudioFileName()); to set the audio file
	* src/java/za/org/meraka/dictionarymaker/ui/RenameDialog.java: added code to rename 'n phoneme
	* src/java/za/org/meraka/dictionarymaker/ui/ReplaceDialog.java:  added code to replace 'n phoneme
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectAdvancedPanel.java: added projectStatusPanel.updateValues(); to update the target dictionary size
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: added PHONEME_DOES_NOT_EXIST error msg
	added the rename and replace buttons and the method calls to the RenameDialog and ReplaceDialog
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeModel.java (removePhoneme): added check if(phonemeEntryToRemove == null){ to ensure we are not
	trying to remove a phoneme that does not exist in the model
	(renamePhoneme): added this method to rename phonemes
	(replacePhoneme): added this method to replace phonemes
	(createSoundDir): changed how we get the projectSoundDirectory
	(getListOfPhonemeNames): Create a list of phoneme names in the dictionary/model
	* src-test/java/za/org/meraka/dictionarymaker/model/TestPhonemeModel.java (testEditPhonemeNameNotPossible): added more test cases for the phonemeModel

2006-03-14  tfogwill  <tfogwill@users.sourceforge.net>
	* Added application icon
	* Added Main-Class to jar manifest
	* Added importing if sound files when importing phonemes
	* Externalised DictionaryMakerMain strings
	* Externalised AboutDialog strings
	* Externalised BaseSettingsPanel strings
	* Externalised BatchStatusPanel strings
	* Externalised ConfigurePhonemePanel strings
	* Externalised ExpandedPhonemePanel strings
	* Externalised GeneralSettingsPanel strings
	* Externalised GraphemePanel strings
	* Externalised ImportWordListPanel strings
	* Externalised NewGraphemeDialog strings
	* Externalised PhonemeDialog strings
	* Externalised PhonemeModel strings
	* Externalised PhonemePanel strings
	* Externalised PhonemeViewer	 strings
	* Externalised ProjectAdvancedPanel strings
	* Externalised ProjectCreatePanel strings
	* Externalised ProjectLocationPanel strings
	* Externalised ProjectPropertiesPanel strings
	* Externalised ProjectStatusPanel strings
	* Externalised RenameDialog strings
	* Externalised ReplaceDialog strings
	* Externalised ReportPanel strings
	* Externalised RuleExtractionProgressDialog strings
	* Externalised SoundPanel strings
	* Externalised WordListPanel strings
	* Externalised WorkspacePreferencesPanel strings
		
2006-03-14  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (btnPlayActionPerformed): Change play button while playing sound, removed stop button
	(checkPlayButtonState): Added method
	(setPlayButtonStateStop): Added method
	(setPlayButtonStatePlaying): Added method
	* src/java/za/org/meraka/dictionarymaker/audio/AudioPlayer.java: Added a queue of AudioItemInterface objects for callback
	 (stopPlay): check if AudioItem is null before stop play
	(getNumberOfFilesinQueue): Added method
	* src/java/za/org/meraka/dictionarymaker/audio/AudioItemInterface.java: Added
	* src/java/za/org/meraka/dictionarymaker/ui/ConfigurePhonemePanel.java : Can be called from menubar
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java (reports): Size of Stistics Dialog smaller
	* src/java/za/org/meraka/dictionarymaker/ui/ReportPanel.java: Changed layout
	added close button
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java (getSelectedWordData): Removed fireEvents (now handled from Util calls)
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java (addNewPhoneme): Check if ExpandedPhonemePanel is null
	layout changes
	(playSoundClip): Get audioplayer from ProjectUtil
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (displayWord): Removed multiple calls to displayWord
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java (addWords): Check if WordlistPanel is null
	layout changed
	Added scrollpane to panel to get borders correct
	* src/java/za/org/meraka/dictionarymaker/utils/ProjectUtil.java (getSoundPanel): Added metohd to access SoundPanel
	(getAudioPlayer): Changed AudioPlayer constructor
	* src/java/za/org/meraka/dictionarymaker/ui/VerificationPanel.java (VerificationPanel): Removed event listeners from Verification panel

2006-03-13  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/EditDictionaryPanel.java (getPnlCenter): added names for the components to be able to test
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: added names for the components to be able to test
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: added names for the components to be able to test
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeDialog.java: added names for the components to be able to test
	* src-test/java/za/org/meraka/dictionarymaker/model/TestPhonemeModel.java (testAddExistingPhonemeToModel): added tests to test
	the phonemeModel
	* src-test/java/za/org/meraka/dictionarymaker/ui/UITestPhonemePanel.java (testPhonemePanelDisplay): added some test cases
	to test that the phonemePanel and PhonemeDialog which are used to manipulate phoneme's
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectAdvancedPanel.java: Added error and value range checking
	corrected spelling mistake
	
2006-03-13  tfogwill  <tfogwill@users.sourceforge.net>

	* Added notification ("event") support to dictionary
	* Minor fixes to make Dictionry pass tests
	* Added AboutDialog
	* Added logo and name to "background" panel
	* prettified credits list
	
2006-03-13  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (displayNextWord): next word will be retreived from WordlistPanel if user select mode is active
	* src/java/za/org/meraka/dictionarymaker/ui/WordListCellRenderer.java (getListCellRendererComponent): setEnabled according to list that contains this renderer
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: Added Statistics panel
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java (addWords):  Update of WordListPanel added
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java (saveAllValues): Update of WordListPanel added
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectAdvancedPanel.java (saveAllValues): Update of WordListPanel added
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java (updateValues): Method to be called when update is required for panel
	(updateValues): Disable word list if select mode is system
	(resetSelection): if system selection is selected the wordlist filter will be reset to unverified words
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java (addNewPhoneme): Call projectUtil to update phonemeView
	* src/java/za/org/meraka/dictionarymaker/ui/ExpandedPhonemePanel.java (updateValues): To be called when update is requered by orther component
	* src/java/za/org/meraka/dictionarymaker/utils/ProjectUtil.java (getExpandedPhonemePanel): Added method to access ExpandedPhonemePanel and update
	(getWordListPanel): Added method to access WordListPanel

2006-03-10  Andries  <avrensbu@csir.co.za>

	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java: fire event when word status changes to add to history list in WordListPanel
	* src/java/za/org/meraka/dictionarymaker/ui/VerificationPanel.java: Added propertyChangeListeners to SoundPanel and WordListPanel
	to handle events when selecting words from list
	* src/java/za/org/meraka/dictionarymaker/ui/WordListPanel.java (WordListPanel): Renamed from StatusPanel
	loads wordlist from dictionary, set word in history if word status changes
	Added checkboxes to filter by WordData state
	Moved status checkboxes to top of list
	* src/java/za/org/meraka/dictionarymaker/ui/ExpandedPhonemePanel.java (populate): Sort phonemes list before adding to panel
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeViewer.java (isInUse): Setborder to line if in use (on worddisplaypanel)
	* src/java/za/org/meraka/dictionarymaker/model/Phoneme.java (equals): Implements comparable on name
	

2006-03-10  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: changed the default sizes of the dialogs
	* src/java/za/org/meraka/dictionarymaker/ui/WorkspacePreferencesPanel.java: This classed is used to edit workspace settings
	added the save and workspace location chooser
	* src/java/za/org/meraka/dictionarymaker/ui/BaseSettingsPanel.java: changed the name that is displayed in the list
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: added setTitledBorderTitle to set the border titels
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectPropertiesPanel.java: added ProjectAdvancedPanel
	changed the treeSet to hashSet. Don't want sorting of items
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectAdvancedPanel.java: This panel is used to set and display the target dictionary size.
	it is used under the project properties
	changed the layout of components
	added the saveAll method 
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeModel.java (populatePhonemeModel): added this method to check if there exist an model
	and then either create a new one and add phoneme's to it or add to the existing model
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: added code in the loadPhonemeFile 
	to check and add to an existing phonemeModel
	added insets for buttons

2006-03-10  tfogwill  <tfogwill@users.sourceforge.net>

	* Added conditional setting of project to dirtty (only if really changed)
	* When auto selecting next word to show, only consider unverified words
	* Added command line arg (i.e. project file to open)
	* Added error hnadling when closing app
	* Added util for centering components
	* Added ability to rename phonemes to Dictionary (and algorithmic classes)
	* Added ability to replace one phoneme with another
	* Fixed status updating and rule generation when changing word status
	* Cleaned up code by adding helper methods to Project to handle project settings
	* Added default project workspace support to New Project Creation dialog
	* Added icons to menus
	* Changed some names of items in settings panels
	* Added rule export
	* Made collapsible panel nicer (uses icons now). Still need prettier icons, though
		
2006-03-10  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: setDirty on word edit
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeViewer.java : on dragdrop end if this is in use fire propertychange "remove" 
	* src/java/za/org/meraka/dictionarymaker/ui/EditDictionaryPanel.java (getWordPanel): Words
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePanel.java (ProjectCreatePanel): set grapheme panel before wordlist
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java (displayWord): set new phonemeviewers that is passed 
	to worddisplay panel to inuse (needed for remove popup to be enabled and drag-move to work)

2006-03-09  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: added code to work in dictionary edit screen
	* src/java/za/org/meraka/dictionarymaker/settings/ProjectSettings.java: set default phoneme columns to 3 (fits better)
	* src/java/za/org/meraka/dictionarymaker/ui/EditDictionaryPanel.java: Added wordlistpanel	
	* src/java/za/org/meraka/dictionarymaker/ui/WordDisplayPanel.java (propertyChange): remove selected phoneme
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeViewer.java (mouseClicked): Popupmenu will hide when mouse exit
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: audioplayer from ProjectUtil now used
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java: Added stop button action (ProjectUtil.getAudioPlayer.stopPlay())
	added word status and changed layout
	* src/java/za/org/meraka/dictionarymaker/audio/AudioPlayer.java: Removed phomene references
	* src/java/za/org/meraka/dictionarymaker/utils/ProjectUtil.java (getAudioPlayer): Added a getAudioPlayer method

2006-03-09  tfogwill  <tfogwill@users.sourceforge.net>

	* Added methods to Dictionary fto extract counts for reporting purposes
	* Added intelligent getTargetDictionarySize method to Project.
	* Added removeRecentProject method to History
	* Added Batch size tracking
	* Added updating of status panels
	* Added batch rule extraction control
	* Added progress display for rule extraction process
	* Added Dictionary testing to TestDMRule
	* Fixed handling of updatemode in BatchStatusPanel and SoundPanel
	* Added updating of status panels when  settings change
	* Added setting of "dirty" for project
	* Added updating of Dictionary's handling incremental ruleset updates when settings change
	* Added setting of Dictionary's handling incremental ruleset updates when project is loaded
	* Fixed minor bug in Dictionary (extractor notified twice when graphemes added in batch mode)
	* Added more updaing of menu items when projects created/opened/
	
2006-03-09  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeTableEntry.java (equals): added equals method to now when to remove and 
	entry. We are only using the phoneme name as  the categories and sound clips may change
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeDialog.java (PhonemeDialog): renamed NewPhonemeDialog.java to PhonemeDialog.java
	as it is not only used for adding. added editPhoneme
	* src/java/za/org/meraka/dictionarymaker/utils/Constants.java: removed the / in SOUND_FILE_LOCATION ="sounds";
	* src/java/za/org/meraka/dictionarymaker/ui/NewPhonemeDialog.java: added tempSoundFile to store the File that was selected as sound clip
	and also setting dirty on the project
	* src/java/za/org/meraka/dictionarymaker/model/Phoneme.java (Phoneme): added category.addPhoneme(this);
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: removed
	the cancel and save buttons. Added a close button and are saving the project when close is pressed. Also setting dirty on the project
	removed saving of project on close
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: added the playing of sound clips and removed
	the cancel and save buttons. Added a close button and are saving the project when close is pressed. Also setting dirty on the project
	renamed NewPhonemeDialog.java to PhonemeDialog.java and removed saving of project
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeModel.java (addNewPhoneme): added createSoundDir and 
	createSoundClip(soundFile) to create sound clips of phoneme's as they are added.
	(editPhoneme): added editPhoneme to be able to change sound clips and categories of phoneme's
	* src/java/za/org/meraka/dictionarymaker/ui/NewGraphemeDialog.java (saveNewGrapheme): addded setDirty
	
2006-03-08  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: NB: a lot of changes!
	I removed enableShowCustomSettings and replaced with viewProjectSettings. Added method setValuesOfCurrentProject to reset the project settin values once
	we are using custom settings again. Adde code in the constructors and the checkbox creation code so that components
	can be enabled and disabled accodring to the project settings.
	removed redundant code
	* src/java/za/org/meraka/dictionarymaker/settings/BaseSettings.java (exportSettings): KEY_UPDATE_MODE was using selectMode insteadof updateMode
	* src/java/za/org/meraka/dictionarymaker/utils/DictionaryMakerUtil.java (getSettings): removed hasProjectSettings as we will use
	useProjectSettings in ProjectSettings class
	* src/java/za/org/meraka/dictionarymaker/model/Project.java: removed hasProjectSettings as we will use
	useProjectSettings in ProjectSettings class
	* src/java/za/org/meraka/dictionarymaker/model/Category.java (removePhoneme): added this method to remove phonemes that
	are not associated with this category anymore or are removed from the project and dictionary
	* src/java/za/org/meraka/dictionarymaker/utils/ProjectUtil.java (getCategory): replaced the call to add the gategory to 
	getOpenProject().addCategory(new Category(category));
	* src/java/za/org/meraka/dictionarymaker/ui/NewPhonemeDialog.java (NewPhonemeDialog): busy ADDING EDITING OF PHONEMES
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: added method removePhoneme() to remove a phoneme from the dictionary and table
	model. BUSY adding the editing of phonemes and the playing of sound clips
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectPropertiesPanel.java: selected/highlighted the first item if the settings lists
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeModel.java (removePhoneme): removes the phoneme from the dictionary and table model
	(addNewPhoneme): cleaned up and renamed the method from saveNewPhoneme to addNewPhoneme
	* src/java/za/org/meraka/dictionarymaker/ui/NewGraphemeDialog.java (saveNewGrapheme): added a check to make sure grapheme's are single
	characters.
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: added method removeGrapheme to remove graphemes
	* src/java/za/org/meraka/dictionarymaker/ui/EditDictionaryPanel.java: selected/highlighted the first item if the settings lists
	* src/java/za/org/meraka/dictionarymaker/ui/BaseSettingsPanel.java: selected/highlighted the first item if the settings lists

2006-03-08  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeViewer.java (PhonemeViewer): added popupmenu (no action yet)
	* src/java/za/org/meraka/dictionarymaker/ui/SoundPanel.java: layout changes
	* src/java/za/org/meraka/dictionarymaker/ui/StatusPanel.java: changed preferredsize
	* src/java/za/org/meraka/dictionarymaker/ui/VerificationPanel.java: removed dragdrop code
	* src/java/za/org/meraka/dictionarymaker/ui/WordDisplayPanel.java (getJPopupMenu): added popupmenu to add phonemes

2006-03-08  tfogwill  <tfogwill@users.sourceforge.net>

	* Add save() method to Settings interface
	* Changed wording on System Prefs dialog and Project Properties Dialog
	* Added UseCustomSettings to ProjectSettings
	* Made Dictionary file loading more tolerant - it now corerctly loads lines with null phonemes 
	* Added extraction of rules to DMRule creation
	* Only add valid words to DMRule
	* Added (ugly for now) testing of DMrule (runs new & old: compare results)
	* Fixed Dictionary to return Phonene[] from PredictWord
	* Fixed soundPanrl to pass valid type (PhonemeViewer) to WordListDisplayPanel

2006-03-07  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/utils/Constants.java: added SOUND_FILE_LOCATION
	* src/java/za/org/meraka/dictionarymaker/model/Project.java: changed the package of Settings
	* src/java/za/org/meraka/dictionarymaker/ui/BatchStatusPanel.java: changed the package of Settings
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMaker.java: removed imports that was not used
	* src/java/za/org/meraka/dictionarymaker/utils/DictionaryMakerUtil.java: changed the package of Settings and UserSettings
	* src/java/za/org/meraka/dictionarymaker/settings/UserSettings.java (getProjectWorkspaceDirectory):  moved all settings classes from util and project
	packages to package settings
	* src/java/za/org/meraka/dictionarymaker/settings/Settings.java:  moved all settings classes from util and project
	packages to package settings
	* src/java/za/org/meraka/dictionarymaker/settings/ProjectSettings.java:  moved all settings classes from util and project
	packages to package settings
	* src/java/za/org/meraka/dictionarymaker/settings/BaseSettings.java: moved all settings classes from util and project
	packages to package settings
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeModel.java (saveNewPhoneme): replaced fireTableCellUpdated(rowList.size(), 0); with
	general fireTableDataChanged();.
	(getCategory): moved the creation of the Category and are now using the string that was passed in. Removed refresh method
	* src/java/za/org/meraka/dictionarymaker/ui/NewPhonemeDialog.java (saveNewPhoneme): removed this.getPhonemeModel().refresh(); the model
	now fires a data change event when a phoneme is added 
	(saveNewPhoneme): removed the if as it was only checking for empty or new but not existing elements in the list. And the
	checking is done in the phonemeModel for empty en null categories in any case
	(getCmbCategories): selected the first item/category if there are categories
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: mmoved the creation of the phonemeModel  before
	adding the visual components in the constructors
	added the close method
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: set dialogs to be able to resize
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: added the close method for closing
	Added getListModel to create the a list model that contains the dictionary's grapheme's. 
	Added the call getLstGrapheme().setModel(getListModel()); to method addNewGrapheme() to refresh the list model
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: added the saveAllValues method for saving
	all settings when the save button is pressed. Added the close method for closing the panel when cancel is pressed.
	Added comments and added logic to check if we are in auto or batch mode. If we are in auto then batch size and switch to batch size txt fields
	are enabled.If we are in batch mode batch size is enabled. REMOVED EVENT HANDLING of individual  components where saving of values where done.
	The saveAllValues method save the values.
	changed the package of Settings


2006-03-07  tfogwill  <tfogwill@users.sourceforge.net>

	* added Quilt task to build file.
	* added Filename Filters to file choosers
	* added History support to filename filters
	* move save from Dictionary into FilUtil
	* Added save and export functionality
	* fixed RecentProjects menu handling
	* improved History
	* Added Close and Exit menu items
	* Added status panels to main layout 
	

2006-03-07  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java (openProject): set new project before load
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: replaced JLabels with WrappingLabels
	* src/java/za/org/meraka/dictionarymaker/ui/WrappingLabel.java: added
	* src/java/za/org/meraka/dictionarymaker/model/Project.java (getPhonemeCatagoryMap): null check
	(load): can open project
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java (loadPhonemeFile): adds phonemes correctly to dictionary


2006-03-06  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java:  load file with FileUtil
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: load file with FileUtil
	* src/java/za/org/meraka/dictionarymaker/project/ProjectSettings.java (load): sets project name to name insteadof dir
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java (addWords):  check that dictionary is nor null
	 load file with FileUtil
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java (openProject):  get project name from project.settings
	(openProject): call load on project to load settings and dictionary
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectLocationPanel.java: set project name in project.settings
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePanel.java: get project name from project.settings
	saves words to wordlist instead of dictionary
	* src/java/za/org/meraka/dictionarymaker/model/Project.java: removed get set name from project (now in settings)
	(load): added load method to load all files for project


2006-03-06  pvzyl  <pvzyl@sourceforge.net>

	* src-test/java/za/org/meraka/dictionarymaker/ui/UITestProjectSettings.java (setUp): changed to instantiate ProjectPropertiesPanel()	
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: added a panel with save and cancel buttons.
	Added a boolean: enableShowCustomSettings to display or hide this panel and added enableComponents() method to disable the components
	if we are not overwriting/changing the default settings. Add event method itemStateChanged for getRbtnCustomSettings to enable the 
	the components if we are changing the default settings
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: Added methods to display dialogs: changeDefaultSettings, editDictionary
	and changeProjectProperties.
	added a check to enable the Project menu if a project exists in: openProject and createNewProject 
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectPropertiesPanel.java: NEW->  This is the main panel for changing project related settings/properties
 	It can use or override the default application wide settings
	changed the constructor for creating a GeneralSettingsPanel to ->new GeneralSettingsPanel(true); the true. This has the effect of showing the radio button for 
	overriding default settings
	* src/java/za/org/meraka/dictionarymaker/ui/BaseSettingsPanel.java: NEW->This is the main panel for changing application wide default settings. It
 	has a list of settings that can be changed.
	* src/java/za/org/meraka/dictionarymaker/ui/EditDictionaryPanel.java: NEW->This is the main panel for editing phoneme's and grapheme's that are 
 	in the dictionary of the project.
	Changed the grapheme and phoneme panel names so that they are consistent 
	* src/java/za/org/meraka/dictionarymaker/ui/NewGraphemeDialog.java (saveNewGrapheme): removed the code to check if a project and grapheme
	list exists. The contract must be that when you get to this panel a project must exist.
	 The code that controls access to this panel must ensure this.
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java (PhonemePanel): initialize the table model if a project exists 
	(addNewPhoneme): added firePropertyChange. the project creation uses the change event to go to the next step
	(addNewPhoneme): uses the constructor where we MUST pass a phonemeModel.
	(getPnlPhonemeList): changed the heading to "Phonemes"
	added save and cancel buttons and added the enableSaveCancelButtons boolean to enable and disable the save and cancel buttons
	* src/java/za/org/meraka/dictionarymaker/ui/NewPhonemeDialog.java (NewPhonemeDialog): added this new constructor and passes 
	in the phonemeModel to add new phoneme's too.
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeModel.java (saveNewPhoneme):  added the new phoneme to the projects
	dictionary and added the ability to return error states/messages
	added some comments stating its purpose
	(getListOfCategoryNames): the current list of categories that exist
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: addNewGrapheme() added the firePropertyChange
	to this method so that the creation of a project can continue
	
	removed the replaceGrapheme button.
	added the enableSaveCancelButtons boolean to enable and disable the save and cancel buttons that was added

2006-03-06  Andries  <avrensbu@temp>	
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: setName on some components for jfcunit
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: setName on some components for jfcunit
	import word list only once :)
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: fixed layout
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: adding phonemes to dictionary and categories to project
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePanel.java (completed): setName on some components for jfcunit
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (saveToFile): check that wordData.getPhonemes is not null

2006-03-06  tfogwill  <tfogwill@users.sourceforge.net>

	* Implemented TODO items in BatcchStatusPanel and ProjectStatusPanel
	* Edited WordData constructor to ensure that phoneme array is initialised
	* Added "stats" methods to Dictionary
	* Added unit testing for Dictionary
	* Renamed UI test cases to allow conditional execution of JFCUnit tests
	* Made all tests pass for Dictionary!
	* Fixed dictionary to work with ans store Phonene objects (not strings)
	* Fixed DMRule to use standard Log infrastructure
	* Moved Dictionary's loading code into FileUtil

2006-03-03  tfogwill  <tfogwill@users.sourceforge.net>

	* Reworked settings system completely. We now have UserSettings, 
	ProjectSettings, and History.
	* Added loading/saving of settings
	* Added TestCase for ArrayUtil
	
2006-03-03  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMaker.java (DictionaryMaker): removed the creation of a project
	at this point
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: added the titled border and renamed
	the buttons to shorter names. Removed the assign sound button.
	removed assignNewSoundClip
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: added menu items for editing
	dictionary and setting default and project properties
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectSettingsPanel.java: added the list to a panel and
	added insets around the list
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: replaced ProjectUtil.getOpenProject().getSettings()
	with the DictionaryMakerUtil and added the titled border
	* src/java/za/org/meraka/dictionarymaker/model/Project.java: added hasProject settings to indicate that the project
	overwrites the general/global settings
	* src/java/za/org/meraka/dictionarymaker/project/Settings.java:  This interface represents the settings that is need by the system
	* src/java/za/org/meraka/dictionarymaker/utils/DictionaryMakerUtil.java (getSettings): Utility class to determine
	which settings to return: the global settings or project specific settings.
	* src/java/za/org/meraka/dictionarymaker/project/GeneralSettings.java: added auto to updateModes

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeModel.java (PhonemeModel): Removed PhonemeTableModel and replaced it
	with this class. 



2006-03-03  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: removes word form dictionary, fire propery changed
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePanel.java: saving graphemes and phonemes to file
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: list now on scrollpane
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (saveGraphemesToFile): added method
	(savePhonemesToFile): added method

2006-03-02  tfogwill  <tfogwill@users.sourceforge.net>

	* Moved phoneme and grapheme control out of Project, and into Dictionary
	* Removed control of incremental/batch updates out of DMRule
	* Added incremental rule support to dictionary
	* Made DMRule handling of null phonemes more robust
	* Made DMRule generate full rule set when switching to incremental mode, to 
	  ensure that we work with an intact ruleset.
	* Added methods to add/remove words/graphemes/phonemes from RuleExtractor
	* Added utils for dealing with matrices and arrays
	* Added UserSettings handling
	* Added "Open Recent" menu
	
2006-03-02  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreateGraphemePanel.java: will remove after grapheme panel implements ProjectCreateInterface
	* src/java/za/org/meraka/dictionarymaker/ui/NewGraphemeDialog.java (initialize): removed java 1.5 code
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java (addWords): imports words directly into Dictionary
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectLocationPanel.java: removed parameter from constructor
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: implemented ProjectCreateInterface
	fixed phoneme import
	sets new PhonemeTableModel on import
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreateInterface.java (getComponentTitle): renemes from getTitle
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java (addNewGrapheme): removed java 1.5 code
	added importing from file
	* src/java/za/org/meraka/dictionarymaker/ui/VerificationPanel.java: layout change for phonemes
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePanel.java: now using phonemepanel instead of projectcreatephonemepoanel

2006-03-02  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePhonemePanel.java (loadPhonemeFile): commented out the call to get the phoneme list panel. 
	The list is replaced with table
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeTableEntry.java:  is used to represent an object/phoneme in a row in a table.
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeTableModel.java: is used to display phonemes in a table.
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: Dispay a dialog to create and add new grapheme's
	and rewrote the class as it was created in Netbeans previously
	* src/java/za/org/meraka/dictionarymaker/model/Project.java (addCategory): add a category
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: added the NewPhonemeDialog to add phonemes 
	and a method to re-assign sound clips
	Added a table to display phoneme's and PhonemeTableModel to help with the display of the phoneme model
	* src/java/za/org/meraka/dictionarymaker/ui/NewPhonemeDialog.java: added this dialog to create and save new phoneme's.
	and assign a new sound clip
	* src/java/za/org/meraka/dictionarymaker/ui/NewGraphemeDialog.java: added this dialog to create and save new grapheme's
	* src/java/za/org/meraka/dictionarymaker/ui/RenameDialog.java: added preferred size

2006-02-28  tfogwill  <tfogwill@users.sourceforge.net>

	* Implemented the algorithms by wrapping (modified) DMrule from old project
	
2006-02-28  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreateGraphemePanel.java: added grapheme import from file
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePanel.java: check state for complete button 
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: added public method to set data in list
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePhonemePanel.java: added phoneme import
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java (getLstPhonemes): method access to public

2006-02-27  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: added dialog to add new word (check rules for remove and edit)

2006-02-27  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java:  moved the buttons to the east and made the layout gridbag.
	Also changed the layout of the panel with the scrollpane and list to gridbag layout with insets of 10 all around
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: moved the buttons to the east and made the layout gridbag.
	Also changed the layout of the panel with the scrollpane and list to gridbag layout with insets of 10 all around
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: added the method to create the project settings
	panel when the "Management" menu item is selected

2006-02-27  tfogwill  <tfogwill@users.sourceforge.net>

	* split algorithm into separate rule extractor and predictor interfaces/algorithms
	* added BatchStatusPanel ProjectStatusPanel PronunciationPredictor
	* 

2006-02-24  pvzyl  <pvzyl@sourceforge.net>

	* build.xml: added task run-tests that uses junit to run all the test cases (junit and jfcunit)
	run-test task made dependant on test-jar
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectSettingsPanel.java: added PhonemePanel
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: added more menu bars and menu items for
	changing project related settings.
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemePanel.java: added a phoneme panel to edit phoneme's
	added scrollpane for the phoneme list

2006-02-24  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePhonemePanel.java: added class
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java (getSortedList): Not using Collections.copy
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMakerMain.java: setViewPanel method to add panels to parent frame		
	* src/java/za/org/meraka/dictionarymaker/ui/ExpandedPhonemePanel.java : added javadoc
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: implements ProjectCreateInterface
	firePropertyChange("data", false, true) to indicate if project word list is imported
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectLocationPanel.java: implements ProjectCreateInterface
	(genericTextFieldKeyReleased): firePropertyChange("data", false, true) to indicate if project directory is in a valid location
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreateGraphemePanel.java: added class
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreateInterface.java: added interface for project create steps
	* src/java/za/org/meraka/dictionarymaker/utils/ProjectUtil.java (setPreviousProject): added get, set previous project
	to be able to rewvert to previous project if project create gets canceled
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectCreatePanel.java: added class
	fixed button disable for next button
	added phonemepanel

2006-02-23  tfogwill  <tfogwill@users.sourceforge.net>

	* Made project/category/phoneme relationship more robust
	* Added panel components for Project/Dictionary and for the current Batch
	* Added import facility to dictionary (to import wordlist)

2006-02-23  pvzyl  <pvzyl@sourceforge.net>

	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: added the event handling
	code for all the jcomponents. It uses the ProjectUtil to get and change the project settings
	* src/java/za/org/meraka/dictionarymaker/project/ProjectSettings.java: added updateModes and selectMode arrays	
	* src/java/za/org/meraka/dictionarymaker/ui/GeneralSettingsPanel.java: added the event handling
	code for all the jcomponents. It uses the ProjectUtil to get and change the project settings
	
2006-02-23  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeViewer.java: added more javadoc
	* src/java/za/org/meraka/dictionarymaker/ui/ImportWordListPanel.java: added more javadoc
	* src/java/za/org/meraka/dictionarymaker/ui/ExpandedPhonemePanel.java: added more javadoc


2006-02-23  pvzyl  <pvzyl@sourceforge.net>

	* src-test/java/za/org/meraka/dictionarymaker/ui/ProjectSettingsUITest.java (setUp): test case to test the project settings panel
	* build.xml: added clean,directories,jar tp compile-test task and 
	added build test jar task

2006-02-22  tfogwill  <tfogwill@users.sourceforge.net>

	* Removed Grapheme class: not needed
	* Added utility to ProjectUtil to get categories
	* Cleaned up and extended Phoneme and Category, and added javadoc comments
	* Extended Project to enable loading of grapheme and phoneme files
	* Extended Dictionary to enable loading and saving of dictionary files

2006-02-22  pvzyl  <pvzyl@sourceforge.net>

	* src-test/java/za/org/meraka/dictionarymaker/testing/DictionaryMakerTestCase.java (getTestProject): the same as below.
	Need to refactor
	* src-test/java/za/org/meraka/dictionarymaker/testing/DictionaryMakerUITestCase.java (getTestProject): returns a dumy
	test project for testing on
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectSettingsPanel.java: added a panel to the center, made the layout
	card to be able to switch between panels in the center.

2006-02-21  tfogwill  <tfogwill@users.sourceforge.net>

	* Added cruisecontrol support
	* Added WordData class to handle word/pronunication pairs
	
2006-02-21  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/ui/WordListCellRenderer.java: fixed selection color
	* src-test/java/za/org/meraka/dictionarymaker/ui/ProjectLocationPanelUITest.java: added class
	* src/java/za/org/meraka/dictionarymaker/ui/ProjectLocationPanel.java: added class
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMaker.java (main): sets new project as default for testing

2006-02-21  pvzyl  <pvzyl@sourceforge.net>

	* build.xml: added clean to compiling task

2006-02-20  tfogwill  <tfogwill@users.sourceforge.net>

	* Made proper Dictionary class to handle the pronunciation dictionary
	* Added framework for impl of Default&Refine rule extraction algorithm
		
2006-02-20  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java: added java doc
	* src/java/za/org/meraka/dictionarymaker/model/Project.java: added project settings and dictionary 
	* src/java/za/org/meraka/dictionarymaker/project/ProjectSettings.java: added project variables for project settings

2006-02-20  pvzyl  <pvzyl@sourceforge.net>

	* build.xml: added the task to compile the unit tests.
	* build.properties.example: added jfcunit
	 added build.test.dest and java.test.src.dir
	* src-test/java/za/org/meraka/dictionarymaker/testing/DictionaryMakerUITestCase.java: the general test case to test Swing/AWT components.
	* src-test/java/za/org/meraka/dictionarymaker/ui/RenameDialogUITest.java: Uses JFCUnit to test the RenameDialog
	(tearDown): removed deprecated methods to find components.
	* src-test/java/za/org/meraka/dictionarymaker/testing/DictionaryMakerTestCase.java (DictionaryMakerTestCase): added this class to be a general 
	test case for the project
	* src-test/java/za/org/meraka/dictionarymaker/testing/DictionarymakerUITestSuite.java (suite): test suit for all the ui test cases
	* src/java/za/org/meraka/dictionarymaker/ui/RenameDialog.java: This dialog is a generic dialog to be used to rename 
	* phoneme's and grapheme's from their old name to their new name. 	added names for the textfields	
	* src/java/za/org/meraka/dictionarymaker/ui/GraphemePanel.java: Panel used to manipulate graphemes.

2006-02-17  tfogwill  <tfogwill@users.sourceforge.net>

	* Added CheckStyle support
	* Added FindBugs support

2006-02-17  Andries  <avrensbu@temp>

	* src/java/za/org/meraka/dictionarymaker/project/ProjectSettings.java: moved Constants to project.ProjectSettings
	* src/java/za/org/meraka/dictionarymaker/model/Word.java (compareTo): comparable by ordinal value
	added get/set status and status types
	* src/java/za/org/meraka/dictionarymaker/model/Category.java: chaneged hashset to arraylist to preserve loaded order
	* src/java/za/org/meraka/dictionarymaker/model/Dictionary.java: moved list og catagories to project
	* src/java/za/org/meraka/dictionarymaker/ui/PhonemeViewer.java: fixed border size that phoneme view does not jump when panel scrollbar is visible
	* src/java/za/org/meraka/dictionarymaker/ui/ExpandedPhonemePanel.java: added config button 
	* src/java/za/org/meraka/dictionarymaker/ui/DictionaryMaker.java (DictionaryMaker): set parentframe in Constants
	* src/java/za/org/meraka/dictionarymaker/utils/Constants.java: Added singleton

2006-02-15  tfogwill  <tfogwill@users.sourceforge.net>

	* added lib and bin directories
	* added launch script
	
2006-02-09  tfogwill  <tfogwill@users.sourceforge.net>
	* created new directory structure
	* fixed javadoc task in build.xml
	* Add new(better) ant build filesi	
	* Add dictionary data (for testing)
	* created Project Notes file
	* created base package structure
	* Added coding conventions doc
	
