package tim.prune.function; import tim.prune.App; import tim.prune.DataSubscriber; import tim.prune.GenericFunction; import tim.prune.I18nManager; import tim.prune.UpdateMessageBroker; import tim.prune.data.DataPoint; import tim.prune.data.Field; import tim.prune.data.TimestampUtc; import tim.prune.data.Track; import tim.prune.undo.UndoConvertNamesToTimes; /** * Class to provide the function to convert waypoint names to timestamps */ public class ConvertNamesToTimes extends GenericFunction { /** * Constructor * @param inApp application object for callback */ public ConvertNamesToTimes(App inApp) { super(inApp); } /** Get the name key */ public String getNameKey() { return "function.convertnamestotimes"; } /** * Begin the function */ public void begin() { int selStart = _app.getTrackInfo().getSelection().getStart(); int selEnd = _app.getTrackInfo().getSelection().getEnd(); final Track track = _app.getTrackInfo().getTrack(); if (!track.hasData(Field.WAYPT_NAME, selStart, selEnd)) { _app.showErrorMessage(getNameKey(), "error.convertnamestotimes.nonames"); return; } UndoConvertNamesToTimes undo = new UndoConvertNamesToTimes(_app.getTrackInfo()); int numConverted = 0; // Loop over all points in selection for (int i=selStart; i<=selEnd; i++) { DataPoint point = track.getPoint(i); if (point.isWaypoint()) { TimestampUtc tstamp = new TimestampUtc(point.getWaypointName()); if (tstamp.isValid()) { // timestamp could be parsed! point.setFieldValue(Field.TIMESTAMP, point.getWaypointName(), false); // set waypoint name to nothing (track point) point.setFieldValue(Field.WAYPT_NAME, null, false); // increment counter numConverted++; } } } if (numConverted > 0) { _app.getTrackInfo().getTrack().requestRescale(); UpdateMessageBroker.informSubscribers(DataSubscriber.DATA_EDITED); _app.completeFunction(undo, I18nManager.getText("confirm.convertnamestotimes")); } } }