001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.bbox; 003 004import java.awt.Dimension; 005import java.awt.Graphics; 006import java.awt.Point; 007import java.awt.event.MouseAdapter; 008import java.awt.event.MouseEvent; 009 010import javax.swing.ImageIcon; 011import javax.swing.JComponent; 012 013import org.openstreetmap.josm.tools.ImageProvider; 014 015/** 016 * @author Tim Haussmann 017 */ 018public class SizeButton extends JComponent { 019 020 private int x = 0; 021 private int y = 0; 022 023 private ImageIcon enlargeImage; 024 private ImageIcon shrinkImage; 025 private boolean isEnlarged = false; 026 private final SlippyMapBBoxChooser slippyMapBBoxChooser; 027 028 public SizeButton(SlippyMapBBoxChooser slippyMapBBoxChooser){ 029 super(); 030 this.slippyMapBBoxChooser = slippyMapBBoxChooser; 031 enlargeImage = ImageProvider.get("view-fullscreen"); 032 shrinkImage = ImageProvider.get("view-fullscreen-revert"); 033 setPreferredSize(new Dimension(enlargeImage.getIconWidth(), enlargeImage.getIconHeight())); 034 addMouseListener(mouseListener); 035 } 036 037 private final MouseAdapter mouseListener = new MouseAdapter() { 038 @Override 039 public void mouseReleased(MouseEvent e) { 040 if (e.getButton() == MouseEvent.BUTTON1) { 041 toggle(); 042 slippyMapBBoxChooser.resizeSlippyMap(); 043 } 044 } 045 }; 046 047 048 @Override 049 protected void paintComponent(Graphics g) { 050 if(isEnlarged) { 051 if(shrinkImage != null) 052 g.drawImage(shrinkImage.getImage(),x,y, null); 053 } else { 054 if(enlargeImage != null) 055 g.drawImage(enlargeImage.getImage(),x,y, null); 056 } 057 } 058 059 public void toggle() { 060 isEnlarged = !isEnlarged; 061 } 062 063 public boolean isEnlarged() { 064 return isEnlarged; 065 } 066 067 public boolean hit(Point point) { 068 if(x < point.x && point.x < x + enlargeImage.getIconWidth()) { 069 if(y < point.y && point.y < y + enlargeImage.getIconHeight()) { 070 return true; 071 } 072 } 073 return false; 074 } 075 076}