// =========================================================
// Работа с панелями класса Panel
//
// (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 PanelDemo extends Applet
{
  // Панель для размещения блокнота
  Panel pCardPanel;

  // Панель для размещения кнопок управления блокнотом
  Panel pButtonPanel;
  
  // Создаем ссылки на объекты типа Button
  Button btn1;
  Button btn2;
  Button btn3;
  Button btn4;
  Button btn5;
  Button btnNext;
  Button btnPrev;

  // Строка для записи названия нажатой кнопки
  String sTextLabel;
	
 	// -------------------------------------------------------
  // getAppletInfo
  // Метод, возвращающей строку информации об аплете
  // -------------------------------------------------------
  public String getAppletInfo()
	{
		return "Name: Grid\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.1";
	}

	// -------------------------------------------------------
  // init
  // Метод, получающий управление при инициализации аплета
  // -------------------------------------------------------
	public void init()
	{
    // Устанавливаем желтый цвет фона
    setBackground(Color.yellow);

    // Создаем в окне аплета две панели, разделяющие
    // окно по горизонтали. В верхней панели будет находиться
    // блокнот, в нижней - кнопки управления блокнотом
    setLayout(new GridLayout(2, 1));
       
    // Создаем кнопки блокнота
    btn1 = new Button("Button 1");
    btn2 = new Button("Button 2");
    btn3 = new Button("Button 3");
    btn4 = new Button("Button 4");
    btn5 = new Button("Button 5");

    // Создаем панель блокнота
    pCardPanel = new Panel();

    // Устанавливаем режим размещения для блокнота
    pCardPanel.setLayout(new CardLayout(5, 5));
    
    // Добавляем кнопки в блокнот
    pCardPanel.add(btn1);
    pCardPanel.add(btn2);
    pCardPanel.add(btn3);
    pCardPanel.add(btn4);
    pCardPanel.add(btn5);

    // Добавляем панель блокнота в окно аплета
    add(pCardPanel);

    // Создаем кнопки управления блокнотом

    // Кнопка просмотра следующей страницы блокнота
    btnNext = new Button("Next");

    // Кнопка просмотра предыдущей страницы блокнота
    btnPrev = new Button("Prev");

    // Создаем панель кнопок управления блокнотом
    pButtonPanel = new Panel();

    // Устанавливаем режим размещения для панели кнопок
    pButtonPanel.setLayout(new FlowLayout());

    // Добавляем кнопки в панель кнопок
    pButtonPanel.add(btnNext);
    pButtonPanel.add(btnPrev);

    // Добавляем панель кнопок
    add(pButtonPanel);
	}

  
  // -------------------------------------------------------
  // action
  // Метод вызывается, когда пользователь выполняет
  // действие над компонентами
  // -------------------------------------------------------
  public boolean action(Event evt, Object obj)
  {
    // Ссылка на кнопку, от которой пришло сообщение
    Button btn;

    // Проверяем, что событие вызвано кнопкой, а не
    // другим компонентом
    if(evt.target instanceof Button)
    {
      // Получам ссылку на кнопку, вызвавшую событие
      btn = (Button)evt.target;

      // Получаем название кнопки
      sTextLabel = btn.getLabel();

      // Записываем название кнопки в строку состояния навигатора
      showStatus("Button (\"" + sTextLabel + "\") pressed");

      // Выполняем ветвление по кнопкам. Для каждой кнопки
      // записываем ее название в строку состояния навигатора
      if(evt.target.equals(btnNext))
      {
        // Выбираем следующую страницу в блокноте
        ((CardLayout)pCardPanel.getLayout()).next(pCardPanel);
      }

      else if(evt.target.equals(btnPrev))
      {
        // Выбираем предыдущую страницу в блокноте
        ((CardLayout)pCardPanel.getLayout()).previous(pCardPanel);
      }

      else if(evt.target.equals(btn1))
      {
        showStatus("Button 1 (\"" + sTextLabel + "\") pressed");
      }
      
      else if(evt.target.equals(btn2))
      {
        showStatus("Button 2 (\"" + sTextLabel + "\") pressed");
      }

      else if(evt.target.equals(btn3))
      {
        showStatus("Button 3 (\"" + sTextLabel + "\") pressed");
      }
      
      else if(evt.target.equals(btn4))
      {
        showStatus("Button 4 (\"" + sTextLabel + "\") pressed");
      }

      // Если событие возникло от неизвестной кнопки,
      // мы его не обрабатываем
      else
      {
        return false;
      }

      // возвращаем признак того, что мы обработали событие
      return true;
    }

    // Если событие вызвано не кнопкой, 
    // мы его не обрабатываем
    return false;
  }
}
