Icon Morse Practice

This page describes the Java source files used by MorsePractice, debug logs, and provides some information on the Sun audio classes MorsePractice uses.

Java Source Files

Here are the Java source files used by the application. You may use them to develop your applets and applications for personal use or "Open Source" distribution. Click here for documentation on the Java classes and methods.
src.zip
src.zip contains all Java source files in a 100 Kbyte ZIP archive.
AlertDialog.java
AlertDialog.java displays a simple text dialog.
AppletFramework.java
AppletFramework.java runs an Applet in an application context.
AudioSynthesizer.java
AudioSynthesizer.java creates the signal source (either a tone or silence) that will be played. It is not a general audio synthesizer, but is useful only for Morse Code. It is based on SynthAudioClip.java, Copyright © 1996 by Jef Poskanzer. Please see SynthAudioClip.java for the original source, copyright, and disclaimers.
Comparable.java
Comparable.java is an interface used by the Sort class.
EditTextArea.java
EditTextArea.java is a text area that supports the Edit Menu, including Undo.
EditTextAreaListener.java
EditTextAreaListener.java is the interface that connects an EditTextArea to the component that manages the Edit Menu.
EtchedBorder.java
EtchedBorder.java draws eye-candy for the user interface. It is based on software developed by Taligent Inc. See the source code for Taligent's copyright and permission notice.
IntegerField.java
IntegerField.java is a dialog field that only accepts integer values.
KochTextField.java
KochTextField.java is a text field that shows and selects the symbols used for Koch random symbol training..
Main.java
Main.java is a trivial main program that simplifies starting MorsePractice on Windows or Linux.
MacFileUtilities.java
MacFileUtilities.java contains several Macintosh (MRJ) file management utilities. They were written using Java class reflection so they should compile and run on all Java 1.1 implementations (and do nothing on non-Macintosh environments).
MorseCode.java
MorseCode.java contains the table of Morse Code characters.
MorseCodeSender.java
MorseCodeSender.java converts a Morse Code symbol to tones. It understands the sun.audio data format.
MorsePractice
MorsePractice is a stand-alone MacOS application that runs MorsePractice directly. This is all you need to run MorsePractice on a MacOS system that supports MRJ version 2.2 or later.
MorsePractice Run
"MorsePractice Run" is a stand-alone MacOS application that launches the application from MorsePractice.jar. If you put this file and MorsePractice.jar into the same folder, you should be able to run MorsePractice on MRJ 2.1.4, however this is untested.
MorsePractice.java
MorsePractice.java is the main program. It contains the user interface.
MorsePractice.gif
MorsePractice.gif is a decorative image.
MorsePractice.hqx
MorsePractice.hqx is a Macintosh archive containing the double-clickable application.
MorsePractice.html
MorsePractice.html defines a web page that contains the applet.
MorsePractice.mcp
MorsePractice.mcp is the MetroWerks java project.
MorsePractice.mf
MorsePractice.mf is the JAR manifest file.
MorsePractice.rsrc
MorsePractice.rsrc contains icons for the MorsePractice application. It is only used by the Macintosh build procedure.
MorsePracticeFile.java
MorsePracticeFile.java has some file utilities. Although this class uses Macintosh-specific routines to manage the Mac creator and filetype information, it should work correctly on all Java 1.1 implementations.
MorsePracticeSupport.html
MorsePracticeSupport.html is this software description file.
MRJApp.properties
MRJApp.properties configures the MacOS application.
RandomQSO.java
RandomSentence.java generates random QSO's using RandomSentence.java to do the generation."
RandomSentence.java
RandomSentence.java generates random sentences from a context-free grammar. It is based on a C utility I wrote in 1979 and, originally, on a sample in James Gimpel's "Algorithms in SNOBOL4."
readme.txt
readme.txt provides an overview of how to install the sofware.
ResultPanel.java
ResultPanel.java shows the text that was sent with incorrectly-received symbols indicated.
RotateImageFilter.java
RotateImageFilter.java is an.ImageFilter that rotates the source image by 90 degrees. The VerticalLabel class uses it to draw the confusion matrix label.
Sort.java
Sort.java is a generic sort utility.
Trial.java
Trial.java manages a random text trial.
TrialChar.java
TrialChar.java holds one symbol in a listening trial.
TrialData.java
TrialData.java performs the numerical computation displayed by TrialDialog.java.
TrialDialog.java
TrialDialog.java displays the results of a random text trial.
TrialLabel.java
TrialLabel.java displays confusion matrix row and column labels.
TrialMatrix.java
TrialMatrix.java displays the confusion matrix content.
TrialPair.java
TrialPair.java is the data retained by a random text trial.
TrialScrollPanel.java
TrialScrollPanel.java contains the entire confusion matrix and its row and column labels.
VerticalLabel.java
VerticalLabel.java draws a string rotated 90 degrees for one of the confusion matrix labels..

The Sun Audio Package

MorsePractice uses non-standard Java classes to generate sound. Here are some links that helped me learn how to use these classes:

Please contact me if you find any bugs in MorsePractice.

Recent changes and bug-fixes

Copyright © 1999-2000 Martin Minow. All Rights Reserved.

Permission to use, copy, modify, and redistribute this software and its documentation for personal, non-commercial use is hereby granted provided that this copyright notice and appropriate documentation appears in all copies. This software may not be distributed for fee or as part of commercial, "shareware," and/or not-for-profit endevors including, but not limited to, CD-ROM collections, online databases, and subscription services without specific license. The author makes no expressed or implied warranty of any kind and assumes no responsibility for errors or omissions. No liability is assumed for any incidental or consequental damages in connection with or arising out of the use of the information or program.