File: DisplayUtils.java

package info (click to toggle)
gpsprune 17-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 3,984 kB
  • ctags: 5,218
  • sloc: java: 39,403; sh: 25; makefile: 17; python: 15
file content (93 lines) | stat: -rw-r--r-- 2,960 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package tim.prune.gui;

import java.text.NumberFormat;

import tim.prune.I18nManager;

/**
 * Class to provide general display util methods
 */
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
	 * @return time as a string, days, hours, mins, secs as appropriate
	 */
	public static String buildDurationString(long inNumSecs)
	{
		if (inNumSecs <= 0L) return "";
		if (inNumSecs < 60L) return "" + inNumSecs + I18nManager.getText("display.range.time.secs");
		if (inNumSecs < 3600L) return "" + (inNumSecs / 60) + I18nManager.getText("display.range.time.mins")
			+ " " + (inNumSecs % 60) + I18nManager.getText("display.range.time.secs");
		if (inNumSecs < 86400L) return "" + (inNumSecs / 60 / 60) + I18nManager.getText("display.range.time.hours")
			+ " " + ((inNumSecs / 60) % 60) + I18nManager.getText("display.range.time.mins");
		if (inNumSecs < 432000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days")
			+ " " + (inNumSecs / 60 / 60) % 24 + I18nManager.getText("display.range.time.hours");
		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();
	}
}