/* * Created on Jun 30, 2007 * * Copyright (c) 2006-2007 Jens Gulden * * http://www.frinika.com * * This file is part of Frinika. * * Frinika is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * Frinika 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 for more details. * You should have received a copy of the GNU General Public License * along with Frinika; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package com.frinika.gui.util; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; /** * FontChooser by Noah w., modifications by Jens Gulden * Original from http://forum.java.sun.com/thread.jspa?forumID=57&threadID=195067. */ public class FontChooser extends JDialog { String[] styleList = new String[] { "Plain", "Bold", "Italic", "Bold-Italic" }; String[] sizeList = new String[] { "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "22", "24", "27", "30", "34", "39", "45", "51", "60" }; NwList StyleList; NwList FontList; NwList SizeList; static JLabel Sample = new JLabel(); boolean ob = false; private FontChooser(Frame parent, boolean modal, Font font) { super(parent, modal); initAll(); setTitle("Font Chooser"); if (font == null) font = Sample.getFont(); FontList.setSelectedItem(font.getName()); SizeList.setSelectedItem(font.getSize() + ""); StyleList.setSelectedItem(styleList[font.getStyle()]); } public static Font showDialog(Frame parent, String s, Font font) { FontChooser fd = new FontChooser(parent, true, font); if (s != null) fd.setTitle(s); fd.setVisible(true); Font fo = null; if (fd.ob) fo = Sample.getFont(); fd.dispose(); return (fo); } private void initAll() { getContentPane().setLayout(null); setBounds(150, 150, 425, 425); addLists(); addButtons(); Sample.setBounds(10, 320, 415, 25); Sample.setForeground(Color.black); getContentPane().add(Sample); addWindowListener(new WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { setVisible(false); } }); } private void addLists() { FontList = new NwList(GraphicsEnvironment.getLocalGraphicsEnvironment() .getAvailableFontFamilyNames()); StyleList = new NwList(styleList); SizeList = new NwList(sizeList); FontList.setBounds(10, 10, 260, 295); StyleList.setBounds(280, 10, 80, 295); SizeList.setBounds(370, 10, 40, 295); getContentPane().add(FontList); getContentPane().add(StyleList); getContentPane().add(SizeList); } private void addButtons() { JButton ok = new JButton("Ok"); //ok.setMargin(new Insets(0, 0, 0, 0)); JButton ca = new JButton("Cancel"); //ca.setMargin(new Insets(0, 0, 0, 0)); ok.setBounds(260, 350, 70, 20); //ok.setFont(new Font(" ", 1, 11)); ca.setBounds(340, 350, 70, 20); //ca.setFont(new Font(" ", 1, 12)); getContentPane().add(ok); getContentPane().add(ca); getRootPane().setDefaultButton(ok); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); ob = true; } }); ca.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); ob = false; } }); } private void showSample() { int g = 0; try { g = Integer.parseInt(SizeList.getSelectedValue()); } catch (NumberFormatException nfe) { } /*String st = StyleList.getSelectedValue(); int s = Font.PLAIN; if (st.equalsIgnoreCase("Bold")) s = Font.BOLD; if (st.equalsIgnoreCase("Italic")) s = Font.ITALIC; if (st.equalsIgnoreCase("Bold-Italic")) s = Font.BOLD | Font.ITALIC; */ String st = StyleList.getSelectedValue(); int s = 0; int i = 0; for (String stl : styleList) { if (stl.equalsIgnoreCase(st)) { s = i; } i++; } Sample.setFont(new Font(FontList.getSelectedValue(), s, g)); Sample.setText("The quick brown fox jumped over the lazy dog."); } // //////////////////////////////////////////////////////////////////// public class NwList extends JPanel { JList jl; JScrollPane sp; JLabel jt; String si = " "; public NwList(String[] values) { setLayout(null); jl = new JList(values); sp = new JScrollPane(jl); jt = new JLabel(); jt.setBackground(Color.white); jt.setForeground(Color.black); jt.setOpaque(true); jt.setBorder(new JTextField().getBorder()); jt.setFont(getFont()); jl.setBounds(0, 0, 100, 1000); jl.setBackground(Color.white); jl.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { jt.setText((String) jl.getSelectedValue()); si = (String) jl.getSelectedValue(); showSample(); } }); add(sp); add(jt); } public String getSelectedValue() { return (si); } public void setSelectedItem(String s) { jl.setSelectedValue(s, true); } public void setBounds(int x, int y, int w, int h) { super.setBounds(x, y, w, h); sp.setBounds(0, y + 12, w, h - 23); sp.revalidate(); jt.setBounds(0, 0, w, 20); } } }