1/*
2 * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25
26package com.sun.java.swing.ui;
27
28import java.awt.*;
29import java.awt.event.ActionListener;
30import java.awt.event.KeyListener;
31import java.util.StringTokenizer;
32import java.util.Vector;
33import javax.swing.*;
34import javax.swing.border.Border;
35import javax.swing.text.*;
36
37public class CommonUI
38{
39    private static class NumberDocument extends PlainDocument
40    {
41
42        public void insertString(int offs, String str, AttributeSet atts)
43            throws BadLocationException
44        {
45            if(!Character.isDigit(str.charAt(0)))
46            {
47                return;
48            } else
49            {
50                super.insertString(offs, str, atts);
51                return;
52            }
53        }
54
55        private NumberDocument()
56        {
57        }
58
59    }
60
61
62    public CommonUI()
63    {
64    }
65
66    public static JLabel createLabel(String text, int mnemonic, Component comp)
67    {
68        JLabel label = new JLabel("  " + text);
69        label.setMinimumSize(labelPrefSize);
70        if(mnemonic != -1)
71            label.setDisplayedMnemonic(mnemonic);
72        if(comp != null)
73            label.setLabelFor(comp);
74        if(text.length() == 0)
75            label.setPreferredSize(labelPrefSize);
76        return label;
77    }
78
79    public static JLabel createLabel(String text)
80    {
81        return createLabel(text, -1, null);
82    }
83
84    public static JTextField createTextField(String text, KeyListener listener, boolean numbers)
85    {
86        JTextField field = new JTextField(text);
87        field.setMinimumSize(textPrefSize);
88        if(text.length() == 0)
89            field.setPreferredSize(textPrefSize);
90        if(listener != null)
91            field.addKeyListener(listener);
92        if(numbers)
93            field.setDocument(new NumberDocument());
94        return field;
95    }
96
97    public static JTextField createTextField(String text, boolean numbers)
98    {
99        return createTextField(text, null, numbers);
100    }
101
102    public static JTextField createTextField(String text, KeyListener listener)
103    {
104        return createTextField(text, listener, false);
105    }
106
107    public static JTextField createTextField(String text)
108    {
109        return createTextField(text, null, false);
110    }
111
112    public static JRadioButton createRadioButton(String text, int mnemonic, ActionListener listener, boolean selected)
113    {
114        JRadioButton button = new JRadioButton(text);
115        button.setMnemonic(mnemonic);
116        button.setSelected(selected);
117        button.setMinimumSize(labelPrefSize);
118        if(listener != null)
119            button.addActionListener(listener);
120        if(text.length() == 0)
121            button.setPreferredSize(labelPrefSize);
122        return button;
123    }
124
125    public static JRadioButton createRadioButton(String text, int mnemonic, boolean selected)
126    {
127        return createRadioButton(text, mnemonic, null, selected);
128    }
129
130    public static JRadioButton createRadioButton(String text, int mnemonic, ActionListener listener)
131    {
132        return createRadioButton(text, mnemonic, listener, false);
133    }
134
135    public static JRadioButton createRadioButton(String text, int mnemonic)
136    {
137        return createRadioButton(text, mnemonic, null, false);
138    }
139
140    public static JRadioButton createRadioButton(String text)
141    {
142        return createRadioButton(text, -1, null, false);
143    }
144
145    public static JCheckBox createCheckBox(String text, int mnemonic, ActionListener listener, boolean selected)
146    {
147        JCheckBox checkbox = new JCheckBox(text);
148        checkbox.setMinimumSize(labelPrefSize);
149        if(mnemonic != -1)
150            checkbox.setMnemonic(mnemonic);
151        checkbox.setSelected(selected);
152        if(text.length() == 0)
153            checkbox.setPreferredSize(labelPrefSize);
154        if(listener != null)
155            checkbox.addActionListener(listener);
156        return checkbox;
157    }
158
159    public static JCheckBox createCheckBox(String text, int mnemonic, ActionListener listener)
160    {
161        return createCheckBox(text, mnemonic, listener, false);
162    }
163
164    public static JCheckBox createCheckBox(String text, int mnemonic, boolean selected)
165    {
166        return createCheckBox(text, mnemonic, null, selected);
167    }
168
169    public static JCheckBox createCheckBox(String text, int mnemonic)
170    {
171        return createCheckBox(text, mnemonic, null, false);
172    }
173
174    public static JCheckBox createCheckBox(String text)
175    {
176        return createCheckBox(text, -1, null, false);
177    }
178
179    public static JComboBox createComboBox(Object items[], ActionListener listener, boolean editable)
180    {
181        JComboBox comboBox = new JComboBox(items);
182        if(listener != null)
183            comboBox.addActionListener(listener);
184        comboBox.setEditable(editable);
185        return comboBox;
186    }
187
188    public static JComboBox createComboBox(Object items[], boolean editable)
189    {
190        return createComboBox(items, null, editable);
191    }
192
193    public static JComboBox createComboBox(Vector items, ActionListener listener, boolean editable)
194    {
195        JComboBox comboBox = new JComboBox(items);
196        if(listener != null)
197            comboBox.addActionListener(listener);
198        comboBox.setEditable(editable);
199        return comboBox;
200    }
201
202    public static JComboBox createComboBox(Vector items, boolean editable)
203    {
204        return createComboBox(items, null, editable);
205    }
206
207    public static JButton createButton(Action action)
208    {
209        JButton button = new JButton(action);
210        setButtonSize(button, buttonPrefSize);
211        return button;
212    }
213
214    public static JButton createButton(String text, ActionListener listener, int mnemonic)
215    {
216        JButton button = new JButton(text);
217        if(listener != null)
218            button.addActionListener(listener);
219        if(mnemonic != -1)
220            button.setMnemonic(mnemonic);
221        setButtonSize(button, buttonPrefSize);
222        return button;
223    }
224
225    private static void setButtonSize(JButton button, Dimension size)
226    {
227        String text = button.getText();
228        button.setMinimumSize(size);
229        if(text.length() == 0)
230        {
231            button.setPreferredSize(size);
232        } else
233        {
234            Dimension psize = button.getPreferredSize();
235            if(psize.width < size.width)
236                button.setPreferredSize(size);
237        }
238    }
239
240    public static JButton createButton(String text, ActionListener listener)
241    {
242        return createButton(text, listener, -1);
243    }
244
245    public static JButton createSmallButton(String text, ActionListener listener, int mnemonic)
246    {
247        JButton button = createButton(text, listener, mnemonic);
248        setButtonSize(button, smbuttonPrefSize);
249        return button;
250    }
251
252    public static JButton createSmallButton(String text, ActionListener listener)
253    {
254        return createSmallButton(text, listener, -1);
255    }
256
257    public static Border createBorder(String text)
258    {
259        Border border = BorderFactory.createEtchedBorder();
260        return BorderFactory.createTitledBorder(border, text, 0, 2);
261    }
262
263    public static Border createBorder()
264    {
265        return BorderFactory.createEmptyBorder(4, 4, 4, 4);
266    }
267
268    public static JScrollPane createListPane(JList list, String text)
269    {
270        JScrollPane pane = new JScrollPane(list);
271        pane.setBorder(BorderFactory.createCompoundBorder(createBorder(text), BorderFactory.createLoweredBevelBorder()));
272        return pane;
273    }
274
275    public static void centerComponent(Component source, Component parent)
276    {
277        Dimension dim = source.getSize();
278        Rectangle rect;
279        if(parent != null)
280        {
281            rect = parent.getBounds();
282        } else
283        {
284            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
285            rect = new Rectangle(0, 0, d.width, d.height);
286        }
287        int x = rect.x + (rect.width - dim.width) / 2;
288        int y = rect.y + (rect.height - dim.height) / 2;
289        source.setLocation(x, y);
290    }
291
292    public static void centerComponent(Component source)
293    {
294        centerComponent(source, null);
295    }
296
297    public static JFrame getParentFrame(Component source)
298    {
299        Container parent;
300        for(parent = source.getParent(); parent != null; parent = parent.getParent())
301            if(parent instanceof JFrame)
302                break;
303
304        if(parent == null)
305            return null;
306        else
307            return (JFrame)parent;
308    }
309
310    public static Integer msToSec(Integer ms)
311    {
312        int value = ms.intValue();
313        value /= 1000;
314        return new Integer(value);
315    }
316
317    public static Integer secToMs(Integer sec)
318    {
319        int value = sec.intValue();
320        value *= 1000;
321        return new Integer(value);
322    }
323
324    public static String stringFromStringArray(String strings[], String delim)
325    {
326        String string = "";
327        String separator;
328        if(delim == null || delim.equals(""))
329            separator = " ";
330        else
331            separator = delim;
332        for(int i = 0; i < strings.length; i++)
333        {
334            string = string + strings[i];
335            string = string + separator;
336        }
337
338        return string;
339    }
340
341    public static String stringFromStringArray(String strings[])
342    {
343        return stringFromStringArray(strings, "");
344    }
345
346    public static String[] stringArrayFromString(String string, String delim)
347    {
348        StringTokenizer st;
349        if(delim == null || delim.equals(""))
350            st = new StringTokenizer(string);
351        else
352            st = new StringTokenizer(string, delim);
353        int numTokens = st.countTokens();
354        String strings[] = new String[numTokens];
355        int index = 0;
356        while(st.hasMoreTokens())
357            strings[index++] = st.nextToken();
358        return strings;
359    }
360
361    public static String[] stringArrayFromString(String string)
362    {
363        return stringArrayFromString(string, "");
364    }
365
366    public static void setWaitCursor(Component comp)
367    {
368        comp.setCursor(Cursor.getPredefinedCursor(3));
369    }
370
371    public static void setDefaultCursor(Component comp)
372    {
373        comp.setCursor(Cursor.getPredefinedCursor(0));
374    }
375
376    public static Dimension getButtconPrefSize()
377    {
378        return buttconPrefSize;
379    }
380
381    private static final int BUTTON_WIDTH = 100;
382    private static final int BUTTON_HEIGHT = 26;
383    private static final int BUTTCON_WIDTH = 28;
384    private static final int BUTTCON_HEIGHT = 28;
385    private static final int SM_BUTTON_WIDTH = 72;
386    private static final int SM_BUTTON_HEIGHT = 26;
387    private static final int LABEL_WIDTH = 100;
388    private static final int LABEL_HEIGHT = 20;
389    private static final int TEXT_WIDTH = 150;
390    private static final int TEXT_HEIGHT = 20;
391    private static final Dimension buttonPrefSize = new Dimension(100, 26);
392    private static final Dimension buttconPrefSize = new Dimension(28, 28);
393    private static final Dimension smbuttonPrefSize = new Dimension(72, 26);
394    private static final Dimension labelPrefSize = new Dimension(100, 20);
395    private static final Dimension textPrefSize = new Dimension(150, 20);
396
397}
398