package tim.prune.gui;
+import java.text.NumberFormat;
+
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
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();
+ }
}