source: subversion/applications/editors/josm/plugins/livegps/src/livegps/LiveGpsDialog.java

Last change on this file was 33078, checked in by donvip, 2 years ago

checkstyle

  • Property svn:eol-style set to native
File size: 3.7 KB
Line 
1// License: Public Domain. For details, see LICENSE file.
2package livegps;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Color;
7import java.awt.GridLayout;
8import java.awt.event.KeyEvent;
9import java.beans.PropertyChangeEvent;
10import java.beans.PropertyChangeListener;
11
12import javax.swing.JLabel;
13import javax.swing.JPanel;
14import javax.swing.SwingUtilities;
15
16import org.openstreetmap.josm.gui.MapFrame;
17import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
18import org.openstreetmap.josm.tools.Shortcut;
19
20/**
21 * @author cdaller
22 *
23 */
24public class LiveGpsDialog extends ToggleDialog implements PropertyChangeListener {
25    private static final long serialVersionUID = 6183400754671501117L;
26    private JLabel statusLabel;
27    private JLabel wayLabel;
28    private JLabel latLabel;
29    private JLabel longLabel;
30    private JLabel courseLabel;
31    private JLabel speedLabel;
32    private JPanel panel;
33    private LiveGpsStatus status;
34    private LiveGpsData data;
35
36    public LiveGpsDialog(final MapFrame mapFrame) {
37        super(tr("Live GPS"), "livegps", tr("Show GPS data."),
38        Shortcut.registerShortcut("subwindow:livegps", tr("Toggle: {0}", tr("Live GPS")),
39        KeyEvent.VK_G, Shortcut.ALT_CTRL_SHIFT), 100);
40        panel = new JPanel();
41        panel.setLayout(new GridLayout(6, 2));
42        panel.add(new JLabel(tr("Status")));
43        panel.add(statusLabel = new JLabel());
44        panel.add(new JLabel(tr("Way Info")));
45        panel.add(wayLabel = new JLabel());
46        panel.add(new JLabel(tr("Latitude")));
47        panel.add(latLabel = new JLabel());
48        panel.add(new JLabel(tr("Longitude")));
49        panel.add(longLabel = new JLabel());
50        panel.add(new JLabel(tr("Speed")));
51        panel.add(speedLabel = new JLabel());
52        panel.add(new JLabel(tr("Course")));
53        panel.add(courseLabel = new JLabel());
54        createLayout(panel, true, null);
55    }
56
57    @Override
58    public void propertyChange(PropertyChangeEvent evt) {
59        if (!isVisible())
60            return;
61
62        if ("gpsdata".equals(evt.getPropertyName())) {
63            data = (LiveGpsData) evt.getNewValue();
64
65            SwingUtilities.invokeLater(new Runnable() {
66            @Override
67            public void run() {
68                if (data.isFix()) {
69                    panel.setBackground(Color.WHITE);
70                    latLabel.setText(data.getLatitude() + "deg");
71                    longLabel.setText(data.getLongitude() + "deg");
72                    double mySpeed = data.getSpeed() * 3.6f;
73                    speedLabel.setText((Math.round(mySpeed*100)/100) + "km/h");
74                    courseLabel.setText(data.getCourse() + "deg");
75
76                    String wayString = data.getWayInfo();
77                    if (!wayString.isEmpty()) {
78                        wayLabel.setText(wayString);
79                    } else {
80                        wayLabel.setText(tr("unknown"));
81                    }
82                } else {
83                    latLabel.setText("");
84                    longLabel.setText("");
85                    speedLabel.setText("");
86                    courseLabel.setText("");
87                    panel.setBackground(Color.RED);
88                }
89            } });
90        } else if ("gpsstatus".equals(evt.getPropertyName())) {
91            status = (LiveGpsStatus) evt.getNewValue();
92
93            SwingUtilities.invokeLater(new Runnable() {
94            @Override
95            public void run() {
96                statusLabel.setText(status.getStatusMessage());
97                if (status.getStatus() != LiveGpsStatus.GpsStatus.CONNECTED) {
98                    panel.setBackground(Color.RED);
99                } else {
100                    panel.setBackground(Color.WHITE);
101                }
102            } });
103        }
104    }
105}
Note: See TracBrowser for help on using the repository browser.