]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/gui/DisplayUtils.java
Version 15, March 2013
[GpsPrune.git] / tim / prune / gui / DisplayUtils.java
index df706b74e17c754661ebc164b22a8adf2724b56c..49ca3870b6304ccc3bc2c40f56b18d2b3685a6fe 100644 (file)
@@ -1,5 +1,7 @@
 package tim.prune.gui;
 
+import java.text.NumberFormat;
+
 import tim.prune.I18nManager;
 
 /**
@@ -7,6 +9,19 @@ import tim.prune.I18nManager;
  */
 public abstract class DisplayUtils
 {
+       /** Number formatter for one decimal place */
+       private static final NumberFormat FORMAT_ONE_DP = NumberFormat.getNumberInstance();
+
+       /** Static block to initialise the one d.p. formatter */
+       static
+       {
+               FORMAT_ONE_DP.setMaximumFractionDigits(1);
+               FORMAT_ONE_DP.setMinimumFractionDigits(1);
+       }
+       /** Flexible number formatter with different decimal places */
+       private static final NumberFormat FORMAT_FLEX = NumberFormat.getNumberInstance();
+
+
        /**
         * Build a String to describe a time duration
         * @param inNumSecs number of seconds
@@ -25,4 +40,34 @@ public abstract class DisplayUtils
                if (inNumSecs < 86400000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days");
                return "big";
        }
+
+       /**
+        * @param inNumber number to format
+        * @return formatted number to one decimal place
+        */
+       public static String formatOneDp(double inNumber)
+       {
+               return FORMAT_ONE_DP.format(inNumber);
+       }
+
+       /**
+        * Format a number to a sensible precision
+        * @param inVal value to format
+        * @return formatted String using local format
+        */
+       public static String roundedNumber(double inVal)
+       {
+               // Set precision of formatter
+               int numDigits = 0;
+               if (inVal < 1.0)
+                       numDigits = 3;
+               else if (inVal < 10.0)
+                       numDigits = 2;
+               else if (inVal < 100.0)
+                       numDigits = 1;
+               // set formatter
+               FORMAT_FLEX.setMaximumFractionDigits(numDigits);
+               FORMAT_FLEX.setMinimumFractionDigits(numDigits);
+               return FORMAT_FLEX.format(inVal);
+       }
 }