001    /* steelme theme manager for Java
002     * Copyright (C) 2000 - 2004 T.J. Willis
003     * 
004     * This program is free software; you can redistribute it and/or
005     * modify it under the terms of the GNU General Public License
006     * as published by the Free Software Foundation; either version 2
007     * of the License, or (at your option) any later version.
008     *      
009     * This program is distributed in the hope that it will be useful,
010     * but WITHOUT ANY WARRANTY; without even the implied warranty of
011     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012     * GNU General Public License for more details.
013     *          
014     * You should have received a copy of the GNU General Public License
015     * along with this program; if not, write to the Free Software
016     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
017     *  
018     * $Header: /cvsroot/steelme/steelme/src/net/sourceforge/steelme/FontChooserPanel.java,v 1.1.1.1 2004/05/10 14:28:11 tj_willis Exp $
019     */
020    package net.sourceforge.steelme;
021    
022    import java.awt.*;
023    import java.awt.event.*;
024    import javax.swing.*;
025    
026    /**
027     * A JPanel that lets the user select from installed fonts.
028     *
029     * @author <a href="mailto:tj_willis@users.sourceforge.net">T.J. Willis</a>
030     * @version 1.0
031     */
032    public class FontChooserPanel extends JPanel implements ActionListener {
033    
034        /**
035         * Creates new form FontChooser
036         * @param def a <code>Font</code> value
037         */
038        public FontChooserPanel(Font def) {
039            initComponents();
040            if(def!=null)
041                setThemeFont(def);
042        }
043    
044        /** This method is called from within the constructor to
045         * initialize the form.
046         * WARNING: Do NOT modify this code. The content of this method is
047         * always regenerated by the Form Editor.
048         */
049        private void initComponents() {
050            jLabel2 = new javax.swing.JLabel();
051            jLabel3 = new javax.swing.JLabel();
052            jComboBox1 = new javax.swing.JComboBox();
053            jCheckBox1 = new javax.swing.JCheckBox();
054            jCheckBox2 = new javax.swing.JCheckBox();
055            jLabel5 = new javax.swing.JLabel();
056            jList2 = new javax.swing.JComboBox(); //javax.swing.JList();
057    
058            setLayout(new java.awt.GridBagLayout());
059            java.awt.GridBagConstraints gridBagConstraints1;
060    
061            setBorder(new javax.swing.border.EtchedBorder());
062            jLabel2.setText("Font:");
063            gridBagConstraints1 = new java.awt.GridBagConstraints();
064            gridBagConstraints1.gridy = 1;
065            add
066                (jLabel2, gridBagConstraints1);
067    
068            jLabel3.setText("Size:");
069            gridBagConstraints1 = new java.awt.GridBagConstraints();
070            gridBagConstraints1.gridy = 2;
071            add
072                (jLabel3, gridBagConstraints1);
073    
074            jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "8", "9","10","11","12","13","14","15", "16", "24", "36", "48", "72"
075                                                                                  }
076                                                                    ));
077            gridBagConstraints1 = new java.awt.GridBagConstraints();
078            gridBagConstraints1.gridy = 2;
079            gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
080            add
081                (jComboBox1, gridBagConstraints1);
082            jComboBox1.addActionListener(this);
083            jComboBox1.setEditable(true);
084    
085            jCheckBox1.setText("Bold");
086            gridBagConstraints1 = new java.awt.GridBagConstraints();
087            gridBagConstraints1.gridx = 1;
088            gridBagConstraints1.gridy = 3;
089            add
090                (jCheckBox1, gridBagConstraints1);
091            jCheckBox1.addActionListener(this);
092    
093            jCheckBox2.setText("Italic");
094            gridBagConstraints1 = new java.awt.GridBagConstraints();
095            gridBagConstraints1.gridx = 2;
096            gridBagConstraints1.gridy = 3;
097            add
098                (jCheckBox2, gridBagConstraints1);
099            jCheckBox2.addActionListener(this);
100    
101            jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
102            jLabel5.setText("<HTML><CENTER>Now is the time<BR> for all good parties<BR> to come to the aid of their<BR> service.</CENTER></HTML>");
103            jLabel5.setBorder(new javax.swing.border.TitledBorder(null, "Sample", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION));
104            jLabel5.setAutoscrolls(true);
105            gridBagConstraints1 = new java.awt.GridBagConstraints();
106            gridBagConstraints1.gridx = 3;
107            gridBagConstraints1.gridwidth = 2;
108            gridBagConstraints1.gridheight = 4;
109            jLabel5.setMinimumSize(new Dimension(150,150));
110            jLabel5.setPreferredSize(new Dimension(150,150));
111            add
112                (jLabel5, gridBagConstraints1);
113    
114    
115            String fontList[] =
116                GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
117    
118            for ( int i = 0; i < fontList.length; i++ )
119                jList2.addItem( fontList[i] );
120            //jList2.setListData(fontList);
121            jList2.setSelectedItem( "Dialog");
122            jList2.addActionListener(this);
123    
124            //         jList2.setModel(new javax.swing.AbstractListModel() {
125            //             String[] strings = { "Arial", "Helvetica" };
126            //             public int getSize() { return strings.length; }
127            //             public Object getElementAt(int i) { return strings[i]; }
128            //         });
129            //jList2.setVisibleRowCount(1);
130            gridBagConstraints1 = new java.awt.GridBagConstraints();
131            gridBagConstraints1.gridx = 1;
132            gridBagConstraints1.gridy = 1;
133            add
134                (jList2, gridBagConstraints1);
135    
136        }
137    
138        /**
139         * Called when user selects a font.  Sets the preview font to selected.
140         *
141         * @param e an <code>ActionEvent</code> value
142         */
143        public void actionPerformed(ActionEvent e) {
144            Font f = getSelectedFont();
145            jLabel5.setFont(f);
146            //getContentPane().pack();
147        }
148    
149        /**
150         * Describe <code>setThemeFont</code> method here.
151         *
152         * @param f a <code>Font</code> value
153         */
154        public void setThemeFont(Font f) {
155            int tsz, tst;
156            jList2.setSelectedItem(f.getName());
157            jComboBox1.setSelectedItem(new Integer(f.getSize()));
158            tst = Font.PLAIN;
159            if(f.isBold())
160                jCheckBox1.setSelected(true);
161            if(f.isItalic())
162                jCheckBox2.setSelected(true);
163    
164        }
165    
166        /**
167         * Describe <code>getSelectedFont</code> method here.
168         *
169         * @return a <code>Font</code> value
170         */
171        public Font getSelectedFont() {
172            int style = Font.PLAIN;
173            if ( jCheckBox1.isSelected())
174                style += Font.BOLD;
175            if( jCheckBox2.isSelected())
176                style += Font.ITALIC;
177            String fontName = jList2.getSelectedItem().toString();
178            String fontSizeS = jComboBox1.getSelectedItem().toString();
179            int fontSize = Integer.parseInt(fontSizeS);
180            return new Font(fontName,style,fontSize);
181        }
182    
183        // Variables declaration - do not modify
184        private javax.swing.JLabel jLabel2;
185        private javax.swing.JLabel jLabel3;
186        private javax.swing.JComboBox jComboBox1;
187        private javax.swing.JCheckBox jCheckBox1;
188        private javax.swing.JCheckBox jCheckBox2;
189        private javax.swing.JLabel jLabel5;
190        private javax.swing.JComboBox jList2;
191        // End of variables declaration
192    
193    }