Changeset 40 in josm for src/org/openstreetmap/josm/actions
- Timestamp:
- 2006-01-11T23:39:36+01:00 (20 years ago)
- Location:
- src/org/openstreetmap/josm/actions
- Files:
-
- 5 edited
-
DownloadAction.java (modified) (1 diff)
-
OpenAction.java (modified) (6 diffs)
-
SaveAction.java (modified) (5 diffs)
-
mapmode/AddNodeAction.java (modified) (2 diffs)
-
mapmode/MoveAction.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/org/openstreetmap/josm/actions/DownloadAction.java
r37 r40 77 77 GeoPoint bottomLeft = mv.getPoint(0, h, true); 78 78 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); 79 83 latlon[0].setText(""+bottomLeft.lat); 80 84 latlon[1].setText(""+bottomLeft.lon); -
src/org/openstreetmap/josm/actions/OpenAction.java
r38 r40 1 1 package org.openstreetmap.josm.actions; 2 2 3 import java.awt.GridBagLayout;4 3 import java.awt.event.ActionEvent; 5 4 import java.awt.event.InputEvent; … … 8 7 import java.io.FileReader; 9 8 import java.io.IOException; 10 import java.io.Reader;11 9 import java.util.Collection; 12 10 import java.util.LinkedList; 13 11 14 import javax.swing.Box;15 import javax.swing.JCheckBox;16 12 import javax.swing.JFileChooser; 17 import javax.swing.JLabel;18 13 import javax.swing.JOptionPane; 19 import javax.swing.JPanel;20 14 import javax.swing.KeyStroke; 21 15 … … 24 18 import org.openstreetmap.josm.data.GeoPoint; 25 19 import org.openstreetmap.josm.data.osm.DataSet; 26 import org.openstreetmap.josm.gui.GBC;27 20 import org.openstreetmap.josm.gui.MapFrame; 28 21 import org.openstreetmap.josm.gui.layer.Layer; … … 55 48 fc.setAcceptAllFileFilterUsed(true); 56 49 57 // additional options58 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 67 50 if (fc.showOpenDialog(Main.main) != JFileChooser.APPROVE_OPTION) 68 51 return; … … 74 57 try { 75 58 Layer layer; 76 Reader in = new FileReader(filename);77 59 String extension = filename.getName().toLowerCase().substring(filename.getName().lastIndexOf('.')+1); 78 if (rawGps.isSelected()) { 60 61 if (asRawData(extension)) { 79 62 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(); 85 65 } else if (extension.equals("csv") || extension.equals("txt")) { 86 66 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(); 92 70 layer = new RawGpsDataLayer(data, filename.getName()); 93 71 } else { 94 72 DataSet dataSet; 95 73 if (extension.equals("gpx")) 96 dataSet = new GpxReader( in).parse();74 dataSet = new GpxReader(new FileReader(filename)).parse(); 97 75 else if (extension.equals("xml") || extension.equals("osm")) 98 dataSet = new OsmReader( in).parse();76 dataSet = new OsmReader(new FileReader(filename)).parse(); 99 77 else if (extension.equals("csv") || extension.equals("txt")) { 100 78 JOptionPane.showMessageDialog(Main.main, "CSV Data import for non-GPS data is not implemented yet."); … … 120 98 } 121 99 } 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 } 122 114 } -
src/org/openstreetmap/josm/actions/SaveAction.java
r39 r40 13 13 14 14 import org.openstreetmap.josm.Main; 15 import org.openstreetmap.josm.data.osm.OsmPrimitive; 15 16 import org.openstreetmap.josm.io.GpxWriter; 16 17 import org.openstreetmap.josm.io.OsmWriter; … … 37 38 return; 38 39 } 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 39 43 JFileChooser fc = new JFileChooser("data"); 40 44 for (int i = 0; i < ExtensionFileFilter.filters.length; ++i) … … 45 49 if (file == null) 46 50 return; 47 51 48 52 try { 49 FileWriter fileWriter = new FileWriter(file);50 53 String fn = file.getName(); 54 FileWriter fileWriter; 51 55 if (fn.endsWith(".gpx")) 52 new GpxWriter(fileWriter).output(); 56 new GpxWriter(fileWriter = new FileWriter(file)).output(); 53 57 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(); 55 59 else if (fn.endsWith(".txt") || fn.endsWith(".csv")) { 56 60 JOptionPane.showMessageDialog(Main.main, "CSV output not supported yet."); … … 60 64 return; 61 65 } 62 63 66 fileWriter.close(); 64 67 } catch (IOException e) { … … 68 71 } 69 72 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 70 87 } -
src/org/openstreetmap/josm/actions/mapmode/AddNodeAction.java
r30 r40 3 3 import java.awt.event.KeyEvent; 4 4 import java.awt.event.MouseEvent; 5 6 import javax.swing.JOptionPane; 5 7 6 8 import org.openstreetmap.josm.Main; … … 50 52 Node node = new Node(); 51 53 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 } 52 58 mv.editLayer().add(new AddCommand(Main.main.ds, node)); 53 59 mv.repaint(); -
src/org/openstreetmap/josm/actions/mapmode/MoveAction.java
r31 r40 7 7 import java.util.Collection; 8 8 9 import javax.swing.JOptionPane; 10 9 11 import org.openstreetmap.josm.Main; 10 12 import org.openstreetmap.josm.command.Command; 11 13 import org.openstreetmap.josm.command.MoveCommand; 12 14 import org.openstreetmap.josm.data.GeoPoint; 15 import org.openstreetmap.josm.data.osm.Node; 13 16 import org.openstreetmap.josm.data.osm.OsmPrimitive; 14 17 import org.openstreetmap.josm.gui.MapFrame; … … 84 87 85 88 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 86 99 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)) 88 101 ((MoveCommand)c).moveAgain(dx,dy); 89 102 else
Note:
See TracChangeset
for help on using the changeset viewer.
