// ===========================================================
// Просмотр списка доступных шрифтов
//
// (C) Фролов А.В, 1997
//
// E-mail: frolov@glas.apc.org
// WWW:    http://www.glasnet.ru/~frolov
//            или
//         http://www.dials.ccas.ru/frolov
// ===========================================================

import java.applet.*;
import java.awt.*;

public class FontList extends Applet
{
  // ---------------------------------------------------------
  // Поля класса
  // ---------------------------------------------------------
  Toolkit toolkit;   // ссылка на Toolkit
  String  fntlist[]; // список шрифтов
  int yStart = 20;   // координата Y начала области вывода
  int yStep;         // шаг вывода строк с названиями шрифтов

  // ---------------------------------------------------------
  // getAppletInfo
  // Метод, возвращающей строку информации об аплете
  // ---------------------------------------------------------
	public String getAppletInfo()
	{
		return "Name: FontList\r\n" +
      "Author: Alexandr Frolov\r\n" +
      "E-mail: frolov@glas.apc.org" +
      "WWW:    http://www.glasnet.ru/~frolov" +
      "Created with Microsoft Visual J++ Version 1.0";
	}

  // ---------------------------------------------------------
  // init
  // Вызывается во время инициализации аплета
  // ---------------------------------------------------------
	public void init()
	{
    // Получаем ссылку на Toolkit
    toolkit = Toolkit.getDefaultToolkit();
    
    // Получаем список доступных шрифтов
    fntlist = toolkit.getFontList();
	}

  // ---------------------------------------------------------
  // paint
  // Метод paint, выполняющий рисование в окне аплета
  // ---------------------------------------------------------
	public void paint(Graphics g)
	{
    // Определяем метрики шрифта
    FontMetrics fm = g.getFontMetrics();

    // Устанавливаем шаг вывода строк по вертикали
    // равным полной высоте символов текущего шрифта
    yStep = fm.getHeight();

    // Устанавливаем новую высоту аплета исходя
    // из количества элементов в списке шрифтов
		resize(150, 20 + yStep * fntlist.length);

    // Определяем текущие размеры окна аплета
    Dimension dimAppWndDimension = size();
    
    // Выбираем в контекст отображения желтый цвет
    g.setColor(Color.yellow);
    
    // Закрашиваем внутреннюю область окна аплета
    g.fillRect(0, 0, 
      dimAppWndDimension.width  - 1, 
      dimAppWndDimension.height - 1);

    // Выбираем в контекст отображения черный цвет
    g.setColor(Color.black);

    // Рисуем рамку вокруг окна аплета
    g.drawRect(0, 0, 
      dimAppWndDimension.width  - 1, 
      dimAppWndDimension.height - 1);
    
    // Выводим в цикле список установленных шрифтов
    for(int i = 0; i < fntlist.length; i++)
    {
      g.drawString(fntlist[i], 10, yStart + yStep * i);
    }
	}
}
