Index: trunk/src/tmcsim/common/RevisionNumber.java
===================================================================
--- trunk/src/tmcsim/common/RevisionNumber.java	(revision 6)
+++ trunk/src/tmcsim/common/RevisionNumber.java	(revision 365)
@@ -2,4 +2,6 @@
 
 import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
 import java.util.Scanner;
 import java.util.logging.Level;
@@ -15,10 +17,38 @@
  * @author jdalbey
  */
-public class RevisionNumber
+public final class RevisionNumber
 {
 
     private static Logger logger = Logger.getLogger("tmcsim.common");
     // Read the subversion revision info and return it
-
+    /**
+     * Read the version number from the application properties. The file
+     * 'application.properties' is generated by build.xml.
+     *
+     * @return a version string obtained from application.properties file, or
+     * "Version: unknown" if an IOerror prevents us from reading the file.
+     */
+    public static String getAppVersion()
+    {
+        String propfilename = "/tmcsim/application.properties";
+        String propKey = "Application.revision";
+        String version = "unknown";
+        try
+        {
+            Properties props = new Properties();
+            props.load(RevisionNumber.class.getResourceAsStream(propfilename));
+            version = (String) props.get(propKey);
+        } catch (IOException ex)
+        {
+            Logger.getLogger("tmcsim/common").log(Level.SEVERE,
+                    "getAppVersion(): IOError reading " + propfilename);
+        } catch (NullPointerException npe)
+        {
+            Logger.getLogger("tmcsim/common").log(Level.SEVERE,
+                    "getAppVersion().load:  Missing file: " + propfilename);
+        }
+        return "revision: " + version;
+    }
+    
     /**
      * Return the version number as a string. The revision number is generated
