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

Last change on this file since 4284 was 4284, checked in by jttt, 13 years ago

Fix "constructor ... is ambiguous" compilation error

  • Property svn:eol-style set to native
File size: 2.7 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;
16import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
17
18/**
19 * Marker class with button look-and-feel.
20 *
21 * @author Frederik Ramm <frederik@remote.org>
22 *
23 */
24public class ButtonMarker extends Marker {
25
26 private Rectangle buttonRectangle;
27
28 public ButtonMarker(LatLon ll, String buttonImage, MarkerLayer parentLayer, double time, double offset) {
29 super(ll, "", buttonImage, parentLayer, time, offset);
30 buttonRectangle = new Rectangle(0, 0, symbol.getIconWidth(), symbol.getIconHeight());
31 }
32
33 public ButtonMarker(LatLon ll, TemplateEngineDataProvider dataProvider, String buttonImage, MarkerLayer parentLayer, double time, double offset) {
34 super(ll, dataProvider, buttonImage, parentLayer, time, offset);
35 buttonRectangle = new Rectangle(0, 0, symbol.getIconWidth(), symbol.getIconHeight());
36 }
37
38 @Override public boolean containsPoint(Point p) {
39 Point screen = Main.map.mapView.getPoint(getEastNorth());
40 buttonRectangle.setLocation(screen.x+4, screen.y+2);
41 return buttonRectangle.contains(p);
42 }
43
44 @Override public void paint(Graphics g, MapView mv, boolean mousePressed, boolean showTextOrIcon) {
45 if (!showTextOrIcon) {
46 super.paint(g, mv, mousePressed, showTextOrIcon);
47 return;
48 }
49 Point screen = mv.getPoint(getEastNorth());
50 buttonRectangle.setLocation(screen.x+4, screen.y+2);
51 symbol.paintIcon(mv, g, screen.x+4, screen.y+2);
52 Border b;
53 Point mousePosition = mv.getMousePosition();
54
55 // mouse is inside the window
56 if (mousePosition != null && mousePressed && containsPoint(mousePosition)) {
57 b = BorderFactory.createBevelBorder(BevelBorder.LOWERED);
58 } else {
59 b = BorderFactory.createBevelBorder(BevelBorder.RAISED);
60 }
61 Insets inset = b.getBorderInsets(mv);
62 Rectangle r = new Rectangle(buttonRectangle);
63 r.grow((inset.top+inset.bottom)/2, (inset.left+inset.right)/2);
64 b.paintBorder(mv, g, r.x, r.y, r.width, r.height);
65
66 String labelText = getText();
67 if ((labelText != null) && showTextOrIcon && Main.pref.getBoolean("marker.buttonlabels", true)) {
68 g.drawString(labelText, screen.x+4, screen.y+2);
69 }
70 }
71}
Note: See TracBrowser for help on using the repository browser.