Changeset 40 in josm for src/org/openstreetmap/josm/actions


Ignore:
Timestamp:
2006-01-11T23:39:36+01:00 (20 years ago)
Author:
imi
Message:
  • added world boundaries
  • added bug report exception handler
  • raw gps/real data when open depends now on extension
Location:
src/org/openstreetmap/josm/actions
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/actions/DownloadAction.java

    r37 r40  
    7777                        GeoPoint bottomLeft = mv.getPoint(0, h, true);
    7878                        GeoPoint topRight = mv.getPoint(w, 0, true);
     79                        if (bottomLeft.isOutSideWorld())
     80                                bottomLeft = new GeoPoint(-89.999, -179.999); // do not use the Projection constants, since this look better.
     81                        if (topRight.isOutSideWorld())
     82                                topRight = new GeoPoint(89.999, 179.999);
    7983                        latlon[0].setText(""+bottomLeft.lat);
    8084                        latlon[1].setText(""+bottomLeft.lon);
  • src/org/openstreetmap/josm/actions/OpenAction.java

    r38 r40  
    11package org.openstreetmap.josm.actions;
    22
    3 import java.awt.GridBagLayout;
    43import java.awt.event.ActionEvent;
    54import java.awt.event.InputEvent;
     
    87import java.io.FileReader;
    98import java.io.IOException;
    10 import java.io.Reader;
    119import java.util.Collection;
    1210import java.util.LinkedList;
    1311
    14 import javax.swing.Box;
    15 import javax.swing.JCheckBox;
    1612import javax.swing.JFileChooser;
    17 import javax.swing.JLabel;
    1813import javax.swing.JOptionPane;
    19 import javax.swing.JPanel;
    2014import javax.swing.KeyStroke;
    2115
     
    2418import org.openstreetmap.josm.data.GeoPoint;
    2519import org.openstreetmap.josm.data.osm.DataSet;
    26 import org.openstreetmap.josm.gui.GBC;
    2720import org.openstreetmap.josm.gui.MapFrame;
    2821import org.openstreetmap.josm.gui.layer.Layer;
     
    5548                fc.setAcceptAllFileFilterUsed(true);
    5649               
    57                 // additional options
    58                 JCheckBox rawGps = new JCheckBox("Raw GPS data", true);
    59                 rawGps.setToolTipText("Check this, if the data were obtained from a gps device.");
    60                
    61                 JPanel p = new JPanel(new GridBagLayout());
    62                 p.add(new JLabel("Options"), GBC.eop());
    63                 p.add(rawGps, GBC.eol());
    64                 p.add(Box.createVerticalGlue(), GBC.eol().fill());
    65                 fc.setAccessory(p);
    66 
    6750                if (fc.showOpenDialog(Main.main) != JFileChooser.APPROVE_OPTION)
    6851                        return;
     
    7457                try {
    7558                        Layer layer;
    76                         Reader in = new FileReader(filename);
    7759                        String extension = filename.getName().toLowerCase().substring(filename.getName().lastIndexOf('.')+1);
    78                         if (rawGps.isSelected()) {
     60
     61                        if (asRawData(extension)) {
    7962                                Collection<Collection<GeoPoint>> data;
    80                                 if (extension.equals("gpx"))
    81                                         data = new RawGpsReader(in).parse();
    82                                 else if (extension.equals("xml") || extension.equals("osm")) {
    83                                         JOptionPane.showMessageDialog(Main.main, "Osm server data import for GPS data is not supported.");
    84                                         return;
     63                                if (extension.equals("gpx")) {
     64                                        data = new RawGpsReader(new FileReader(filename)).parse();
    8565                                } else if (extension.equals("csv") || extension.equals("txt")) {
    8666                                        data = new LinkedList<Collection<GeoPoint>>();
    87                                         data.add(new RawCsvReader(in).parse());
    88                                 } else {
    89                                         JOptionPane.showMessageDialog(Main.main, "Unknown file extension: "+extension);
    90                                         return;
    91                                 }
     67                                        data.add(new RawCsvReader(new FileReader(filename)).parse());
     68                                } else
     69                                        throw new IllegalStateException();
    9270                                layer = new RawGpsDataLayer(data, filename.getName());
    9371                        } else {
    9472                                DataSet dataSet;
    9573                                if (extension.equals("gpx"))
    96                                         dataSet = new GpxReader(in).parse();
     74                                        dataSet = new GpxReader(new FileReader(filename)).parse();
    9775                                else if (extension.equals("xml") || extension.equals("osm"))
    98                                         dataSet = new OsmReader(in).parse();
     76                                        dataSet = new OsmReader(new FileReader(filename)).parse();
    9977                                else if (extension.equals("csv") || extension.equals("txt")) {
    10078                                        JOptionPane.showMessageDialog(Main.main, "CSV Data import for non-GPS data is not implemented yet.");
     
    12098                }
    12199        }
     100
     101        /**
     102         * @return Return whether the file should be opened as raw gps data. May ask the
     103         * user, if unsure.
     104         */
     105        private boolean asRawData(String extension) {
     106                if (extension.equals("csv") || extension.equals("txt"))
     107                        return true;
     108                if (!extension.equals("gpx"))
     109                        return false;
     110                return JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(
     111                                Main.main, "Do you want to open the file as raw gps data?",
     112                                "Open as raw data?", JOptionPane.YES_NO_OPTION);
     113        }
    122114}
  • src/org/openstreetmap/josm/actions/SaveAction.java

    r39 r40  
    1313
    1414import org.openstreetmap.josm.Main;
     15import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1516import org.openstreetmap.josm.io.GpxWriter;
    1617import org.openstreetmap.josm.io.OsmWriter;
     
    3738                        return;
    3839                }
     40                if (isDataSetEmpty() && JOptionPane.NO_OPTION == JOptionPane.showConfirmDialog(Main.main, "The document contains no data. Save anyway?", "Empty document", JOptionPane.YES_NO_OPTION))
     41                        return;
     42
    3943                JFileChooser fc = new JFileChooser("data");
    4044                for (int i = 0; i < ExtensionFileFilter.filters.length; ++i)
     
    4549                if (file == null)
    4650                        return;
    47                
     51
    4852                try {
    49                         FileWriter fileWriter = new FileWriter(file);
    5053                        String fn = file.getName();
     54                        FileWriter fileWriter;
    5155                        if (fn.endsWith(".gpx"))
    52                                 new GpxWriter(fileWriter).output();
     56                                new GpxWriter(fileWriter = new FileWriter(file)).output();
    5357                        else if (fn.endsWith(".xml") || fn.endsWith(".osm"))
    54                                 new OsmWriter(fileWriter, Main.main.ds).output();
     58                                new OsmWriter(fileWriter = new FileWriter(file), Main.main.ds).output();
    5559                        else if (fn.endsWith(".txt") || fn.endsWith(".csv")) {
    5660                                JOptionPane.showMessageDialog(Main.main, "CSV output not supported yet.");
     
    6064                                return;
    6165                        }
    62                                
    6366                        fileWriter.close();
    6467                } catch (IOException e) {
     
    6871        }
    6972
     73        /**
     74         * Check the data set if it would be empty on save. It is empty, if it contains
     75         * no objects (after all objects that are created and deleted without beeing
     76         * transfered to the server have been removed).
     77         * 
     78         * @return <code>true</code>, if a save result in an empty data set.
     79         */
     80        private boolean isDataSetEmpty() {
     81                for (OsmPrimitive osm : Main.main.ds.allPrimitives())
     82                        if (!osm.isDeleted() || osm.id > 0)
     83                                return false;
     84                return true;
     85        }
     86
    7087}
  • src/org/openstreetmap/josm/actions/mapmode/AddNodeAction.java

    r30 r40  
    33import java.awt.event.KeyEvent;
    44import java.awt.event.MouseEvent;
     5
     6import javax.swing.JOptionPane;
    57
    68import org.openstreetmap.josm.Main;
     
    5052                        Node node = new Node();
    5153                        node.coor = mv.getPoint(e.getX(), e.getY(), true);
     54                        if (node.coor.isOutSideWorld()) {
     55                                JOptionPane.showMessageDialog(Main.main, "Can not add a node outside of the world.");
     56                                return;
     57                        }
    5258                        mv.editLayer().add(new AddCommand(Main.main.ds, node));
    5359                        mv.repaint();
  • src/org/openstreetmap/josm/actions/mapmode/MoveAction.java

    r31 r40  
    77import java.util.Collection;
    88
     9import javax.swing.JOptionPane;
     10
    911import org.openstreetmap.josm.Main;
    1012import org.openstreetmap.josm.command.Command;
    1113import org.openstreetmap.josm.command.MoveCommand;
    1214import org.openstreetmap.josm.data.GeoPoint;
     15import org.openstreetmap.josm.data.osm.Node;
    1316import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1417import org.openstreetmap.josm.gui.MapFrame;
     
    8487
    8588                Collection<OsmPrimitive> selection = Main.main.ds.getSelected();
     89                Collection<Node> affectedNodes = MoveCommand.getAffectedNodes(selection);
     90               
     91                // check if any coordinate would be outside the world
     92                for (OsmPrimitive osm : affectedNodes) {
     93                        if (osm instanceof Node && ((Node)osm).coor.isOutSideWorld()) {
     94                                JOptionPane.showMessageDialog(Main.main, "Cannot move objects outside of the world.");
     95                                return;
     96                        }
     97                }
     98               
    8699                Command c = mv.editLayer().lastCommand();
    87                 if (c instanceof MoveCommand && MoveCommand.getAffectedNodes(selection).equals(((MoveCommand)c).objects))
     100                if (c instanceof MoveCommand && affectedNodes.equals(((MoveCommand)c).objects))
    88101                        ((MoveCommand)c).moveAgain(dx,dy);
    89102                else
Note: See TracChangeset for help on using the changeset viewer.