source: josm/trunk/src/org/openstreetmap/josm/gui/layer/GpxRouteLayer.java@ 18077

Last change on this file since 18077 was 16864, checked in by simon04, 4 years ago

fix #15441 - Separate GpxRouteLayer

File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.layer;
3
4import static org.openstreetmap.josm.tools.I18n.trn;
5
6import java.awt.Graphics2D;
7import java.util.ArrayList;
8import java.util.Collection;
9
10import javax.swing.Action;
11import javax.swing.Icon;
12
13import org.openstreetmap.josm.data.Bounds;
14import org.openstreetmap.josm.data.gpx.GpxRoute;
15import org.openstreetmap.josm.data.gpx.Line;
16import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
17import org.openstreetmap.josm.gui.MapView;
18import org.openstreetmap.josm.gui.layer.gpx.GpxDrawHelper;
19import org.openstreetmap.josm.tools.Utils;
20
21/**
22 * A layer that displays {@linkplain org.openstreetmap.josm.data.gpx.GpxData#routes} from a GPX file.
23 */
24public class GpxRouteLayer extends AbstractModifiableLayer {
25
26 public final GpxLayer fromLayer;
27 private final Collection<GpxRoute> routes = new ArrayList<>();
28
29 public GpxRouteLayer() {
30 this(null, null);
31 }
32
33 public GpxRouteLayer(String name, GpxLayer fromLayer) {
34 super(name);
35 this.fromLayer = fromLayer;
36 if (fromLayer != null) {
37 this.routes.addAll(fromLayer.data.routes);
38 }
39 }
40
41 @Override
42 public boolean isModified() {
43 return fromLayer.isModified();
44 }
45
46 @Override
47 public Icon getIcon() {
48 return null;
49 }
50
51 @Override
52 public String getToolTipText() {
53 final String tooltip = trn("{0} route, ", "{0} routes, ", routes.size(), routes.size());
54 return Utils.strip(tooltip, " ,");
55 }
56
57 @Override
58 public void mergeFrom(Layer from) {
59 if (from instanceof GpxRouteLayer) {
60 routes.addAll(((GpxRouteLayer) from).routes);
61 }
62 }
63
64 @Override
65 public boolean isMergable(Layer other) {
66 return other instanceof GpxRouteLayer;
67 }
68
69 @Override
70 public void visitBoundingBox(BoundingXYVisitor v) {
71 fromLayer.visitBoundingBox(v);
72 }
73
74 @Override
75 public Object getInfoComponent() {
76 return null;
77 }
78
79 @Override
80 public Action[] getMenuEntries() {
81 return new Action[0];
82 }
83
84 @Override
85 public void paint(Graphics2D g, MapView mv, Bounds bbox) {
86 // unused - we use a painter so this is not called.
87 }
88
89 @Override
90 protected LayerPainter createMapViewPainter(MapViewEvent event) {
91 return new GpxDrawHelper(fromLayer) {
92 @Override
93 protected Iterable<Line> getLinesIterable(boolean[] trackVisibility) {
94 return () -> routes.stream().map(Line::new).iterator();
95 }
96 };
97 }
98}
Note: See TracBrowser for help on using the repository browser.