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

Last change on this file since 2626 was 1727, checked in by stoecker, 15 years ago

fixed last fix

  • Property svn:eol-style set to native
File size: 2.5 KB
Line 
1// License: GPL. Copyright 2007 by Immanuel Scholz and others
2package org.openstreetmap.josm.gui.layer.markerlayer;
3
4import java.awt.Graphics;
5import java.awt.Insets;
6import java.awt.Point;
7import java.awt.Rectangle;
8
9import javax.swing.BorderFactory;
10import javax.swing.border.BevelBorder;
11import javax.swing.border.Border;
12
13import org.openstreetmap.josm.Main;
14import org.openstreetmap.josm.data.coor.LatLon;
15import org.openstreetmap.josm.gui.MapView;
16
17/**
18 * Marker class with button look-and-feel.
19 *
20 * @author Frederik Ramm <frederik@remote.org>
21 *
22 */
23public class ButtonMarker extends Marker {
24
25 private Rectangle buttonRectangle;
26
27 public ButtonMarker(LatLon ll, String buttonImage, MarkerLayer parentLayer, double time, double offset) {
28 super(ll, null, buttonImage, parentLayer, time, offset);
29 buttonRectangle = new Rectangle(0, 0, symbol.getIconWidth(), symbol.getIconHeight());
30 }
31
32 public ButtonMarker(LatLon ll, String text, String buttonImage, MarkerLayer parentLayer, double time, double offset) {
33 super(ll, text, buttonImage, parentLayer, time, offset);
34 buttonRectangle = new Rectangle(0, 0, symbol.getIconWidth(), symbol.getIconHeight());
35 }
36
37 @Override public boolean containsPoint(Point p) {
38 Point screen = Main.map.mapView.getPoint(getEastNorth());
39 buttonRectangle.setLocation(screen.x+4, screen.y+2);
40 return buttonRectangle.contains(p);
41 }
42
43 @Override public void paint(Graphics g, MapView mv, boolean mousePressed, String show) {
44 if (! show.equalsIgnoreCase("show")) {
45 super.paint(g, mv, mousePressed, show);
46 return;
47 }
48 Point screen = mv.getPoint(getEastNorth());
49 buttonRectangle.setLocation(screen.x+4, screen.y+2);
50 symbol.paintIcon(mv, g, screen.x+4, screen.y+2);
51 Border b;
52 Point mousePosition = mv.getMousePosition();
53
54 // mouse is inside the window
55 if (mousePosition != null && mousePressed && containsPoint(mousePosition)) {
56 b = BorderFactory.createBevelBorder(BevelBorder.LOWERED);
57 } else {
58 b = BorderFactory.createBevelBorder(BevelBorder.RAISED);
59 }
60 Insets inset = b.getBorderInsets(mv);
61 Rectangle r = new Rectangle(buttonRectangle);
62 r.grow((inset.top+inset.bottom)/2, (inset.left+inset.right)/2);
63 b.paintBorder(mv, g, r.x, r.y, r.width, r.height);
64 if ((text != null) && (show.equalsIgnoreCase("show")) && Main.pref.getBoolean("marker.buttonlabels", true))
65 g.drawString(text, screen.x+4, screen.y+2);
66 }
67}
Note: See TracBrowser for help on using the repository browser.