X-Git-Url: https://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fgui%2FDisplayUtils.java;h=25640d8e5072bfc2e70acfc3e26c7de208a494e3;hb=88f2c3647ed9e055090484f01a959d4581f85e7d;hp=df706b74e17c754661ebc164b22a8adf2724b56c;hpb=c0387c124840c9407e040600fda88f3c3e8f6aa6;p=GpsPrune.git diff --git a/tim/prune/gui/DisplayUtils.java b/tim/prune/gui/DisplayUtils.java index df706b7..25640d8 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,54 @@ 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); + } + + /** + * Convert the given hour and minute values into a string H:MM + * @param inHour hour of day, 0-24 + * @param inMinute minute, 0-59 + * @return string, either H:MM or HH:MM + */ + public static String makeTimeString(int inHour, int inMinute) + { + StringBuilder sb = new StringBuilder(); + final int hour = (inHour >= 0 && inHour <= 24) ? inHour : 0; + sb.append(hour); + + sb.append(':'); + + final int minute = (inMinute >= 0 && inMinute <= 59) ? inMinute : 0; + if (minute <= 9) {sb.append('0');} + sb.append(minute); + return sb.toString(); + } }