Changeset 12156 in josm for trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
- Timestamp:
- 2017-05-15T14:14:40+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
r12155 r12156 9 9 import java.io.File; 10 10 import java.text.DateFormat; 11 import java.util.ArrayList;12 11 import java.util.Arrays; 13 12 import java.util.Collection; … … 60 59 /** 61 60 * used by {@link ChooseTrackVisibilityAction} to determine which tracks to show/hide 61 * 62 * Call {@link #invalidate()} after each change! 63 * 64 * TODO: Make it private, make it respond to track changes. 62 65 */ 63 66 public boolean[] trackVisibility = new boolean[0]; 64 65 private final List<GpxTrack> lastTracks = new ArrayList<>(); // List of tracks at last paint66 private int lastUpdateCount;67 67 68 68 private final GpxDrawHelper drawHelper; … … 94 94 super(d.getString(GpxConstants.META_NAME)); 95 95 data = d; 96 data.addWeakChangeListener(e -> this.invalidate()); 96 97 drawHelper = new GpxDrawHelper(data); 97 98 SystemOfMeasurement.addSoMChangeListener(drawHelper); … … 151 152 } 152 153 153 if (!data. tracks.isEmpty()) {154 if (!data.getTracks().isEmpty()) { 154 155 info.append("<table><thead align='center'><tr><td colspan='5'>") 155 156 .append(trn("{0} track", "{0} tracks", data.tracks.size(), data.tracks.size())) … … 159 160 .append("</td></tr></thead>"); 160 161 161 for (GpxTrack trk : data. tracks) {162 for (GpxTrack trk : data.getTracks()) { 162 163 info.append("<tr><td>"); 163 164 if (trk.getAttributes().containsKey(GpxConstants.GPX_NAME)) { … … 182 183 183 184 info.append(tr("Length: {0}", SystemOfMeasurement.getSystemOfMeasurement().getDistText(data.length()))).append("<br>") 184 .append(trn("{0} route, ", "{0} routes, ", data. routes.size(), data.routes.size()))185 .append(trn("{0} waypoint", "{0} waypoints", data. waypoints.size(), data.waypoints.size())).append("<br></html>");185 .append(trn("{0} route, ", "{0} routes, ", data.getRoutes().size(), data.getRoutes().size())) 186 .append(trn("{0} waypoint", "{0} waypoints", data.getWaypoints().size(), data.getWaypoints().size())).append("<br></html>"); 186 187 187 188 final JScrollPane sp = new JScrollPane(new HtmlPanel(info.toString())); … … 240 241 } 241 242 242 info.append(trn("{0} track, ", "{0} tracks, ", data. tracks.size(), data.tracks.size()))243 .append(trn("{0} route, ", "{0} routes, ", data. routes.size(), data.routes.size()))244 .append(trn("{0} waypoint", "{0} waypoints", data. waypoints.size(), data.waypoints.size())).append("<br>")243 info.append(trn("{0} track, ", "{0} tracks, ", data.getTracks().size(), data.getTracks().size())) 244 .append(trn("{0} route, ", "{0} routes, ", data.getRoutes().size(), data.getRoutes().size())) 245 .append(trn("{0} waypoint", "{0} waypoints", data.getWaypoints().size(), data.getWaypoints().size())).append("<br>") 245 246 .append(tr("Length: {0}", SystemOfMeasurement.getSystemOfMeasurement().getDistText(data.length()))) 246 247 .append("<br></html>"); … … 251 252 public boolean isMergable(Layer other) { 252 253 return other instanceof GpxLayer; 253 }254 255 private int sumUpdateCount() {256 int updateCount = 0;257 for (GpxTrack track: data.tracks) {258 updateCount += track.getUpdateCount();259 }260 return updateCount;261 }262 263 @Override264 public boolean isChanged() {265 if (data.tracks.equals(lastTracks))266 return sumUpdateCount() != lastUpdateCount;267 else268 return true;269 254 } 270 255 … … 279 264 long from = fromDate.getTime(); 280 265 long to = toDate.getTime(); 281 for (GpxTrack trk : data. tracks) {266 for (GpxTrack trk : data.getTracks()) { 282 267 Date[] t = GpxData.getMinMaxTimeForTrack(trk); 283 268 … … 287 272 i++; 288 273 } 274 invalidate(); 289 275 } 290 276 … … 299 285 @Override 300 286 public void paint(Graphics2D g, MapView mv, Bounds box) { 301 lastUpdateCount = sumUpdateCount();302 lastTracks.clear();303 lastTracks.addAll(data.tracks);304 305 287 List<WayPoint> visibleSegments = listVisibleSegments(box); 306 288 if (!visibleSegments.isEmpty()) { … … 363 345 */ 364 346 private void ensureTrackVisibilityLength() { 365 final int l = data. tracks.size();347 final int l = data.getTracks().size(); 366 348 if (l == trackVisibility.length) 367 349 return; … … 371 353 trackVisibility[i] = true; 372 354 } 355 invalidate(); 373 356 } 374 357
Note:
See TracChangeset
for help on using the changeset viewer.