Changeset 19680 in osm for applications/editors/josm


Ignore:
Timestamp:
2010-01-30T20:06:10+01:00 (15 years ago)
Author:
jttt
Message:

Fixed #4450 LiveGPS sporadic errors, addapted to JOSM r2907

Location:
applications/editors/josm/plugins/livegps
Files:
2 added
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/livegps/build.xml

    r19448 r19680  
    2828
    2929        <property name="commit.message" value="Changed the constructor signature of the plugin main class" />
    30         <property name="plugin.main.version" value="2830" />
     30        <property name="plugin.main.version" value="2907" />
    3131       
    3232
  • applications/editors/josm/plugins/livegps/src/livegps/LiveGpsData.java

    r16945 r19680  
    99
    1010import org.openstreetmap.josm.Main;
    11 import org.openstreetmap.josm.data.coor.EastNorth;
    1211import org.openstreetmap.josm.data.coor.LatLon;
    1312import org.openstreetmap.josm.data.osm.Way;
  • applications/editors/josm/plugins/livegps/src/livegps/LiveGpsLayer.java

    r19011 r19680  
    99import java.beans.PropertyChangeListener;
    1010import java.text.SimpleDateFormat;
    11 import java.util.ArrayList;
    12 import java.util.Collection;
    1311import java.util.Date;
     12import java.util.HashMap;
     13import java.util.Map;
    1414
    1515import org.openstreetmap.josm.Main;
     
    1818import org.openstreetmap.josm.data.gpx.GpxData;
    1919import org.openstreetmap.josm.data.gpx.GpxTrack;
     20import org.openstreetmap.josm.data.gpx.SingleSegmentGpxTrack;
    2021import org.openstreetmap.josm.data.gpx.WayPoint;
    2122import org.openstreetmap.josm.gui.MapView;
     
    2728        LatLon lastPos;
    2829        WayPoint lastPoint;
    29         GpxTrack trackBeingWritten;
    30         Collection<WayPoint> trackSegment;
     30        private final AppendableGpxTrackSegment trackSegment;
    3131        float speed;
    3232        float course;
     
    3535        boolean autocenter;
    3636        private SimpleDateFormat dateFormat = new SimpleDateFormat(
    37                         "yyyy-MM-dd'T'HH:mm:ss.SSS");
     37        "yyyy-MM-dd'T'HH:mm:ss.SSS");
    3838
    3939        /**
     
    4444        public LiveGpsLayer(GpxData data) {
    4545                super(data, LAYER_NAME);
    46                 trackBeingWritten = new GpxTrack();
    47                 trackBeingWritten.attr.put("desc", "josm live gps");
    48                 trackSegment = new ArrayList<WayPoint>();
    49                 trackBeingWritten.trackSegs.add(trackSegment);
     46                trackSegment = new AppendableGpxTrackSegment();
     47
     48                Map<String, Object> attr = new HashMap<String, Object>();
     49                attr.put("desc", "josm live gps");
     50
     51                GpxTrack trackBeingWritten = new SingleSegmentGpxTrack(trackSegment, attr);
    5052                data.tracks.add(trackBeingWritten);
    5153        }
     
    6365                lastPoint = new WayPoint(thisPos);
    6466                lastPoint.attr.put("time", dateFormat.format(new Date()));
    65                 // synchronize when adding data, as otherwise the autosave action
    66                 // needs concurrent access and this results in an exception!
    67                 synchronized (LiveGpsLock.class) {
    68                         trackSegment.add(lastPoint);
    69                 }
     67                trackSegment.addWaypoint(lastPoint);
    7068                if (autocenter && allowRedraw()) {
    7169                        center();
     
    104102        public void paint(Graphics2D g, MapView mv, Bounds bounds) {
    105103                // System.out.println("in paint");
    106                 synchronized (LiveGpsLock.class) {
    107                         // System.out.println("in synced paint");
    108                         super.paint(g, mv, bounds);
    109                         // int statusHeight = 50;
    110                         // Rectangle mvs = mv.getBounds();
    111                         // mvs.y = mvs.y + mvs.height - statusHeight;
    112                         // mvs.height = statusHeight;
    113                         // g.setColor(new Color(1.0f, 1.0f, 1.0f, 0.8f));
    114                         // g.fillRect(mvs.x, mvs.y, mvs.width, mvs.height);
     104                // System.out.println("in synced paint");
     105                super.paint(g, mv, bounds);
     106                // int statusHeight = 50;
     107                // Rectangle mvs = mv.getBounds();
     108                // mvs.y = mvs.y + mvs.height - statusHeight;
     109                // mvs.height = statusHeight;
     110                // g.setColor(new Color(1.0f, 1.0f, 1.0f, 0.8f));
     111                // g.fillRect(mvs.x, mvs.y, mvs.width, mvs.height);
    115112
    116                         if (lastPoint != null) {
    117                                 Point screen = mv.getPoint(lastPoint.getCoor());
    118                                 g.setColor(Main.pref.getColor(KEY_LIVEGPS_COLOR, Color.RED));
    119                                 g.drawOval(screen.x - 10, screen.y - 10, 20, 20);
    120                                 g.drawOval(screen.x - 9, screen.y - 9, 18, 18);
    121                         }
     113                if (lastPoint != null) {
     114                        Point screen = mv.getPoint(lastPoint.getCoor());
     115                        g.setColor(Main.pref.getColor(KEY_LIVEGPS_COLOR, Color.RED));
     116                        g.drawOval(screen.x - 10, screen.y - 10, 20, 20);
     117                        g.drawOval(screen.x - 9, screen.y - 9, 18, 18);
     118                }
    122119
    123                         // lbl.setText("gpsd: "+status+" Speed: " + speed +
    124                         // " Course: "+course);
    125                         // lbl.setBounds(0, 0, mvs.width-10, mvs.height-10);
    126                         // Graphics sub = g.create(mvs.x+5, mvs.y+5, mvs.width-10,
    127                         // mvs.height-10);
    128                         // lbl.paint(sub);
     120                // lbl.setText("gpsd: "+status+" Speed: " + speed +
     121                // " Course: "+course);
     122                // lbl.setBounds(0, 0, mvs.width-10, mvs.height-10);
     123                // Graphics sub = g.create(mvs.x+5, mvs.y+5, mvs.width-10,
     124                // mvs.height-10);
     125                // lbl.paint(sub);
    129126
    130                         // if(status != null) {
    131                         // g.setColor(Color.WHITE);
    132                         // g.drawString("gpsd: " + status, 5, mv.getBounds().height - 15);
    133                         // // lower left corner
    134                         // }
    135                 }
     127                // if(status != null) {
     128                // g.setColor(Color.WHITE);
     129                // g.drawString("gpsd: " + status, 5, mv.getBounds().height - 15);
     130                // // lower left corner
     131                // }
    136132        }
    137133
     
    176172        /**
    177173         * Check, if a redraw is currently allowed.
    178          * 
    179          * @return true, if a redraw is permitted, false, if a re-draw 
     174         *
     175         * @return true, if a redraw is permitted, false, if a re-draw
    180176         * should be suppressed.
    181177         */
Note: See TracChangeset for help on using the changeset viewer.