// Select2.java  click on points, connect the dots

import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.io.*;
import javax.swing.*;

public class Select2 extends JFrame
{
  MyJPanel panel;
  private JDesktopPane theDesktop;
  int x, y, b;
  int r1x1 = 100;  // red rectangle
  int r1y1 = 120;
  int r1x2 = 200;
  int r1y2= 250;
  int r2x1 = 180;  // blue rectangle
  int r2y1 = 220;
  int r2x2 = 300;
  int r2y2= 350;
  Color color1 = Color.red;
  Color color2 = Color.blue;

  Select2()
  {
    setTitle("Select2");
    setSize(400,450); // see "dimension" below for smaller size
    setBackground(Color.white);
    setForeground(Color.black);
    // set up plot area
    theDesktop = new JDesktopPane();
    getContentPane().add(theDesktop);
    // Create internal frame
    JInternalFrame frame = new JInternalFrame(
        "Plot area", true, true, true, true);
    // attach panel to internal frame
    Container container = frame.getContentPane();
    panel = new MyJPanel();
    container.add(panel, BorderLayout.CENTER);
    // set size of internal frame to size of its contents
    frame.pack(); // uses class Dimension
    theDesktop.add(frame);
    panel.addMouseListener (new mousePressHandler());
    frame.setVisible(true);
    addWindowListener(new WindowAdapter()
    {
      public void windowClosing(WindowEvent e)
      {
        System.exit(0);
      }
    });
    setVisible(true);
  }

  class mousePressHandler extends MouseAdapter
  {
    public void mousePressed (MouseEvent e)
    {
      x = e.getX();
      y = e.getY();
      b = e.getButton();
      if(inrect(x,y,r1x1,r1y1,r1x2,r1y2)) color1 = Color.green;
      else                                color1 = Color.red;
      if(inrect(x,y,r2x1,r2y1,r2x2,r2y2)) color2 = Color.green;
      else                                color2 = Color.blue;
      requestFocus();
      System.out.println("at x="+x+"   y="+y+"   b="+b); // debug print
      // panel.repaint();
      repaint();
    }
  }

  public boolean inrect(int x, int y, int x1, int y1, int x2, int y2)
  {
    if(x<x1 || x>x2) return false;
    if(y<y1 || y>y2) return false;
    return true;
  }

  class MyJPanel extends JPanel
  {
    MyJPanel(){} // default, just to have "paint" dependent

    public void paintComponent(Graphics g)
    {
      // draw objects
      g.setColor(Color.black);
      g.drawString("select an object with the mouse", 20, 50);
      g.setColor(color1);
      g.fillRect(r1x1, r1y1, r1x2-r1x1, r1y2-r1y1);
      g.setColor(color2);
      g.fillRect(r2x1, r2y1, r2x2-r2x1, r2y2-r2y1);
    } // end paintComponent

    // return dimensions for sizing
    public Dimension getPreferredSize()
    {
      return new Dimension(380, 380);
    }
  } // end MyJPanel

  public static void main(String args[])
  {
    new Select2();
  }
}


