// Fig. 10.22: MouseDetails.java
// Demonstrating mouse clicks and distinguishing mouse buttons.
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class MouseDetails extends Applet {
   private String s = "";
   private int xPos, yPos;

   public void init()
   {
      addMouseListener( new DetailHandler( this ) );
   }

   public void paint( Graphics g )
   {
      g.drawString( "Clicked @ [" + xPos + ", " + yPos + "]",
                    xPos, yPos );
   }

   public void setCoordinates( int x, int y )
   {
      xPos = x;
      yPos = y;
      repaint();
   }
}

class DetailHandler extends MouseAdapter {
   private MouseDetails details;

   public DetailHandler( MouseDetails m ) { details = m; }

   public void mouseClicked( MouseEvent e )
   {
      details.setCoordinates( e.getX(), e.getY() );

      String s = "Clicked " + e.getClickCount() + " time(s)";
      
      if ( e.isMetaDown() )      // Right mouse button
         s += " with right mouse button";
      else if ( e.isAltDown() )  // Middle mouse button
         s += " with center mouse button";
      else                       // Left mouse button
         s += " with left mouse button";

      details.showStatus( s );
   }
}
