OSDN Git Service

change package name. jp.naist.se.stigmata -> jp.sourceforge.stigmata
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ui / swing / GUIUtility.java
1 package jp.sourceforge.stigmata.ui.swing;
2
3 /*
4  * $Id$
5  */
6
7 import java.awt.Component;
8 import java.awt.Image;
9 import java.lang.reflect.InvocationTargetException;
10 import java.lang.reflect.Method;
11 import java.net.URL;
12 import java.text.MessageFormat;
13
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;
24
25 import jp.sourceforge.talisman.i18n.Messages;
26
27 /**
28  * Utility routines for building GUI.
29  *
30  * @author Haruaki TAMADA
31  * @version $Revision$ $Date$
32  */
33 public class GUIUtility{
34     private GUIUtility(){
35     }
36
37     public static void decorateJComponent(Messages messages, JComponent component, String label){
38         if(messages.hasValue(label + ".tooltip")){
39             component.setToolTipText(messages.get(label + ".tooltip"));
40         }
41         if(messages.hasValue(label + ".border")){
42             component.setBorder(new TitledBorder(messages.get(label + ".border")));
43         }
44         try{
45             Icon icon = getIcon(messages, label + ".icon");
46             if(icon != null){
47                 Method[] methods = component.getClass().getMethods();
48                 for(Method m: methods){
49                     if(m.getName().equals("setIcon")){
50                         m.invoke(component, icon);
51                     }
52                 }
53             }
54         } catch(IllegalAccessException e){
55             throw new InternalError(e.getMessage());
56         } catch(InvocationTargetException e){
57             throw new InternalError(e.getMessage());
58         }
59     }
60
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"));
67         }
68         Icon icon = getIcon(messages, label + ".button.icon");
69         if(icon != null){
70             button.setIcon(icon);
71         }
72
73         return button;
74     }
75
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"));
81         }
82         Icon icon = getIcon(messages, label + ".button.icon");
83         if(icon != null){
84             button.setIcon(icon);
85         }
86
87         return button;
88     }
89
90     public static JCheckBoxMenuItem createJCheckBoxMenuItem(Messages messages, String label){
91         return createJCheckBoxMenuItem(messages, label, false);
92     }
93
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"));
99         }
100         Icon icon = getIcon(messages, label + ".menuitem.icon");
101         if(icon != null){
102             item.setIcon(icon);
103         }
104         return item;
105     }
106
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"));
113         }
114         Icon icon = getIcon(messages, label + ".menuitem.icon");
115         if(icon != null){
116             item.setIcon(icon);
117         }
118         return item;
119     }
120
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"));
126         }
127         Icon icon = getIcon(messages, label + ".menuitem.icon");
128         if(icon != null){
129             item.setIcon(icon);
130         }
131         return item;
132     }
133
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"));
139         }
140         Icon icon = getIcon(messages, label + ".menu.icon");
141         if(icon != null){
142             menu.setIcon(icon);
143         }
144         return menu;
145     }
146
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;
152             }
153             return GUIUtility.class.getResource(resourcePath);
154         }
155         return null;
156     }
157
158     public static URL getResource(Messages messages, String resourcePathLabel){
159         return getResource(messages, resourcePathLabel, null);
160     }
161
162     public static Icon getIcon(Messages messages, String label){
163         URL url = getResource(messages, label, messages.get("icon.path"));
164         if(url != null){
165             ImageIcon icon = new ImageIcon(url);
166             return icon;
167         }
168
169         return null;
170     }
171
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();
176         }
177         return null;
178     }
179
180     public static void addNewTab(Messages messages, String key, JTabbedPane tabPane, Component comp){
181         addNewTab(messages, key, tabPane, comp, null, null);
182     }
183
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");
188
189         if(tabnameValues != null){
190             tabName = MessageFormat.format(tabName, tabnameValues);
191         }
192
193         if(values != null){
194             tooltip = MessageFormat.format(tooltip, values);
195         }
196         tabPane.addTab(tabName, icon, comp, tooltip);
197     }
198 }