/* * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. * */ package com.sun.java.swing.ui; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.KeyListener; import java.util.StringTokenizer; import java.util.Vector; import javax.swing.*; import javax.swing.border.Border; import javax.swing.text.*; public class CommonUI { private static class NumberDocument extends PlainDocument { public void insertString(int offs, String str, AttributeSet atts) throws BadLocationException { if(!Character.isDigit(str.charAt(0))) { return; } else { super.insertString(offs, str, atts); return; } } private NumberDocument() { } } public CommonUI() { } public static JLabel createLabel(String text, int mnemonic, Component comp) { JLabel label = new JLabel(" " + text); label.setMinimumSize(labelPrefSize); if(mnemonic != -1) label.setDisplayedMnemonic(mnemonic); if(comp != null) label.setLabelFor(comp); if(text.length() == 0) label.setPreferredSize(labelPrefSize); return label; } public static JLabel createLabel(String text) { return createLabel(text, -1, null); } public static JTextField createTextField(String text, KeyListener listener, boolean numbers) { JTextField field = new JTextField(text); field.setMinimumSize(textPrefSize); if(text.length() == 0) field.setPreferredSize(textPrefSize); if(listener != null) field.addKeyListener(listener); if(numbers) field.setDocument(new NumberDocument()); return field; } public static JTextField createTextField(String text, boolean numbers) { return createTextField(text, null, numbers); } public static JTextField createTextField(String text, KeyListener listener) { return createTextField(text, listener, false); } public static JTextField createTextField(String text) { return createTextField(text, null, false); } public static JRadioButton createRadioButton(String text, int mnemonic, ActionListener listener, boolean selected) { JRadioButton button = new JRadioButton(text); button.setMnemonic(mnemonic); button.setSelected(selected); button.setMinimumSize(labelPrefSize); if(listener != null) button.addActionListener(listener); if(text.length() == 0) button.setPreferredSize(labelPrefSize); return button; } public static JRadioButton createRadioButton(String text, int mnemonic, boolean selected) { return createRadioButton(text, mnemonic, null, selected); } public static JRadioButton createRadioButton(String text, int mnemonic, ActionListener listener) { return createRadioButton(text, mnemonic, listener, false); } public static JRadioButton createRadioButton(String text, int mnemonic) { return createRadioButton(text, mnemonic, null, false); } public static JRadioButton createRadioButton(String text) { return createRadioButton(text, -1, null, false); } public static JCheckBox createCheckBox(String text, int mnemonic, ActionListener listener, boolean selected) { JCheckBox checkbox = new JCheckBox(text); checkbox.setMinimumSize(labelPrefSize); if(mnemonic != -1) checkbox.setMnemonic(mnemonic); checkbox.setSelected(selected); if(text.length() == 0) checkbox.setPreferredSize(labelPrefSize); if(listener != null) checkbox.addActionListener(listener); return checkbox; } public static JCheckBox createCheckBox(String text, int mnemonic, ActionListener listener) { return createCheckBox(text, mnemonic, listener, false); } public static JCheckBox createCheckBox(String text, int mnemonic, boolean selected) { return createCheckBox(text, mnemonic, null, selected); } public static JCheckBox createCheckBox(String text, int mnemonic) { return createCheckBox(text, mnemonic, null, false); } public static JCheckBox createCheckBox(String text) { return createCheckBox(text, -1, null, false); } public static JComboBox createComboBox(Object items[], ActionListener listener, boolean editable) { JComboBox comboBox = new JComboBox(items); if(listener != null) comboBox.addActionListener(listener); comboBox.setEditable(editable); return comboBox; } public static JComboBox createComboBox(Object items[], boolean editable) { return createComboBox(items, null, editable); } public static JComboBox createComboBox(Vector items, ActionListener listener, boolean editable) { JComboBox comboBox = new JComboBox(items); if(listener != null) comboBox.addActionListener(listener); comboBox.setEditable(editable); return comboBox; } public static JComboBox createComboBox(Vector items, boolean editable) { return createComboBox(items, null, editable); } public static JButton createButton(Action action) { JButton button = new JButton(action); setButtonSize(button, buttonPrefSize); return button; } public static JButton createButton(String text, ActionListener listener, int mnemonic) { JButton button = new JButton(text); if(listener != null) button.addActionListener(listener); if(mnemonic != -1) button.setMnemonic(mnemonic); setButtonSize(button, buttonPrefSize); return button; } private static void setButtonSize(JButton button, Dimension size) { String text = button.getText(); button.setMinimumSize(size); if(text.length() == 0) { button.setPreferredSize(size); } else { Dimension psize = button.getPreferredSize(); if(psize.width < size.width) button.setPreferredSize(size); } } public static JButton createButton(String text, ActionListener listener) { return createButton(text, listener, -1); } public static JButton createSmallButton(String text, ActionListener listener, int mnemonic) { JButton button = createButton(text, listener, mnemonic); setButtonSize(button, smbuttonPrefSize); return button; } public static JButton createSmallButton(String text, ActionListener listener) { return createSmallButton(text, listener, -1); } public static Border createBorder(String text) { Border border = BorderFactory.createEtchedBorder(); return BorderFactory.createTitledBorder(border, text, 0, 2); } public static Border createBorder() { return BorderFactory.createEmptyBorder(4, 4, 4, 4); } public static JScrollPane createListPane(JList list, String text) { JScrollPane pane = new JScrollPane(list); pane.setBorder(BorderFactory.createCompoundBorder(createBorder(text), BorderFactory.createLoweredBevelBorder())); return pane; } public static void centerComponent(Component source, Component parent) { Dimension dim = source.getSize(); Rectangle rect; if(parent != null) { rect = parent.getBounds(); } else { Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); rect = new Rectangle(0, 0, d.width, d.height); } int x = rect.x + (rect.width - dim.width) / 2; int y = rect.y + (rect.height - dim.height) / 2; source.setLocation(x, y); } public static void centerComponent(Component source) { centerComponent(source, null); } public static JFrame getParentFrame(Component source) { Container parent; for(parent = source.getParent(); parent != null; parent = parent.getParent()) if(parent instanceof JFrame) break; if(parent == null) return null; else return (JFrame)parent; } public static Integer msToSec(Integer ms) { int value = ms.intValue(); value /= 1000; return new Integer(value); } public static Integer secToMs(Integer sec) { int value = sec.intValue(); value *= 1000; return new Integer(value); } public static String stringFromStringArray(String strings[], String delim) { String string = ""; String separator; if(delim == null || delim.equals("")) separator = " "; else separator = delim; for(int i = 0; i < strings.length; i++) { string = string + strings[i]; string = string + separator; } return string; } public static String stringFromStringArray(String strings[]) { return stringFromStringArray(strings, ""); } public static String[] stringArrayFromString(String string, String delim) { StringTokenizer st; if(delim == null || delim.equals("")) st = new StringTokenizer(string); else st = new StringTokenizer(string, delim); int numTokens = st.countTokens(); String strings[] = new String[numTokens]; int index = 0; while(st.hasMoreTokens()) strings[index++] = st.nextToken(); return strings; } public static String[] stringArrayFromString(String string) { return stringArrayFromString(string, ""); } public static void setWaitCursor(Component comp) { comp.setCursor(Cursor.getPredefinedCursor(3)); } public static void setDefaultCursor(Component comp) { comp.setCursor(Cursor.getPredefinedCursor(0)); } public static Dimension getButtconPrefSize() { return buttconPrefSize; } private static final int BUTTON_WIDTH = 100; private static final int BUTTON_HEIGHT = 26; private static final int BUTTCON_WIDTH = 28; private static final int BUTTCON_HEIGHT = 28; private static final int SM_BUTTON_WIDTH = 72; private static final int SM_BUTTON_HEIGHT = 26; private static final int LABEL_WIDTH = 100; private static final int LABEL_HEIGHT = 20; private static final int TEXT_WIDTH = 150; private static final int TEXT_HEIGHT = 20; private static final Dimension buttonPrefSize = new Dimension(100, 26); private static final Dimension buttconPrefSize = new Dimension(28, 28); private static final Dimension smbuttonPrefSize = new Dimension(72, 26); private static final Dimension labelPrefSize = new Dimension(100, 20); private static final Dimension textPrefSize = new Dimension(150, 20); }