source: josm/trunk/src/org/openstreetmap/josm/gui/SideButton.java@ 4552

Last change on this file since 4552 was 4354, checked in by stoecker, 13 years ago

see #6731 - reduce space required for SideButtons, moved arrow creation into SideButton class

  • Property svn:eol-style set to native
File size: 3.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Color;
7import java.awt.BorderLayout;
8import java.awt.Image;
9import java.awt.Insets;
10import java.awt.event.ActionListener;
11
12import javax.swing.Action;
13import javax.swing.BorderFactory;
14import javax.swing.Icon;
15import javax.swing.ImageIcon;
16import javax.swing.JButton;
17import javax.swing.SwingConstants;
18import javax.swing.plaf.basic.BasicArrowButton;
19
20import org.openstreetmap.josm.Main;
21import org.openstreetmap.josm.tools.ImageProvider;
22import org.openstreetmap.josm.tools.Shortcut;
23
24public class SideButton extends JButton {
25 public SideButton(Action action)
26 {
27 super(action);
28 fixIcon();
29 doStyle();
30 }
31
32 public SideButton(Action action, boolean usename)
33 {
34 super(action);
35 if(!usename)
36 setText(null);
37 fixIcon();
38 doStyle();
39 }
40
41 public SideButton(Action action, String imagename)
42 {
43 super(action);
44 setIcon(makeIcon(imagename));
45 doStyle();
46 }
47
48 void fixIcon() {
49 Icon i = getIcon();
50 if(i != null && i instanceof ImageIcon)
51 {
52 Image im = ((ImageIcon) i).getImage();
53 setIcon(new ImageIcon(im.getScaledInstance(20, 20, Image.SCALE_SMOOTH)));
54 }
55 }
56
57 public static ImageIcon makeIcon(String imagename) {
58 Image im = ImageProvider.get("dialogs", imagename).getImage();
59 return new ImageIcon(im.getScaledInstance(20, 20, Image.SCALE_SMOOTH));
60 }
61
62 public SideButton(String imagename, String property, String tooltip, ActionListener actionListener)
63 {
64 super(makeIcon(imagename));
65 doStyle();
66 setActionCommand(imagename);
67 addActionListener(actionListener);
68 setToolTipText(tooltip);
69 }
70 public SideButton(String name, String imagename, String property, String tooltip, Shortcut shortcut, ActionListener actionListener)
71 {
72 super(tr(name), makeIcon(imagename));
73 if(shortcut != null)
74 {
75 shortcut.setMnemonic(this);
76 if(tooltip != null) {
77 tooltip = Main.platform.makeTooltip(tooltip, shortcut);
78 }
79 }
80 setup(name, property, tooltip, actionListener);
81 }
82 public SideButton(String name, String imagename, String property, String tooltip, ActionListener actionListener)
83 {
84 super(tr(name), makeIcon(imagename));
85 setup(name, property, tooltip, actionListener);
86 }
87 private void setup(String name, String property, String tooltip, ActionListener actionListener)
88 {
89 doStyle();
90 setActionCommand(name);
91 addActionListener(actionListener);
92 setToolTipText(tooltip);
93 putClientProperty("help", "Dialog/"+property+"/"+name);
94 }
95 private void doStyle()
96 {
97 setLayout(new BorderLayout());
98 setIconTextGap(2);
99 setMargin(new Insets(-1,0,-1,0));
100 }
101
102 public void createArrow(ActionListener listener) {
103 setMargin(new Insets(0,0,0,0));
104 BasicArrowButton arrowButton = new BasicArrowButton(SwingConstants.SOUTH, null, null, Color.BLACK, null);
105 arrowButton.setBorder(BorderFactory.createEmptyBorder());
106 add(arrowButton, BorderLayout.EAST);
107 arrowButton.addActionListener(listener);
108 }
109}
Note: See TracBrowser for help on using the repository browser.