X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fsave%2FKmlExporter.java;h=82b4f1c12ca7cc7f679f8896bbe86555142137a0;hb=52bf9e8686c916be37a26a0b75340393d4478b05;hp=c091d0c74ac0f705be6acd1ebd977b6010a0af86;hpb=da0b1f449260a0b4a94318006382a9039726ef3e;p=GpsPrune.git diff --git a/tim/prune/save/KmlExporter.java b/tim/prune/save/KmlExporter.java index c091d0c..82b4f1c 100644 --- a/tim/prune/save/KmlExporter.java +++ b/tim/prune/save/KmlExporter.java @@ -32,9 +32,10 @@ import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JTextField; import javax.swing.SwingConstants; -import javax.swing.filechooser.FileFilter; +import tim.prune.Config; import tim.prune.I18nManager; +import tim.prune.UpdateMessageBroker; import tim.prune.data.Altitude; import tim.prune.data.Coordinate; import tim.prune.data.DataPoint; @@ -42,6 +43,7 @@ import tim.prune.data.Field; import tim.prune.data.Track; import tim.prune.data.TrackInfo; import tim.prune.gui.ImageUtils; +import tim.prune.load.GenericFileFilter; /** * Class to export track information @@ -188,19 +190,14 @@ public class KmlExporter implements Runnable { // OK pressed, so choose output file if (_fileChooser == null) - {_fileChooser = new JFileChooser();} - _fileChooser.setDialogType(JFileChooser.SAVE_DIALOG); - _fileChooser.setFileFilter(new FileFilter() { - public boolean accept(File f) - { - return (f != null && (f.isDirectory() - || f.getName().toLowerCase().endsWith(".kml") || f.getName().toLowerCase().endsWith(".kmz"))); - } - public String getDescription() - { - return I18nManager.getText("dialog.exportkml.filetype"); - } - }); + { + _fileChooser = new JFileChooser(); + _fileChooser.setDialogType(JFileChooser.SAVE_DIALOG); + _fileChooser.setFileFilter(new GenericFileFilter("filetype.kmlkmz", new String[] {"kml", "kmz"})); + // start from directory in config which should be set + File configDir = Config.getWorkingDirectory(); + if (configDir != null) {_fileChooser.setCurrentDirectory(configDir);} + } String requiredExtension = null, otherExtension = null; if (_kmzCheckbox.isSelected()) { @@ -302,10 +299,12 @@ public class KmlExporter implements Runnable // close file writer.close(); - JOptionPane.showMessageDialog(_parentFrame, I18nManager.getText("dialog.save.ok1") - + " " + numPoints + " " + I18nManager.getText("dialog.save.ok2") - + " " + _exportFile.getAbsolutePath(), - I18nManager.getText("dialog.save.oktitle"), JOptionPane.INFORMATION_MESSAGE); + // Store directory in config for later + Config.setWorkingDirectory(_exportFile.getParentFile()); + // show confirmation + UpdateMessageBroker.informSubscribers(I18nManager.getText("confirm.save.ok1") + + " " + numPoints + " " + I18nManager.getText("confirm.save.ok2") + + " " + _exportFile.getAbsolutePath()); // export successful so need to close dialog and return _dialog.dispose(); return; @@ -335,7 +334,6 @@ public class KmlExporter implements Runnable private int exportData(OutputStreamWriter inWriter, boolean inExportImages) throws IOException { - // TODO: Look at segments of track, and split into separate lines in Kml if necessary inWriter.write("\n\n\n"); inWriter.write("\t"); if (_descriptionField != null && _descriptionField.getText() != null && !_descriptionField.getText().equals("")) @@ -383,24 +381,37 @@ public class KmlExporter implements Runnable // Make a line for the track, if there is one if (hasTrackpoints) { - inWriter.write("\t\n\t\ttrack\n\t\t\n\t\t\n"); + + "\t\t\n\t\t\n"; if (exportAltitudes) { - inWriter.write("\t\t\t1\n\t\t\tabsolute\n"); + trackStart += "\t\t\t1\n\t\t\tabsolute\n"; } - inWriter.write("\t\t\t"); + trackStart += "\t\t\t"; + String trackEnd = "\t\t\t\n\t\t\n\t"; + + // Start segment + inWriter.write(trackStart); // Loop over track points + boolean firstTrackpoint = true; for (i=0; i\n\t\t\n\t"); + // end segment + inWriter.write(trackEnd); } inWriter.write("\n"); return numPoints; @@ -429,7 +440,7 @@ public class KmlExporter implements Runnable inWriter.write(inPoint.getLatitude().output(Coordinate.FORMAT_DEG_WITHOUT_CARDINAL)); inWriter.write(","); if (inExportAltitude && inPoint.hasAltitude()) { - inWriter.write("" + inPoint.getAltitude().getValue(Altitude.FORMAT_METRES)); + inWriter.write("" + inPoint.getAltitude().getStringValue(Altitude.FORMAT_METRES)); } else { inWriter.write("0"); @@ -475,7 +486,7 @@ public class KmlExporter implements Runnable inWriter.write(inPoint.getLatitude().output(Coordinate.FORMAT_DEG_WITHOUT_CARDINAL)); inWriter.write(","); if (inExportAltitude && inPoint.hasAltitude()) { - inWriter.write("" + inPoint.getAltitude().getValue(Altitude.FORMAT_METRES)); + inWriter.write("" + inPoint.getAltitude().getStringValue(Altitude.FORMAT_METRES)); } else { inWriter.write("0"); @@ -498,7 +509,7 @@ public class KmlExporter implements Runnable // Altitude either absolute or locked to ground by Google Earth inWriter.write(","); if (inExportAltitude && inPoint.hasAltitude()) { - inWriter.write("" + inPoint.getAltitude().getValue(Altitude.FORMAT_METRES)); + inWriter.write("" + inPoint.getAltitude().getStringValue(Altitude.FORMAT_METRES)); } else { inWriter.write("0");