import java.util.List;
-import tim.prune.Config;
import tim.prune.UpdateMessageBroker;
+import tim.prune.config.Config;
import tim.prune.function.edit.FieldEdit;
import tim.prune.function.edit.FieldEditList;
import tim.prune.gui.map.MapUtils;
_scaled = false;
}
+ /**
+ * Request that a rescale be done to recalculate derived values
+ */
+ public void requestRescale()
+ {
+ _scaled = false;
+ }
+
+ /**
+ * Extend the track's field list with the given additional fields
+ * @param inFieldList list of fields to be added
+ */
+ public void extendFieldList(FieldList inFieldList)
+ {
+ _masterFieldList = _masterFieldList.merge(inFieldList);
+ }
+
////////////////// Modification methods //////////////////////
* @param inStart start of range
* @param inEnd end of range
* @param inOffset offset to add (-ve to subtract)
+ * @param inUndo true for undo operation
* @return true on success
*/
- public boolean addTimeOffset(int inStart, int inEnd, long inOffset)
+ public boolean addTimeOffset(int inStart, int inEnd, long inOffset, boolean inUndo)
{
// sanity check
if (inStart < 0 || inEnd < 0 || inStart >= inEnd || inEnd >= _numPoints) {
// This point has a timestamp so add the offset to it
foundTimestamp = true;
timestamp.addOffset(inOffset);
+ _dataPoints[i].setModified(inUndo);
}
}
return foundTimestamp;
// This point has an altitude so add the offset to it
foundAlt = true;
alt.addOffset(inOffset, inFormat, inDecimals);
+ _dataPoints[i].setModified(false);
}
}
// needs to be scaled again
return foundAlt;
}
- // TODO: Function to collect and sort photo points by time or photo filename
- // TODO: Function to convert waypoint names into timestamps
/**
* Collect all waypoints to the start or end of the track
}
/**
- * @return true if track has altitude data (which are not all zero)
+ * @return true if track has altitude data
*/
public boolean hasAltitudeData()
{
- return getAltitudeRange().getMaximum() > 0;
+ for (int i=0; i<_numPoints; i++) {
+ if (_dataPoints[i].hasAltitude()) {return true;}
+ }
+ return false;
}
/**
* Edit the specified point
* @param inPoint point to edit
* @param inEditList list of edits to make
+ * @param inUndo true if undo operation, false otherwise
* @return true if successful
*/
- public boolean editPoint(DataPoint inPoint, FieldEditList inEditList)
+ public boolean editPoint(DataPoint inPoint, FieldEditList inEditList, boolean inUndo)
{
if (inPoint != null && inEditList != null && inEditList.getNumEdits() > 0)
{
{
FieldEdit edit = inEditList.getEdit(i);
Field editField = edit.getField();
- inPoint.setFieldValue(editField, edit.getValue());
+ inPoint.setFieldValue(editField, edit.getValue(), inUndo);
// Check that master field list has this field already (maybe point name has been added)
if (!_masterFieldList.contains(editField)) {
_masterFieldList.extendList(editField);