1 package jp.sourceforge.stigmata.ui.swing;
7 import java.awt.Component;
9 import java.lang.reflect.InvocationTargetException;
10 import java.lang.reflect.Method;
12 import java.text.MessageFormat;
14 import javax.swing.Action;
15 import javax.swing.Icon;
16 import javax.swing.ImageIcon;
17 import javax.swing.JButton;
18 import javax.swing.JCheckBoxMenuItem;
19 import javax.swing.JComponent;
20 import javax.swing.JMenu;
21 import javax.swing.JMenuItem;
22 import javax.swing.JTabbedPane;
23 import javax.swing.border.TitledBorder;
25 import jp.sourceforge.talisman.i18n.Messages;
28 * Utility routines for building GUI.
30 * @author Haruaki TAMADA
31 * @version $Revision$ $Date$
33 public class GUIUtility{
37 public static void decorateJComponent(Messages messages, JComponent component, String label){
38 if(messages.hasValue(label + ".tooltip")){
39 component.setToolTipText(messages.get(label + ".tooltip"));
41 if(messages.hasValue(label + ".border")){
42 component.setBorder(new TitledBorder(messages.get(label + ".border")));
45 Icon icon = getIcon(messages, label + ".icon");
47 Method[] methods = component.getClass().getMethods();
48 for(Method m: methods){
49 if(m.getName().equals("setIcon")){
50 m.invoke(component, icon);
54 } catch(IllegalAccessException e){
55 throw new InternalError(e.getMessage());
56 } catch(InvocationTargetException e){
57 throw new InternalError(e.getMessage());
61 public static JButton createButton(Messages messages, String label, Action action){
62 JButton button = new JButton(action);
63 button.setText(messages.get(label + ".button.label"));
64 button.setActionCommand(label);
65 if(messages.hasValue(label + ".button.tooltip")){
66 button.setToolTipText(messages.get(label + ".button.tooltip"));
68 Icon icon = getIcon(messages, label + ".button.icon");
76 public static JButton createButton(Messages messages, String label){
77 JButton button = new JButton(messages.get(label + ".button.label"));
78 button.setActionCommand(label);
79 if(messages.hasValue(label + ".button.tooltip")){
80 button.setToolTipText(messages.get(label + ".button.tooltip"));
82 Icon icon = getIcon(messages, label + ".button.icon");
90 public static JCheckBoxMenuItem createJCheckBoxMenuItem(Messages messages, String label){
91 return createJCheckBoxMenuItem(messages, label, false);
94 public static JCheckBoxMenuItem createJCheckBoxMenuItem(Messages messages, String label, boolean status){
95 JCheckBoxMenuItem item = new JCheckBoxMenuItem(messages.get(label + ".menuitem.label"), status);
96 item.setActionCommand(label);
97 if(messages.hasValue(label + ".menuitem.tooltip")){
98 item.setToolTipText(messages.get(label + ".menuitem.tooltip"));
100 Icon icon = getIcon(messages, label + ".menuitem.icon");
107 public static JMenuItem createJMenuItem(Messages messages, String label, Action action){
108 JMenuItem item = new JMenuItem(action);
109 item.setText(messages.get(label + ".menuitem.label"));
110 item.setActionCommand(label);
111 if(messages.hasValue(label + ".menuitem.tooltip")){
112 item.setToolTipText(messages.get(label + ".menuitem.tooltip"));
114 Icon icon = getIcon(messages, label + ".menuitem.icon");
121 public static JMenuItem createJMenuItem(Messages messages, String label){
122 JMenuItem item = new JMenuItem(messages.get(label + ".menuitem.label"));
123 item.setActionCommand(label);
124 if(messages.hasValue(label + ".menuitem.tooltip")){
125 item.setToolTipText(messages.get(label + ".menuitem.tooltip"));
127 Icon icon = getIcon(messages, label + ".menuitem.icon");
134 public static JMenu createJMenu(Messages messages, String label){
135 JMenu menu = new JMenu(messages.get(label + ".menu.label"));
136 menu.setActionCommand(label);
137 if(messages.hasValue(label + ".menu.tooltip")){
138 menu.setToolTipText(messages.get(label + ".menu.tooltip"));
140 Icon icon = getIcon(messages, label + ".menu.icon");
147 public static URL getResource(Messages messages, String resourcePathLabel, String resourcePathPrefix){
148 if(messages.hasValue(resourcePathLabel)){
149 String resourcePath = messages.get(resourcePathLabel);
150 if(resourcePathPrefix != null){
151 resourcePath = resourcePathPrefix + resourcePath;
153 return GUIUtility.class.getResource(resourcePath);
158 public static URL getResource(Messages messages, String resourcePathLabel){
159 return getResource(messages, resourcePathLabel, null);
162 public static Icon getIcon(Messages messages, String label){
163 URL url = getResource(messages, label, messages.get("icon.path"));
165 ImageIcon icon = new ImageIcon(url);
172 public static Image getImage(Messages messages, String imageFilePathLabel){
173 Icon icon = getIcon(messages, imageFilePathLabel);
174 if(icon != null && icon instanceof ImageIcon){
175 return ((ImageIcon)icon).getImage();
180 public static void addNewTab(Messages messages, String key, JTabbedPane tabPane, Component comp){
181 addNewTab(messages, key, tabPane, comp, null, null);
184 public static void addNewTab(Messages messages, String key, JTabbedPane tabPane, Component comp, Object[] tabnameValues, Object[] values){
185 String tabName = messages.get(key + ".tab.label");
186 String tooltip = messages.get(key + ".tab.tooltip");
187 Icon icon = getIcon(messages, key + ".tab.icon");
189 if(tabnameValues != null){
190 tabName = MessageFormat.format(tabName, tabnameValues);
194 tooltip = MessageFormat.format(tooltip, values);
196 tabPane.addTab(tabName, icon, comp, tooltip);