public FontChooser() {

		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

		JPanel p = new JPanel(new GridLayout(1, 2, 10, 2));
		p.setBorder(new TitledBorder(BorderFactory.createEtchedBorder(), "Font", 0, 0,
				new Font("Arial", Font.PLAIN, 11), Color.black));
		lstFontName = new OpenList(ModelerUtilities.FONT_FAMILY_NAMES, "Name:");
		p.add(lstFontName);

		lstFontSize = new OpenList(ModelerUtilities.FONT_SIZE, "Size:");
		p.add(lstFontSize);
		add(p);

		p = new JPanel(new GridLayout(2, 3, 10, 5));
		p.setBorder(new TitledBorder(BorderFactory.createEtchedBorder(), "Effects", 0, 0, new Font("Arial", Font.PLAIN,
				11), Color.black));
		checkBoxBold = new JCheckBox("Bold");
		checkBoxBold.setFont(font);
		p.add(checkBoxBold);
		checkBoxItalic = new JCheckBox("Italic");
		checkBoxItalic.setFont(font);
		p.add(checkBoxItalic);

		checkBoxUnderline = new JCheckBox("Underline");
		checkBoxUnderline.setFont(font);
		p.add(checkBoxUnderline);
		checkBoxStrikethrough = new JCheckBox("Strikethrough");
		checkBoxStrikethrough.setFont(font);
		p.add(checkBoxStrikethrough);

		checkBoxSubscript = new JCheckBox("Subscript");
		checkBoxSubscript.setFont(font);
		p.add(checkBoxSubscript);
		checkBoxSuperscript = new JCheckBox("Superscript");
		checkBoxSuperscript.setFont(font);
		p.add(checkBoxSuperscript);
		add(p);

		add(Box.createVerticalStrut(5));
		p = new JPanel(new FlowLayout(FlowLayout.CENTER));
		p.add(new JLabel("Color:"));

		cbColor = new ColorComboBox(this);
		cbColor.setRenderer(new ComboBoxRenderer.ColorCell());
		cbColor.setPreferredSize(new Dimension(150, 20));
		cbColor.setMaximumSize(new Dimension(150, 20));
		cbColor.setSelectedIndex(0);
		cbColor.setRequestFocusEnabled(false);
		p.add(cbColor);
		p.add(Box.createHorizontalStrut(10));
		add(p);

		p = new JPanel(new BorderLayout());
		p.setBorder(new TitledBorder(BorderFactory.createEtchedBorder(), "Preview", 0, 0, new Font("Arial", Font.PLAIN,
				11), Color.black));
		preview = new JLabel(previewText);
		preview.setHorizontalAlignment(JLabel.CENTER);
		preview.setBackground(Color.white);
		preview.setForeground(Color.black);
		preview.setOpaque(true);
		preview.setBorder(new LineBorder(Color.black));
		preview.setPreferredSize(new Dimension(120, 40));
		p.add(preview, BorderLayout.CENTER);
		add(p);

		ListSelectionListener lsel = new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e) {
				updatePreview();
			}
		};
		lstFontName.addListSelectionListener(lsel);
		lstFontSize.addListSelectionListener(lsel);

		ActionListener lst = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				updatePreview();
			}
		};

		checkBoxUnderline.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED) {
					if (checkBoxStrikethrough.isSelected()) {
						checkBoxStrikethrough.setSelected(false);
					}
				}
			}
		});

		checkBoxStrikethrough.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED) {
					if (checkBoxUnderline.isSelected()) {
						checkBoxUnderline.setSelected(false);
					}
				}
			}
		});

		checkBoxSubscript.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED) {
					if (checkBoxSuperscript.isSelected()) {
						checkBoxSuperscript.setSelected(false);
					}
				}
			}
		});

		checkBoxSuperscript.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if (e.getStateChange() == ItemEvent.SELECTED) {
					if (checkBoxSubscript.isSelected()) {
						checkBoxSubscript.setSelected(false);
					}
				}
			}
		});

		checkBoxBold.addActionListener(lst);
		checkBoxItalic.addActionListener(lst);
		cbColor.addActionListener(lst);
		checkBoxUnderline.addActionListener(lst);
		checkBoxStrikethrough.addActionListener(lst);
		checkBoxSubscript.addActionListener(lst);
		checkBoxSuperscript.addActionListener(lst);

	}