]> gitweb.fperrin.net Git - GpsPrune.git/blob - tim/prune/gui/profile/AltitudeData.java
Version 14, October 2012
[GpsPrune.git] / tim / prune / gui / profile / AltitudeData.java
1 package tim.prune.gui.profile;
2
3 import tim.prune.I18nManager;
4 import tim.prune.data.DataPoint;
5 import tim.prune.data.Track;
6 import tim.prune.data.UnitSet;
7
8 /**
9  * Class to provide a source of altitude data for the profile chart
10  */
11 public class AltitudeData extends ProfileData
12 {
13         /**
14          * Constructor
15          * @param inTrack track object
16          */
17         public AltitudeData(Track inTrack) {
18                 super(inTrack);
19         }
20
21         /**
22          * Get the data and populate the instance arrays
23          */
24         public void init(UnitSet inUnitSet)
25         {
26                 setUnitSet(inUnitSet);
27                 initArrays();
28                 _hasData = false;
29                 // multiplication factor for unit conversion
30                 final double multFactor = _unitSet.getAltitudeUnit().getMultFactorFromStd();
31                 if (_track != null)
32                 {
33                         for (int i=0; i<_track.getNumPoints(); i++)
34                         {
35                                 try
36                                 {
37                                         DataPoint point = _track.getPoint(i);
38                                         if (point != null && point.hasAltitude())
39                                         {
40                                                 // Point has an altitude - store value and maintain max and min values
41                                                 double value = point.getAltitude().getMetricValue() * multFactor;
42                                                 _pointValues[i] = value;
43                                                 if (value < _minValue || !_hasData) {_minValue = value;}
44                                                 if (value > _maxValue || !_hasData) {_maxValue = value;}
45
46                                                 _hasData = true;
47                                                 _pointHasData[i] = true;
48                                         }
49                                         else _pointHasData[i] = false;
50                                 }
51                                 catch (ArrayIndexOutOfBoundsException obe)
52                                 {} // must be due to the track size changing during calculation
53                                    // assume that a redraw will be triggered
54                         }
55                 }
56         }
57
58         /**
59          * @return text description including units
60          */
61         public String getLabel()
62         {
63                 return I18nManager.getText("fieldname.altitude") + " ("
64                         + I18nManager.getText(_unitSet.getAltitudeUnit().getShortnameKey())
65                         + ")";
66         }
67
68         /**
69          * @return key for message when no altitudes present
70          */
71         public String getNoDataKey() {
72                 return "display.noaltitudes";
73         }
74 }