import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class dr extends JFrame //main class
{
  public ScribbleDemo() 
 // Create a PaintPanel and add it to the content pane
 {
    getContentPane().add(new ScribblePanel(), BorderLayout.CENTER);
  }

 
  public static void main(String[] args) 
{
// Main method
    ScribbleDemo frame = new ScribbleDemo();
    frame.setTitle("ScribbleDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 300);
    frame.setVisible(true);
  }
}

// ScribblePanel for scribbling using the mouse
class ScribblePanel extends JPanel implements MouseListener, MouseMotionListener
 {
  final int CIRCLESIZE = 20; 
// Circle diameter used for erasing
  private Point lineStart = new Point(0, 0);
 // Line start point
  private LinkedList l=new LinkedList();
  protected void paintComponent(Graphics g)
   {
    super.paintComponent(g);
    Point start=new Point(0, 0);
    Point end=new Point(0, 0);
    int m=l.size();
    Point a=new Point();
    if(m>0)
    {
    a=(Point)l.get(0);    
    start.move(a.x,a.y);
    for(int k=1;k<m;k++)
    {
    a=(Point)l.get(k);    
    end.move(a.x,a.y);
    g.drawLine(start.x,start.y,end.x,end.y);
    start.move(a.x,a.y);
    }
    }
   }
  public ScribblePanel() 
{
  // Register listener for the mouse event
    addMouseListener(this);
    addMouseMotionListener(this);
  }

  public void mouseClicked(MouseEvent e) 
{
  }

  public void mouseEntered(MouseEvent e)
 {
  }

  public void mouseExited(MouseEvent e) 
{
  }

  public void mouseReleased(MouseEvent e) 
{
  }

  public void mousePressed(MouseEvent e) 
{
    lineStart.move(e.getX(), e.getY());
    l.add(lineStart);
    System.out.println(l.size());

  }

  public void mouseDragged(MouseEvent e)
 {
  // Create a Graphics object for drawing
    Graphics g = getGraphics();

if (e.isMetaDown()) 
{
// Detect right button pressed
    // Erase the drawing using an oval
      g.setColor(getBackground());
      g.fillOval(e.getX() - (CIRCLESIZE / 2),
      e.getY() - (CIRCLESIZE / 2), CIRCLESIZE, CIRCLESIZE);
     }
else 
{
      g.setColor(Color.black);
      g.drawLine(lineStart.x, lineStart.y,
      e.getX(), e.getY());
    }
    lineStart.move(e.getX(), e.getY());
    l.add(lineStart);
    System.out.println(l.size());
    g.dispose();
  }
  public void mouseMoved(MouseEvent e) 
{
  }
}
