package Projeto;

import java.awt.*;
import javax.swing.JPanel;
import java.awt.event.*;


public class Panel extends JPanel //Canvas  //

{

   private static final int COMPQUADRADO = 10;
   private static final int MAXNQUADRADOS = 100;
   private Point[] quadrados = new Point[MAXNQUADRADOS];
   private int nquadrados = 0;
   public static int corrente = -1;




  BorderLayout borderLayout1 = new BorderLayout();

  public Panel() {
    try  {
      jbInit();
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }

  private void jbInit() throws Exception {
    this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {

      public void mouseDragged(MouseEvent e) {
        this_mouseDragged(e);
      }

      public void mouseMoved(MouseEvent e) {
        this_mouseMoved(e);
      }
    });
    this.addMouseListener(new java.awt.event.MouseAdapter() {

      public void mousePressed(MouseEvent e) {
        this_mousePressed(e);
      }
    });
  }


  public void paint(Graphics g)
   {  for (int i = 0; i < nquadrados; i++)
         draw(g, i);
   }



   public void draw(Graphics g, int i)
   {
   g.drawRect(quadrados[i].x-1, quadrados[i].y-1, COMPQUADRADO+1, COMPQUADRADO+1);
   }


   public void add(int x, int y)
   {  if (nquadrados < MAXNQUADRADOS)
      {  quadrados[nquadrados] = new Point(x, y);
         nquadrados++;

         //****
         repaint();
         //****
      }
   }


   public void remove(int n)
   {  nquadrados--;
      quadrados[n] = quadrados[nquadrados];
      if (corrente == n) corrente = -1;

      //******
      repaint();
      //******
   }






   public int find(int x, int y)
   {  for (int i = 0; i < nquadrados; i++)
         if (quadrados[i].x <= x && x <= quadrados[i].x
            + COMPQUADRADO && quadrados[i].y <= y
            && y <= quadrados[i].y + COMPQUADRADO)
            return i;
      return -1;
   }

  boolean this_mousePressed(MouseEvent e) {
   corrente = find(e.getX(),e.getY());

      if (corrente < 0)
      {
        add(e.getX(),e.getY());
      }
      else if (e.getClickCount()==2)
        {
        remove(corrente);
        }

    return true;

  }

  boolean this_mouseDragged(MouseEvent e) {
    if (corrente >= 0)
    {
     Graphics g = getGraphics();
         g.setXORMode(getBackground());
         draw(g, corrente);
         quadrados[corrente].x = e.getX();
         quadrados[corrente].y = e.getY();
         draw(g, corrente);

         //**************
         repaint();
         //**************
    }
    return true;
  }

  boolean this_mouseMoved(MouseEvent e) {
    if (find(e.getX(),e.getY())< 0)
    {
         Cursor a  = new Cursor(Cursor.CROSSHAIR_CURSOR);
         this.setCursor(a);
    }
    else
    {
         Cursor b  = new Cursor(Cursor.HAND_CURSOR);
         this.setCursor(b);
    }
      return true;
  }
}