- Timestamp:
- 2005-12-19T22:58:10+01:00 (19 years ago)
- Location:
- src/org/openstreetmap/josm
- Files:
-
- 1 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
src/org/openstreetmap/josm/actions/OpenAction.java
r30 r32 17 17 import javax.swing.JPanel; 18 18 import javax.swing.KeyStroke; 19 import javax.swing.filechooser.FileFilter;20 19 21 20 import org.jdom.JDOMException; … … 49 48 public void actionPerformed(ActionEvent e) { 50 49 JFileChooser fc = new JFileChooser("data"); 51 fc.setFileFilter(new FileFilter(){ 52 @Override 53 public boolean accept(File f) { 54 String name = f.getName().toLowerCase(); 55 return f.isDirectory() || name.endsWith(".gpx") || name.endsWith(".xml"); 56 } 57 @Override 58 public String getDescription() { 59 return "GPX or XML Files"; 60 }}); 50 for (int i = 0; i < ExtensionFileFilter.filters.length; ++i) 51 fc.addChoosableFileFilter(ExtensionFileFilter.filters[i]); 52 fc.setAcceptAllFileFilterUsed(true); 61 53 62 54 // additional options -
src/org/openstreetmap/josm/actions/SaveAction.java
r30 r32 11 11 import javax.swing.JOptionPane; 12 12 import javax.swing.KeyStroke; 13 import javax.swing.filechooser.FileFilter;14 13 15 14 import org.openstreetmap.josm.Main; … … 39 38 } 40 39 JFileChooser fc = new JFileChooser("data"); 41 fc.setFileFilter(new FileFilter(){ 42 @Override 43 public boolean accept(File f) { 44 String name = f.getName().toLowerCase(); 45 return f.isDirectory() || name.endsWith(".xml") || name.endsWith(".gpx"); 46 } 47 @Override 48 public String getDescription() { 49 return "GPX or XML Files"; 50 } 51 }); 40 for (int i = 0; i < ExtensionFileFilter.filters.length; ++i) 41 fc.addChoosableFileFilter(ExtensionFileFilter.filters[i]); 42 fc.setAcceptAllFileFilterUsed(true); 52 43 fc.showSaveDialog(Main.main); 53 44 File file = fc.getSelectedFile(); -
src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
r31 r32 111 111 for (OsmPrimitive osm : selection) 112 112 deleteCommands.add(new DeleteCommand(Main.main.ds, osm)); 113 mv.editLayer().add(new SequenceCommand(deleteCommands)); 113 if (!deleteCommands.isEmpty()) 114 mv.editLayer().add(new SequenceCommand(deleteCommands)); 114 115 } 115 116 … … 133 134 deleteCommands.add(new DeleteCommand(Main.main.ds, osm)); 134 135 } 135 mv.editLayer().add(new SequenceCommand(deleteCommands)); 136 if (!deleteCommands.isEmpty()) 137 mv.editLayer().add(new SequenceCommand(deleteCommands)); 136 138 } 137 139 } -
src/org/openstreetmap/josm/command/ChangeKeyValueCommand.java
r31 r32 38 38 */ 39 39 private List<Map<Key, String>> oldProperties; 40 41 /** 42 * These are the old modified states of the data. 43 */ 44 private List<Boolean> oldModified = new LinkedList<Boolean>(); 40 45 41 46 public ChangeKeyValueCommand(Collection<OsmPrimitive> objects, Key key, String value) { … … 48 53 // save old 49 54 oldProperties = new LinkedList<Map<Key, String>>(); 50 for (OsmPrimitive osm : objects) 55 for (OsmPrimitive osm : objects) { 51 56 oldProperties.add(osm.keys == null ? null : new HashMap<Key, String>(osm.keys)); 57 oldModified.add(osm.modified); 58 } 52 59 53 60 if (value == null) { … … 70 77 public void undoCommand() { 71 78 Iterator<Map<Key, String>> it = oldProperties.iterator(); 72 for (OsmPrimitive osm : objects) 79 Iterator<Boolean> itMod = oldModified.iterator(); 80 for (OsmPrimitive osm : objects) { 73 81 osm.keys = it.next(); 82 osm.modified = itMod.next(); 83 } 74 84 } 75 85 -
src/org/openstreetmap/josm/command/MoveCommand.java
r31 r32 1 1 package org.openstreetmap.josm.command; 2 2 3 import java.awt.geom.Point2D;4 3 import java.util.Collection; 5 4 import java.util.Iterator; … … 33 32 34 33 /** 35 * x/y List of all old positions of the objects. 34 * Small helper for holding the interesting part of the old data state of the 35 * objects. 36 * @author imi 36 37 */ 37 private List<Point2D.Double> oldPositions = new LinkedList<Point2D.Double>(); 38 class OldState 39 { 40 double x,y; 41 boolean modified; 42 } 43 /** 44 * List of all old states of the objects. 45 */ 46 private List<OldState> oldState = new LinkedList<OldState>(); 38 47 39 48 /** … … 44 53 this.y = y; 45 54 this.objects = getAffectedNodes(objects); 46 for (Node n : this.objects) 47 oldPositions.add(new Point2D.Double(n.coor.x, n.coor.y)); 55 for (Node n : this.objects) { 56 OldState os = new OldState(); 57 os.x = n.coor.x; 58 os.y = n.coor.y; 59 os.modified = n.modified; 60 oldState.add(os); 61 } 48 62 } 49 63 … … 80 94 n.coor.x += x; 81 95 n.coor.y += y; 96 n.modified = true; 82 97 } 83 98 } 84 99 85 100 public void undoCommand() { 86 Iterator< Point2D.Double> it = oldPositions.iterator();101 Iterator<OldState> it = oldState.iterator(); 87 102 for (Node n : objects) { 88 Point2D.Double p = it.next(); 89 n.coor.x = p.x; 90 n.coor.y = p.y; 103 OldState os = it.next(); 104 n.coor.x = os.x; 105 n.coor.y = os.y; 106 n.modified = os.modified; 91 107 } 92 108 } -
src/org/openstreetmap/josm/data/osm/DataSet.java
r30 r32 42 42 */ 43 43 public Collection<Track> tracks = new LinkedList<Track>(); 44 45 /** 46 * All deleted objects goes here. 47 */ 48 public Collection<OsmPrimitive> deleted = new LinkedList<OsmPrimitive>(); 44 49 45 50 /** -
src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
r31 r32 32 32 public long id = 0; 33 33 34 /** 35 * <code>true</code>, if the object has been modified since it was loaded from 36 * the server. In this case, on next upload, this object will be updated. Deleted 37 * objects are deleted from the server, even if they are modified. If the objects 38 * are added (id=0), the modified is ignored and the object is added to the server. 39 */ 40 public boolean modified = false; 41 34 42 /** 35 43 * If set to true, this object is currently selected. -
src/org/openstreetmap/josm/data/osm/visitor/AddVisitor.java
r31 r32 26 26 public void visit(Node n) { 27 27 ds.nodes.add(n); 28 ds.deleted.remove(n); // remove if there. 28 29 } 29 30 public void visit(LineSegment ls) { 30 31 ds.lineSegments.add(ls); 32 ds.deleted.remove(ls); // remove if there. 31 33 } 32 34 public void visit(Track t) { 33 35 ds.tracks.add(t); 36 ds.deleted.remove(t); // remove if there. 34 37 } 35 38 public void visit(Key k) {} -
src/org/openstreetmap/josm/data/osm/visitor/DeleteVisitor.java
r31 r32 25 25 26 26 public void visit(Node n) { 27 ds.nodes.remove(n); 27 if (ds.nodes.remove(n)) 28 ds.deleted.add(n); 28 29 } 29 30 public void visit(LineSegment ls) { 30 ds.lineSegments.remove(ls); 31 if (ds.lineSegments.remove(ls)) 32 ds.deleted.add(ls); 31 33 } 32 34 public void visit(Track t) { 33 ds.tracks.remove(t); 35 if (ds.tracks.remove(t)) 36 ds.deleted.add(t); 34 37 } 35 38 public void visit(Key k) {} -
src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
r31 r32 82 82 @Override 83 83 public String getToolTipText() { 84 return data.nodes.size()+" nodes, "+data.tracks.size()+" streets."; 84 return data.nodes.size()+" nodes, "+data.lineSegments.size()+" segments, "+data.tracks.size()+" streets."; 85 85 } 86 86 -
src/org/openstreetmap/josm/io/GpxReader.java
r31 r32 99 99 addNode(data, parseWaypoint((Element)o)); 100 100 101 // read tracks 101 // read tracks (and line segments) 102 102 for (Object trackElement : e.getChildren("trk", GPX)) 103 103 parseTrack((Element)trackElement, data); … … 143 143 parseKeyValueTag(track, child); 144 144 } 145 if (realLineSegment && track.segments.size() == 1) 146 ds.lineSegments.add(track.segments.get(0)); 147 else { 145 ds.lineSegments.addAll(track.segments); 146 if (!realLineSegment) 148 147 ds.tracks.add(track); 149 ds.lineSegments.addAll(track.segments);150 }151 148 } 152 149 -
src/org/openstreetmap/josm/io/GpxWriter.java
r30 r32 80 80 Element e = new Element("gpx", GPX); 81 81 e.setAttribute("version", "1.0"); 82 e.setAttribute("creator", "JOSM Beta2");82 e.setAttribute("creator", "JOSM"); 83 83 // for getting all unreferenced waypoints in the wpt-list 84 LinkedList<Node> nodes = new LinkedList<Node>(Main.main.ds.nodes); 84 LinkedList<Node> unrefNodes = new LinkedList<Node>(Main.main.ds.nodes); 85 // for getting all unreferenced line segments 86 LinkedList<LineSegment> unrefLs = new LinkedList<LineSegment>(Main.main.ds.lineSegments); 85 87 86 88 // tracks … … 101 103 for (LineSegment ls : t.segments) { 102 104 tElem.getChildren().add(parseLineSegment(ls)); 103 nodes.remove(ls.start); 104 nodes.remove(ls.end); 105 unrefNodes.remove(ls.start); 106 unrefNodes.remove(ls.end); 107 unrefLs.remove(ls); 105 108 } 106 109 … … 109 112 110 113 // encode pending line segments as tracks 111 for (LineSegment ls : Main.main.ds.lineSegments) {114 for (LineSegment ls : unrefLs) { 112 115 Element t = new Element("trk", GPX); 113 116 t.getChildren().add(parseLineSegment(ls)); 114 nodes.remove(ls.start);115 nodes.remove(ls.end);117 unrefNodes.remove(ls.start); 118 unrefNodes.remove(ls.end); 116 119 Element ext = new Element("extensions", GPX); 117 120 ext.getChildren().add(new Element("segment", OSM)); … … 121 124 122 125 // waypoints (missing nodes) 123 for (Node n : nodes)126 for (Node n : unrefNodes) 124 127 e.getChildren().add(parseWaypoint(n, "wpt")); 125 128 -
src/org/openstreetmap/josm/io/OsmReader.java
r30 r32 120 120 if (data.lineSegments.contains(ls)) 121 121 throw new JDOMException("Double segment definition "+ls.id); 122 for (Track t : data.tracks)123 if (t.segments.contains(ls))124 throw new JDOMException("Double segment definition "+ls.id);125 122 data.lineSegments.add(ls); 126 123 } else if (child.getName().equals("track")) { … … 176 173 long id = Long.parseLong(child.getAttributeValue("uid")); 177 174 LineSegment ls = findLineSegment(data.lineSegments, id); 178 if (ls != null) { 179 track.segments.add(ls); 180 data.lineSegments.remove(ls); 181 continue; 182 } 183 for (Track t : data.tracks) { 184 ls = findLineSegment(t.segments, id); 185 if (ls != null) { 186 track.segments.add(ls); 187 break; 188 } 189 } 175 track.segments.add(ls); 190 176 } 191 177 return track; … … 195 181 * Search for a segment in a collection by comparing the id. 196 182 */ 197 private LineSegment findLineSegment(Collection<LineSegment> segments, long id) { 183 private LineSegment findLineSegment(Collection<LineSegment> segments, long id) throws JDOMException { 198 184 for (LineSegment ls : segments) 199 185 if (ls.id == id) 200 186 return ls; 201 return null;187 throw new JDOMException("Unknown line segment reference: "+id); 202 188 } 203 189 -
src/org/openstreetmap/josm/io/OsmWriter.java
r30 r32 63 63 list.add(parseNode(n, properties)); 64 64 for (LineSegment ls : ds.lineSegments) 65 list.add(parseLineSegment(ls, properties));66 // all other line segments67 Collection<LineSegment> lineSegments = new HashSet<LineSegment>();68 for (Track t : ds.tracks)69 lineSegments.addAll(t.segments);70 for (LineSegment ls : lineSegments)71 65 list.add(parseLineSegment(ls, properties)); 72 66 for (Track t : ds.tracks)
Note:
See TracChangeset
for help on using the changeset viewer.