/** Affichage d'images : Exercise 2
 *
 *	@version 0.9  12/07/2001
 *	@author Pascal Vuylsteker
 */
 
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.awt.geom.*;


public class Toto extends JFrame	{	

	public Toto()	{
		setTitle("Here is a pretty picture");

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ShowPanel panel = new ShowPanel();
		Container contentPane = getContentPane();
		contentPane.add(panel);
		setBounds(0,0,600,600);		

		addNotify();
		Insets insets = getInsets();
		System.out.println("Inset JFrame ");
		System.out.println("Inset : left : " + insets.left);
		System.out.println("Inset : right : " + insets.right);
		System.out.println("Inset : top : " + insets.top);
		System.out.println("Inset : bottom : " + insets.bottom);
		

	}
	
	public static void main(String[] args)	{		
		Toto frame = new Toto();
		frame.show();
	}
	
}


class ShowPanel extends JPanel 	{	
	ShowPanel()	{	
	
		setBackground(Color.white);
		setBounds(0,0,500,500);		

		
		Toolkit	tk = Toolkit.getDefaultToolkit();
		
		img = tk.getImage("/Volumes/Users/pvk/nexen.gif");
		
		try	{
        	MediaTracker tracker = new MediaTracker(this);
        	tracker.addImage(img, 0);
        	tracker.waitForID(0);
        }
        catch ( Exception e ) {}
        
		
		img = img.getScaledInstance(200, 200, Image.SCALE_SMOOTH);
		try	{
        	MediaTracker tracker = new MediaTracker(this);
        	tracker.addImage(img, 0);
        	tracker.waitForID(0);
        }
        catch ( Exception e )	{}

// 		bi = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);

		GraphicsEnvironment local = GraphicsEnvironment.getLocalGraphicsEnvironment();
		GraphicsDevice screen = local.getDefaultScreenDevice();
		GraphicsConfiguration configuration = screen.getDefaultConfiguration();
		
 		bi = configuration.createCompatibleImage(200, 200);

// 		bi = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);
		biContext = bi.createGraphics();
		biContext.drawImage(img, 0, 0, null);
		
		biContext.setPaint(Color.red);
		biContext.draw(new Line2D.Double(0,0,199,199));
		
		addNotify();

		Insets insets = getInsets();
		System.out.println("Inset JPanel ");
		System.out.println("Inset : left : " + insets.left);
		System.out.println("Inset : right : " + insets.right);
		System.out.println("Inset : top : " + insets.top);
		System.out.println("Inset : bottom : " + insets.bottom);
		
		try	{
		lbi = bi.getSubimage(0,0,199,199);
		}
		catch (Exception e )	{
			System.out.println("Voila ou est le pb  : " + e);
		}
		
		try	{
        	MediaTracker tracker = new MediaTracker(this);
        	tracker.addImage(lbi, 0);
        	tracker.waitForID(0);
        }
        catch ( Exception e )	{}

		lbi2 = bi.getSubimage(0,0,99,99);
		try	{
        	MediaTracker tracker = new MediaTracker(this);
        	tracker.addImage(lbi, 0);
        	tracker.waitForID(0);
        }
        catch ( Exception e )	{}

		lbi3 = lbi.getSubimage(0,0,199,199);
		try	{
        	MediaTracker tracker = new MediaTracker(this);
        	tracker.addImage(lbi, 0);
        	tracker.waitForID(0);
        }
        catch ( Exception e )	{}
    }


	public void paintComponent(Graphics g)	{
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D) g;
		

		g2.drawImage(bi,0,0,null);		
		g2.drawImage(lbi,0,210,null);
		g2.drawImage(lbi2,210,0,null);
		g2.drawImage(lbi3,210,210,null);

	}

private	Image img;
private	BufferedImage bi,lbi,lbi2,lbi3;
private Graphics2D biContext;
}
