import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
 *
 * @author rgbhsodiy
 */
public class test extends JFrame implements MouseListener,MouseMotionListener{
    private BufferedImage buffImage;
    private Dimension d;
    private int startX=0,startY=0,endX=0,endY=0;
    private JPopupMenu pop;
    private JMenuItem[] menuItem;
    private String[] itemName={"Save","Recapture","Exit"};
    private char[] itemShort={'S','R','E'};
    public test(){
        try{
            pop=new JPopupMenu();
            menuItem=new JMenuItem[itemName.length];
            for(int i=0;i<itemName.length;i++)
            {
                menuItem[i]=new JMenuItem(itemName[i]);
                menuItem[i].setMnemonic(itemShort[i]);
                pop.add(menuItem[i]);
            }
            pop.setVisible(false);
            pop.setInvoker(this);
            Robot robot=new Robot();
            d=Toolkit.getDefaultToolkit().getScreenSize();
            buffImage=robot.createScreenCapture(new Rectangle(0,0,d.width,d.height));
            this.setSize(d);
            this.setUndecorated(true);
            this.setAlwaysOnTop(true);
            this.addMouseListener(this);
            this.addMouseMotionListener(this);
            this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
            this.setVisible(true);
        }
        catch(Exception e){
            e.printStackTrace();
        }   
    }
    @Override
    public void paint(Graphics g){
        g.drawImage(buffImage, 0,0, d.width,d.height,this);
        g.setColor(Color.red);
        g.drawRect(startX,startY,endX-startX,endY-startY);
    }    public void mouseClicked(MouseEvent e) {
    }    public void mousePressed(MouseEvent e) {
        startX=e.getX();
        startY=e.getY();
    }    public void mouseReleased(MouseEvent e) {
        endX=e.getX();
        endY=e.getY();
        repaint();
        pop.setLocation(endX, endY);
        pop.setVisible(true);
    }    public void mouseEntered(MouseEvent e) {
    }    public void mouseExited(MouseEvent e) {
    }    public void mouseDragged(MouseEvent e) {
        endX=e.getX();
        endY=e.getY();
        repaint();
    }    public void mouseMoved(MouseEvent e) {
    }    public static void main(String argv[])
    {
     new test();
    }
}