import tim.prune.I18nManager;
import tim.prune.UpdateMessageBroker;
import tim.prune.config.Config;
-import tim.prune.data.Altitude;
import tim.prune.data.Coordinate;
import tim.prune.data.DataPoint;
import tim.prune.data.Field;
import tim.prune.data.RecentFile;
import tim.prune.data.Timestamp;
import tim.prune.data.Track;
+import tim.prune.data.Unit;
+import tim.prune.data.UnitSetLibrary;
import tim.prune.load.GenericFileFilter;
import tim.prune.load.OneCharDocument;
private static final int[] FORMAT_COORDS = {Coordinate.FORMAT_NONE, Coordinate.FORMAT_DEG_MIN_SEC,
Coordinate.FORMAT_DEG_MIN, Coordinate.FORMAT_DEG};
- private static final Altitude.Format[] FORMAT_ALTS = {Altitude.Format.NO_FORMAT, Altitude.Format.METRES, Altitude.Format.FEET};
- private static final int[] FORMAT_TIMES = {Timestamp.FORMAT_ORIGINAL, Timestamp.FORMAT_LOCALE, Timestamp.FORMAT_ISO_8601};
+ private static final Unit[] UNIT_ALTS = {null, UnitSetLibrary.UNITS_METRES, UnitSetLibrary.UNITS_FEET};
+ private static final Timestamp.Format[] FORMAT_TIMES = {Timestamp.Format.ORIGINAL, Timestamp.Format.LOCALE, Timestamp.Format.ISO8601};
/**
_dialog.getContentPane().add(makeDialogComponents());
_dialog.pack();
}
+ // Has the track got media?
+ final boolean hasMedia = _app.getTrackInfo().getPhotoList().hasCorrelatedPhotos()
+ || _app.getTrackInfo().getAudioList().hasCorrelatedAudios();
// Check field list
Track track = _app.getTrackInfo().getTrack();
FieldList fieldList = track.getFieldList();
int numFields = fieldList.getNumFields();
- _model = new FieldSelectionTableModel(numFields);
+ _model = new FieldSelectionTableModel(numFields + (hasMedia ? 1 : 0));
for (int i=0; i<numFields; i++)
{
Field field = fieldList.getField(i);
FieldInfo info = new FieldInfo(field, track.hasData(field));
_model.addFieldInfo(info, i);
}
+ // Add a field for photos / audio if any present
+ if (hasMedia)
+ {
+ _model.addFieldInfo(new FieldInfo(Field.MEDIA_FILENAME, true), numFields);
+ }
// Initialise dialog and show it
initDialog(_model, inDefaultDelimiter);
_dialog.setVisible(true);
for (int i=0; i<_coordUnitsRadios.length; i++)
if (_coordUnitsRadios[i].isSelected())
coordFormat = FORMAT_COORDS[i];
- Altitude.Format altitudeFormat = Altitude.Format.NO_FORMAT;
+ Unit altitudeUnit = null;
for (int i=0; i<_altitudeUnitsRadios.length; i++)
{
if (_altitudeUnitsRadios[i].isSelected()) {
- altitudeFormat = FORMAT_ALTS[i];
+ altitudeUnit = UNIT_ALTS[i];
}
}
// Get timestamp format
- int timestampFormat = Timestamp.FORMAT_ORIGINAL;
+ Timestamp.Format timestampFormat = Timestamp.Format.ORIGINAL;
for (int i=0; i<_timestampUnitsRadios.length; i++)
{
if (_timestampUnitsRadios[i].isSelected()) {
if (!firstField) {
buffer.append(delimiter);
}
- saveField(buffer, point, info.getField(), coordFormat, altitudeFormat, timestampFormat);
+ saveField(buffer, point, info.getField(), coordFormat, altitudeUnit, timestampFormat);
firstField = false;
}
}
* @param inPoint point object
* @param inField field object
* @param inCoordFormat coordinate format
- * @param inAltitudeFormat altitude format
+ * @param inAltitudeUnit altitude unit
* @param inTimestampFormat timestamp format
*/
private void saveField(StringBuffer inBuffer, DataPoint inPoint, Field inField,
- int inCoordFormat, Altitude.Format inAltitudeFormat, int inTimestampFormat)
+ int inCoordFormat, Unit inAltitudeUnit, Timestamp.Format inTimestampFormat)
{
// Output field according to type
if (inField == Field.LATITUDE)
{
try
{
- inBuffer.append(inPoint.getAltitude().getStringValue(inAltitudeFormat));
+ inBuffer.append(inPoint.getAltitude().getStringValue(inAltitudeUnit));
}
catch (NullPointerException npe) {}
}
{
if (inPoint.hasTimestamp())
{
- if (inTimestampFormat == Timestamp.FORMAT_ORIGINAL) {
- // output original string
- inBuffer.append(inPoint.getTimestamp().getText(Timestamp.FORMAT_ORIGINAL));
- }
- else {
- // format value accordingly
- inBuffer.append(inPoint.getTimestamp().getText(inTimestampFormat));
- }
+ // format value accordingly
+ inBuffer.append(inPoint.getTimestamp().getText(inTimestampFormat, null));
+ }
+ }
+ else if (inField == Field.MEDIA_FILENAME)
+ {
+ if (inPoint.hasMedia())
+ {
+ inBuffer.append(inPoint.getMediaName());
}
}
else