Ignore:
Timestamp:
2014-06-30T21:34:02+02:00 (10 years ago)
Author:
glebius
Message:

Somehow fix EDT violations in LiveGpsDialog.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/livegps/src/livegps/LiveGpsDialog.java

    r30351 r30506  
    1414import javax.swing.JLabel;
    1515import javax.swing.JPanel;
     16import javax.swing.SwingUtilities;
    1617
    1718import org.openstreetmap.josm.gui.MapFrame;
     
    3233    private JLabel speedLabel;
    3334    private JPanel panel;
     35    private LiveGpsStatus status;
     36    private LiveGpsData data;
    3437
    3538    /**
     
    6467        if (!isVisible())
    6568            return;
     69
    6670        if("gpsdata".equals(evt.getPropertyName())) {
    67             LiveGpsData data = (LiveGpsData) evt.getNewValue();
    68             if(data.isFix()) {
    69 //                fixLabel.setText("fix");
    70                 panel.setBackground(Color.WHITE);
    71                 latLabel.setText(data.getLatitude() + "deg");
    72                 longLabel.setText(data.getLongitude() + "deg");
    73                 double mySpeed = data.getSpeed() * 3.6f;
    74                 speedLabel.setText((Math.round(mySpeed*100)/100) + "km/h"); // m(s to km/h
    75                 courseLabel.setText(data.getCourse() + "deg");
     71            data = (LiveGpsData) evt.getNewValue();
    7672
    77                 String wayString = data.getWayInfo();
    78                 if(wayString.length() > 0) {
    79                     wayLabel.setText(wayString);
     73            SwingUtilities.invokeLater(new Runnable() {
     74            @Override
     75            public void run() {
     76                if(data.isFix()) {
     77                    panel.setBackground(Color.WHITE);
     78                    latLabel.setText(data.getLatitude() + "deg");
     79                    longLabel.setText(data.getLongitude() + "deg");
     80                    double mySpeed = data.getSpeed() * 3.6f;
     81                    speedLabel.setText((Math.round(mySpeed*100)/100) + "km/h");
     82                    courseLabel.setText(data.getCourse() + "deg");
     83
     84                    String wayString = data.getWayInfo();
     85                    if(wayString.length() > 0) {
     86                        wayLabel.setText(wayString);
     87                    } else {
     88                        wayLabel.setText(tr("unknown"));
     89                    }
    8090                } else {
    81                     wayLabel.setText(tr("unknown"));
     91                    latLabel.setText("");
     92                    longLabel.setText("");
     93                    speedLabel.setText("");
     94                    courseLabel.setText("");
     95                    panel.setBackground(Color.RED);
    8296                }
     97            }});
     98        } else if ("gpsstatus".equals(evt.getPropertyName())) {
     99            status = (LiveGpsStatus) evt.getNewValue();
    83100
    84             } else {
    85 //                fixLabel.setText("no fix");
    86                 latLabel.setText("");
    87                 longLabel.setText("");
    88                 speedLabel.setText("");
    89                 courseLabel.setText("");
    90                 panel.setBackground(Color.RED);
    91             }
    92         } else if ("gpsstatus".equals(evt.getPropertyName())) {
    93             LiveGpsStatus status = (LiveGpsStatus) evt.getNewValue();
    94             statusLabel.setText(status.getStatusMessage());
    95             if(status.getStatus() != LiveGpsStatus.GpsStatus.CONNECTED) {
    96                 panel.setBackground(Color.RED);
    97             } else {
    98                 panel.setBackground(Color.WHITE);
    99             }
     101            SwingUtilities.invokeLater(new Runnable() {
     102            @Override
     103            public void run() {
     104                statusLabel.setText(status.getStatusMessage());
     105                if(status.getStatus() != LiveGpsStatus.GpsStatus.CONNECTED) {
     106                    panel.setBackground(Color.RED);
     107                } else {
     108                    panel.setBackground(Color.WHITE);
     109                }
     110            }});
    100111        }
    101 
    102112    }
    103113}
Note: See TracChangeset for help on using the changeset viewer.