// =========================================================
// Обработка событий от мыши
//
// (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 MouseClick extends Applet
{
  // Текущие координаты курсора при нажатии на 
  // кнопку мыши
  Dimension dimMouseCursor;

  // Временная переменная для хранения события
  Event ev;

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

  // -------------------------------------------------------
  // paint
  // Метод paint, выполняющий рисование в окне аплета
  // -------------------------------------------------------
	public void paint(Graphics g)
	{
    // Определяем текущие размеры окна аплета
    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);

    // Отображаем текущие координаты курсора мыши
    // в точке, где находится этот курсор
    g.drawString("(" + ev.x + "," + ev.y + ")", ev.x, ev.y);
	}

  // -------------------------------------------------------
  // mouseDown
  // Обработка щелчка кнопкой мыши
  // -------------------------------------------------------
  public boolean mouseDown(Event evt, int x, int y)
	{
    // Определяем и сохраняем текущие координаты
    // курсора мыши
    dimMouseCursor = new Dimension(x, y);
    
    // Сохраняем событие во временной переменной
    ev = evt;

    // Если количествао щелчков больше 1, считаем что
    // сделан двойной щелчок
    if(evt.clickCount > 1)
      
      // Выводим сообщение о двойном щелчке
      showStatus("Mouse Double Click");

    // Сделан одиночный щелчок
    else

      // Выводим сообщение о простом щелчке
      showStatus("Mouse Down");
    
    // Перерисовываем окно аплета
    repaint();

		// Возвращаем значение true при успешной
    // обработке события
    return true;
	}

  // -------------------------------------------------------
  // mouseUp
  // Отпускание клавиши мыши
  // -------------------------------------------------------
	public boolean mouseUp(Event evt, int x, int y)
	{
    // Выводим сообщение в строке состояния
    showStatus("Mouse Up");
		return true;
	}

  // -------------------------------------------------------
  // mouseDrag
  // Перемещение курсора мыши при нажатой клавише
  // -------------------------------------------------------
	public boolean mouseDrag(Event evt, int x, int y)
	{
    // Выводим сообщение в строке состояния
    showStatus("Mouse Drag");
		return true;
	}

  // -------------------------------------------------------
  // mouseMove
  // Перемещение курсора мыши при отжатой клавише
  // -------------------------------------------------------
	public boolean mouseMove(Event evt, int x, int y)
	{
		return true;
	}

  // -------------------------------------------------------
  // mouseEnter
  // Курсор мыши вошел в область окна аплета
  // -------------------------------------------------------
	public boolean mouseEnter(Event evt, int x, int y)
	{
    // Выводим сообщение в строке состояния
    showStatus("Mouse pointer enters applet's window");
		return true;
	}

  // -------------------------------------------------------
  // mouseExit
  // Курсор мыши покинул область окна аплета
  // -------------------------------------------------------
	public boolean mouseExit(Event evt, int x, int y)
	{
    // Выводим сообщение в строке состояния
    showStatus("Mouse pointer leaves applet's window");
		return true;
	}
}
