/*
 * App.java
 *
 * Created on June 11, 2001, 10:35 AM
 */
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.awt.Toolkit.*;
import javax.swing.*;
import java.net.*;

/**
 *
 * @author  MGROUSE
 * @version 
 */
public class App2 extends javax.swing.JFrame {

    /** Creates new form App */
    public App2() {
        initComponents ();
        //pack ();
        this.setSize(640,480);
    }

    public void paint(Graphics g)
    {	
        
        super.paint(g);
        appG2D.drawImage(theScreen, 0, 0, this);
        //super.paint(g);
        //menuBar.paint(g);
    }

    public void repaint()
    {
        Graphics g = this.getGraphics();
        paint(g);
    }
		
                 
    public void initMM()
    {
        //once again this is a little too big. should subtract Insets
        theScreen = new BufferedImage(640,480, BufferedImage.TYPE_INT_RGB);
        //get Graphics2D
        buffG2D = (Graphics2D)theScreen.getGraphics();
        
        //get Sound
        //get Music
        show();
        Container cp = this.getContentPane();
        appG2D = (Graphics2D)cp.getGraphics();
    }
    
    public void run(String s)
    {
        URL file = null;
        this.setTitle(s);
        
        // load the gif and paint at 0,0
        try{
        //file = new URL("/images/java_logo.gif");
        Toolkit Tk = Toolkit.getDefaultToolkit();
        Image img = Tk.getImage("images/clouds.jpg");
		try 
        {
            MediaTracker tracker = new MediaTracker(this);
            tracker.addImage(img, 1);
            tracker.waitForID(1);
            System.out.println("hello");
        } 
        catch (Exception e) 
        {
            System.out.print(e.toString());
        }

        int width = img.getWidth(this);
        int height = img.getHeight(this);
        
        buffG2D.setColor(Color.cyan);
        buffG2D.fillRect(0, 0, 7, 7);
        buffG2D.draw(new Line2D.Double(100, 100, 200, 200));
        
        //draw image to buffered image
        buffG2D.drawImage(img, 0, 0, this);
        
        //get frames graphics
        Graphics2D g = (Graphics2D)this.getGraphics();
        // draw image to frame
        appG2D.drawImage(theScreen, 0, 0, this);
        }
        catch (Exception e){}
         
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the FormEditor.
     */
    private void initComponents () 
    {
        // create two panels
        //panel1 will be the "client area" pane
        JPanel p1 = new JPanel();
        // this is bigger than needed since the insets take some space
        // but oh well
        p1.setSize(640,480);
        p1.setBackground (java.awt.Color.blue);
        
        

        menuBar = new javax.swing.JMenuBar ();
        fileMenu = new javax.swing.JMenu ();
        openMenuItem = new javax.swing.JMenuItem ();
        saveMenuItem = new javax.swing.JMenuItem ();
        saveAsMenuItem = new javax.swing.JMenuItem ();
        exitMenuItem = new javax.swing.JMenuItem ();
        editMenu = new javax.swing.JMenu ();
        cutMenuItem = new javax.swing.JMenuItem ();
        copyMenuItem = new javax.swing.JMenuItem ();
        pasteMenuItem = new javax.swing.JMenuItem ();
        deleteMenuItem = new javax.swing.JMenuItem ();
        helpMenu = new javax.swing.JMenu ();
        contentsMenuItem = new javax.swing.JMenuItem ();
        aboutMenuItem = new javax.swing.JMenuItem ();

          fileMenu.setText ("File");
  
            openMenuItem.setText ("Open");    
            fileMenu.add (openMenuItem);
            
            saveMenuItem.setText ("Save");
            fileMenu.add (saveMenuItem);
            
            saveAsMenuItem.setText ("Save As ...");
            fileMenu.add (saveAsMenuItem);
            
            exitMenuItem.setText ("Exit");
            exitMenuItem.addActionListener (new java.awt.event.ActionListener () {
                public void actionPerformed (java.awt.event.ActionEvent evt) {
                    exitMenuItemActionPerformed (evt);
                }
            }
            );
    
            fileMenu.add (exitMenuItem);
          menuBar.add (fileMenu);
          editMenu.setText ("Edit");
  
            cutMenuItem.setText ("Cut");
            editMenu.add (cutMenuItem);
            
            copyMenuItem.setText ("Copy");
            editMenu.add (copyMenuItem);
            
            pasteMenuItem.setText ("Paste");
            editMenu.add (pasteMenuItem);
            
            deleteMenuItem.setText ("Delete");
            editMenu.add (deleteMenuItem);
            
          menuBar.add (editMenu);
          helpMenu.setText ("Help");
  
            contentsMenuItem.setText ("Contents");
            helpMenu.add (contentsMenuItem);
            
            aboutMenuItem.setText ("About");
            helpMenu.add (aboutMenuItem);
          menuBar.add (helpMenu);
        
        //eventually the View manager should take care of this?
        addWindowListener (new java.awt.event.WindowAdapter () {
            public void windowClosing (java.awt.event.WindowEvent evt) {
                exitForm (evt);
            }
        }
        );

        setJMenuBar (menuBar);
        //panel 2 to contain panel 1 
        //JPanel p2 = new JPanel();
        //p2.setLayout(new BorderLayout());
        //p2.add(p1, BorderLayout.CENTER);
        
        //p2.add(menuBar, BorderLayout.NORTH);
        
        //panel 2 to be the content pane
        setContentPane(p1);
        setResizable (false);
        
        
    }

    private void exitMenuItemActionPerformed (java.awt.event.ActionEvent evt) {
        System.exit (0);
    }

    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit (0);
    }

    /**
    * @param args the command line arguments
    */
    public static void main (String args[]) {
        App2 app = new App2();
        app.show ();
        app.initMM();
        app.run("test");
    }

    // Variables declaration - do not modify
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JMenu fileMenu;
    private javax.swing.JMenuItem openMenuItem;
    private javax.swing.JMenuItem saveMenuItem;
    private javax.swing.JMenuItem saveAsMenuItem;
    private javax.swing.JMenuItem exitMenuItem;
    private javax.swing.JMenu editMenu;
    private javax.swing.JMenuItem cutMenuItem;
    private javax.swing.JMenuItem copyMenuItem;
    private javax.swing.JMenuItem pasteMenuItem;
    private javax.swing.JMenuItem deleteMenuItem;
    private javax.swing.JMenu helpMenu;
    private javax.swing.JMenuItem contentsMenuItem;
    private javax.swing.JMenuItem aboutMenuItem;
    
    private java.awt.Graphics2D appG2D;
    private java.awt.Graphics2D buffG2D;
    private BufferedImage theScreen;

    //AudioClip
    // End of variables declaration

}
