// License: GPL. Copyright 2007 by Immanuel Scholz and others package org.openstreetmap.josm.gui; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.Action; import javax.swing.JToggleButton; import org.openstreetmap.josm.tools.Destroyable; /** * Just a toggle button, with smaller border and icon only to display in * MapFrame toolbars. * * @author imi */ public class IconToggleButton extends JToggleButton implements PropertyChangeListener, Destroyable { public boolean groupbutton; /** * Construct the toggle button with the given action. */ public IconToggleButton(Action action) { super(action); setText(null); Object o = action.getValue(Action.SHORT_DESCRIPTION); if (o != null) { setToolTipText(o.toString()); } action.addPropertyChangeListener(this); addMouseListener(new MouseAdapter(){ @Override public void mousePressed(MouseEvent e) { groupbutton = e.getX() > getWidth()/2 && e.getY() > getHeight()/2; } }); } public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals("active")) { setSelected((Boolean)evt.getNewValue()); requestFocusInWindow(); } else if (evt.getPropertyName().equals("selected")) { setSelected((Boolean)evt.getNewValue()); } } public void destroy() { Action action = getAction(); if (action instanceof Destroyable) { ((Destroyable) action).destroy(); } } }