X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fgui%2FDisplayUtils.java;h=49ca3870b6304ccc3bc2c40f56b18d2b3685a6fe;hp=df706b74e17c754661ebc164b22a8adf2724b56c;hb=7f5ed2be62905bd37717376dc22d09e5ea7edb4d;hpb=b361869e590bbca32664c16ac24d6296926594a5 diff --git a/tim/prune/gui/DisplayUtils.java b/tim/prune/gui/DisplayUtils.java index df706b7..49ca387 100644 --- a/tim/prune/gui/DisplayUtils.java +++ b/tim/prune/gui/DisplayUtils.java @@ -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); + } }