language selector, bug fixed
[debian/openrocket] / src / net / sf / openrocket / startup / Application.java
index ec51721458c19a60c40c601da72f64d1a91dbb97..a7847d32b82692e6bbc04ca3fc1d73915e24a7e6 100644 (file)
@@ -1,6 +1,10 @@
 package net.sf.openrocket.startup;
 
-import net.sf.openrocket.database.MotorSetDatabase;
+import net.sf.openrocket.database.ThrustCurveMotorSetDatabase;
+import net.sf.openrocket.l10n.ClassBasedTranslator;
+import net.sf.openrocket.l10n.DebugTranslator;
+import net.sf.openrocket.l10n.ExceptionSuppressingTranslator;
+import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.logging.LogHelper;
 import net.sf.openrocket.logging.LogLevel;
 import net.sf.openrocket.logging.LogLevelBufferLogger;
@@ -16,14 +20,14 @@ public final class Application {
        private static LogHelper logger;
        private static LogLevelBufferLogger logBuffer;
        
-       private static MotorSetDatabase motorSetDatabase;
+       private static Translator baseTranslator = new DebugTranslator(null);
        
+       private static ThrustCurveMotorSetDatabase motorSetDatabase;
+       
+
        // Initialize the logger to something sane for testing without executing Startup
        static {
-               logger = new PrintStreamLogger();
-               for (LogLevel l : LogLevel.values()) {
-                       ((PrintStreamLogger) logger).setOutput(l, System.out);
-               }
+               setLogOutputLevel(LogLevel.DEBUG);
        }
        
        
@@ -64,18 +68,58 @@ public final class Application {
        }
        
        
+       /**
+        * Set the logging to output the specified log level and upwards to standard output.
+        * 
+        * @param level         the minimum logging level to output.
+        */
+       public static void setLogOutputLevel(LogLevel level) {
+               logger = new PrintStreamLogger();
+               for (LogLevel l : LogLevel.values()) {
+                       if (l.atLeast(level)) {
+                               ((PrintStreamLogger) logger).setOutput(l, System.out);
+                       }
+               }
+               
+       }
+       
+       
+       /**
+        * Return the translator to use for obtaining translated strings.
+        * @return      a translator.
+        */
+       public static Translator getTranslator() {
+               if (baseTranslator instanceof DebugTranslator) {
+                       return baseTranslator;
+               }
+               
+               Translator t = baseTranslator;
+               t = new ClassBasedTranslator(t, 1);
+               t = new ExceptionSuppressingTranslator(t);
+               return t;
+       }
+       
+       /**
+        * Set the translator used in obtaining translated strings.
+        * @param translator    the translator to set.
+        */
+       public static void setBaseTranslator(Translator translator) {
+               Application.baseTranslator = translator;
+       }
+       
+       
 
        /**
         * Return the database of all thrust curves loaded into the system.
         */
-       public static MotorSetDatabase getMotorSetDatabase() {
+       public static ThrustCurveMotorSetDatabase getMotorSetDatabase() {
                return motorSetDatabase;
        }
        
        /**
         * Set the database of thrust curves loaded into the system.
         */
-       public static void setMotorSetDatabase(MotorSetDatabase motorSetDatabase) {
+       public static void setMotorSetDatabase(ThrustCurveMotorSetDatabase motorSetDatabase) {
                Application.motorSetDatabase = motorSetDatabase;
        }