package org.openstreetmap.josm.gui;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.Image;
import java.awt.Insets;
import java.awt.event.ActionListener;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.tools.ImageProvider;
import org.openstreetmap.josm.tools.Shortcut;
public class SideButton extends JButton {
public SideButton(Action action)
{
super(action);
fixIcon();
doStyle();
}
public SideButton(Action action, boolean usename)
{
super(action);
if(!usename)
setText(null);
fixIcon();
doStyle();
}
public SideButton(Action action, String imagename)
{
super(action);
setIcon(makeIcon(imagename));
doStyle();
}
void fixIcon() {
Icon i = getIcon();
if(i != null && i instanceof ImageIcon)
{
Image im = ((ImageIcon) i).getImage();
setIcon(new ImageIcon(im.getScaledInstance(20 , 20, Image.SCALE_SMOOTH)));
}
}
public static ImageIcon makeIcon(String imagename) {
Image im = ImageProvider.get("dialogs", imagename).getImage();
return new ImageIcon(im.getScaledInstance(20 , 20, Image.SCALE_SMOOTH));
}
public SideButton(String imagename, String property, String tooltip, ActionListener actionListener)
{
super(makeIcon(imagename));
doStyle();
setActionCommand(imagename);
addActionListener(actionListener);
setToolTipText(tooltip);
}
public SideButton(String name, String imagename, String property, String tooltip, Shortcut shortcut, ActionListener actionListener)
{
super(tr(name), makeIcon(imagename));
if(shortcut != null)
{
shortcut.setMnemonic(this);
if(tooltip != null) {
tooltip = Main.platform.makeTooltip(tooltip, shortcut);
}
}
setup(name, property, tooltip, actionListener);
}
public SideButton(String name, String imagename, String property, String tooltip, ActionListener actionListener)
{
super(tr(name), makeIcon(imagename));
setup(name, property, tooltip, actionListener);
}
private void setup(String name, String property, String tooltip, ActionListener actionListener)
{
doStyle();
setActionCommand(name);
addActionListener(actionListener);
setToolTipText(tooltip);
putClientProperty("help", "Dialog/"+property+"/"+name);
}
private void doStyle()
{
setMargin(new Insets(1,1,1,1));
setIconTextGap(2);
}
}