source: josm/src/org/openstreetmap/josm/gui/layer/markerlayer/ButtonMarker.java@ 200

Last change on this file since 200 was 200, checked in by imi, 17 years ago
  • new MarkerLayer code from Frederik. Supports Audio, Image and WebMarker (links)
File size: 1.7 KB
Line 
1package org.openstreetmap.josm.gui.layer.markerlayer;
2
3import java.awt.Graphics;
4import java.awt.Insets;
5import java.awt.Point;
6import java.awt.Rectangle;
7
8import javax.swing.BorderFactory;
9import javax.swing.border.BevelBorder;
10import javax.swing.border.Border;
11
12import org.openstreetmap.josm.Main;
13import org.openstreetmap.josm.data.coor.LatLon;
14import org.openstreetmap.josm.gui.MapView;
15
16/**
17 * Marker class with button look-and-feel.
18 *
19 * @author Frederik Ramm <frederik@remote.org>
20 *
21 */
22public class ButtonMarker extends Marker {
23
24 private Rectangle buttonRectangle;
25
26 public ButtonMarker(LatLon ll, String buttonImage) {
27 super(ll, null, buttonImage);
28 buttonRectangle = new Rectangle(0, 0, symbol.getIconWidth(), symbol.getIconHeight());
29 }
30
31 @Override public boolean containsPoint(Point p) {
32 Point screen = Main.map.mapView.getPoint(eastNorth);
33 buttonRectangle.setLocation(screen.x+4, screen.y+2);
34 return buttonRectangle.contains(p);
35 }
36
37 @Override public void paint(Graphics g, MapView mv, boolean mousePressed, String show) {
38 Point screen = mv.getPoint(eastNorth);
39 buttonRectangle.setLocation(screen.x+4, screen.y+2);
40 symbol.paintIcon(mv, g, screen.x+4, screen.y+2);
41 Border b;
42 Point mousePosition = mv.getMousePosition();
43 if (mousePosition == null)
44 return; // mouse outside the whole window
45
46 if (mousePressed) {
47 b = BorderFactory.createBevelBorder(BevelBorder.LOWERED);
48 } else {
49 b = BorderFactory.createBevelBorder(BevelBorder.RAISED);
50 }
51 Insets inset = b.getBorderInsets(mv);
52 Rectangle r = new Rectangle(buttonRectangle);
53 r.grow((inset.top+inset.bottom)/2, (inset.left+inset.right)/2);
54 b.paintBorder(mv, g, r.x, r.y, r.width, r.height);
55 }
56}
Note: See TracBrowser for help on using the repository browser.