]> gitweb.fperrin.net Git - GpsPrune.git/blob - src/tim/prune/gui/DisplayUtils.java
Update build scripts
[GpsPrune.git] / src / tim / prune / gui / DisplayUtils.java
1 package tim.prune.gui;
2
3 import java.text.NumberFormat;
4
5 import tim.prune.I18nManager;
6
7 /**
8  * Class to provide general display util methods
9  */
10 public abstract class DisplayUtils
11 {
12         /** Number formatter for one decimal place */
13         private static final NumberFormat FORMAT_ONE_DP = NumberFormat.getNumberInstance();
14
15         /** Static block to initialise the one d.p. formatter */
16         static
17         {
18                 FORMAT_ONE_DP.setMaximumFractionDigits(1);
19                 FORMAT_ONE_DP.setMinimumFractionDigits(1);
20         }
21         /** Flexible number formatter with different decimal places */
22         private static final NumberFormat FORMAT_FLEX = NumberFormat.getNumberInstance();
23
24
25         /**
26          * Build a String to describe a time duration
27          * @param inNumSecs number of seconds
28          * @return time as a string, days, hours, mins, secs as appropriate
29          */
30         public static String buildDurationString(long inNumSecs)
31         {
32                 if (inNumSecs <= 0L) return "";
33                 if (inNumSecs < 60L) return "" + inNumSecs + I18nManager.getText("display.range.time.secs");
34                 if (inNumSecs < 3600L) return "" + (inNumSecs / 60) + I18nManager.getText("display.range.time.mins")
35                         + " " + (inNumSecs % 60) + I18nManager.getText("display.range.time.secs");
36                 if (inNumSecs < 86400L) return "" + (inNumSecs / 60 / 60) + I18nManager.getText("display.range.time.hours")
37                         + " " + ((inNumSecs / 60) % 60) + I18nManager.getText("display.range.time.mins");
38                 if (inNumSecs < 432000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days")
39                         + " " + (inNumSecs / 60 / 60) % 24 + I18nManager.getText("display.range.time.hours");
40                 if (inNumSecs < 86400000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days");
41                 return "big";
42         }
43
44         /**
45          * @param inNumber number to format
46          * @return formatted number to one decimal place
47          */
48         public static String formatOneDp(double inNumber)
49         {
50                 return FORMAT_ONE_DP.format(inNumber);
51         }
52
53         /**
54          * Format a number to a sensible precision
55          * @param inVal value to format
56          * @return formatted String using local format
57          */
58         public static String roundedNumber(double inVal)
59         {
60                 // Set precision of formatter
61                 int numDigits = 0;
62                 if (inVal < 1.0)
63                         numDigits = 3;
64                 else if (inVal < 10.0)
65                         numDigits = 2;
66                 else if (inVal < 100.0)
67                         numDigits = 1;
68                 // set formatter
69                 FORMAT_FLEX.setMaximumFractionDigits(numDigits);
70                 FORMAT_FLEX.setMinimumFractionDigits(numDigits);
71                 return FORMAT_FLEX.format(inVal);
72         }
73
74         /**
75          * Convert the given hour and minute values into a string H:MM
76          * @param inHour hour of day, 0-24
77          * @param inMinute minute, 0-59
78          * @return string, either H:MM or HH:MM
79          */
80         public static String makeTimeString(int inHour, int inMinute)
81         {
82                 StringBuilder sb = new StringBuilder();
83                 final int hour = (inHour >= 0 && inHour <= 24) ? inHour : 0;
84                 sb.append(hour);
85
86                 sb.append(':');
87
88                 final int minute = (inMinute >= 0 && inMinute <= 59) ? inMinute : 0;
89                 if (minute <= 9) {sb.append('0');}
90                 sb.append(minute);
91                 return sb.toString();
92         }
93 }