source: josm/src/org/openstreetmap/josm/actions/mapmode/DebugAction.java@ 15

Last change on this file since 15 was 15, checked in by imi, 19 years ago

renamed alot (Layer instead of MapView) and removed feature of having
projections on every Layer.

File size: 1.7 KB
Line 
1package org.openstreetmap.josm.actions.mapmode;
2
3import java.awt.BorderLayout;
4import java.awt.Color;
5import java.awt.Graphics;
6import java.awt.Point;
7import java.awt.Rectangle;
8import java.awt.event.KeyEvent;
9import java.awt.event.MouseEvent;
10
11import javax.swing.JLabel;
12
13import org.openstreetmap.josm.data.osm.LineSegment;
14import org.openstreetmap.josm.data.osm.Track;
15import org.openstreetmap.josm.gui.MapFrame;
16
17/**
18 * To debug zone information
19 *
20 * @author imi
21 */
22public class DebugAction extends MapMode {
23
24 private JLabel label = new JLabel();
25
26 public DebugAction(MapFrame mapFrame) {
27 super("Debug Zones", "debug", "Debug only. Just ignore.", KeyEvent.VK_D, mapFrame);
28 }
29
30 @Override
31 public void registerListener() {
32 super.registerListener();
33 layer.addMouseMotionListener(this);
34 layer.addMouseListener(this);
35 mapFrame.add(label, BorderLayout.SOUTH);
36 }
37
38 @Override
39 public void unregisterListener() {
40 super.unregisterListener();
41 layer.removeMouseMotionListener(this);
42 layer.removeMouseListener(this);
43 mapFrame.remove(label);
44 }
45
46 @Override
47 public void mouseClicked(MouseEvent e) {
48 Graphics g = mapFrame.layer.getGraphics();
49 g.setColor(Color.WHITE);
50 for (Track t :mapFrame.layer.dataSet.tracks())
51 for (LineSegment ls : t.segments()) {
52 Point A = mapFrame.layer.getScreenPoint(ls.getStart().coor);
53 Point B = mapFrame.layer.getScreenPoint(ls.getEnd().coor);
54 Point C = e.getPoint();
55 Rectangle r = new Rectangle(A.x, A.y, B.x-A.x, B.y-A.y);
56 double dist = perpendicularDistSq(B.distanceSq(C), A.distanceSq(C), A.distanceSq(B));
57 g.drawString(""+dist, (int)r.getCenterX(), (int)r.getCenterY());
58 }
59 }
60
61 private double perpendicularDistSq(double a, double b, double c) {
62 return a-(a-b+c)*(a-b+c)/4/c;
63 }
64}
Note: See TracBrowser for help on using the repository browser.