package tim.prune.gui.profile; import tim.prune.I18nManager; import tim.prune.data.SpeedCalculator; import tim.prune.data.SpeedValue; import tim.prune.data.Track; import tim.prune.data.UnitSet; /** * Class to provide a source of speed data for the profile chart */ public class SpeedData extends ProfileData { /** * Constructor * @param inTrack track object */ public SpeedData(Track inTrack) { super(inTrack); } /** * Get the data and populate the instance arrays */ public void init(UnitSet inUnitSet) { setUnitSet(inUnitSet); initArrays(); _hasData = false; _minValue = _maxValue = 0.0; SpeedValue speed = new SpeedValue(); if (_track != null) { for (int i=0; i<_track.getNumPoints(); i++) { // Get the speed either from the speed value or from the distances and timestamps SpeedCalculator.calculateSpeed(_track, i, speed); if (speed.isValid()) { double speedValue = speed.getValue(); _pointValues[i] = speedValue; if (speedValue < _minValue || !_hasData) {_minValue = speedValue;} if (speedValue > _maxValue || !_hasData) {_maxValue = speedValue;} _hasData = true; } _pointHasData[i] = speed.isValid(); } } } /** * @return text description including units */ public String getLabel() { return I18nManager.getText("fieldname.speed") + " (" + I18nManager.getText(_unitSet.getSpeedUnit().getShortnameKey()) + ")"; } /** * @return key for message when no speeds present */ public String getNoDataKey() { return "display.notimestamps"; } }