//[skeleton1.
package visual.statik;


import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

import app.*;
import visual.*;
import visual.statik.sampled.*;


/**
 * An example that illustrates the use of multiple views
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 *
 */
public class   PIPApp
       extends AbstractMultimediaApp
{
    /**
     * The entry point of the application
     */
    public void init()
    {
       BufferedImageOpFactory        opFactory;       
       Content                       woods, house;
       ContentFactory                factory;
       FancyBuzzy                    buzzy;       
       JPanel                        contentPane;       
       Visualization                 model1, model2;
       VisualizationRenderer         renderer1, renderer2;       
       VisualizationView             view1, view2;
       
       factory   = new ContentFactory();       
       opFactory = BufferedImageOpFactory.createFactory();
//]skeleton1.
//[visualization1.

       woods  = factory.createContent("/visual/statik/woods.gif", 
                                      3);
       woods.setLocation(0,0);
       woods.setBufferedImageOp(opFactory.createBlurOp(3));

       buzzy  = new FancyBuzzy();
       buzzy.setLocation(200, 318);       

       model1 = new Visualization();
       model1.add(woods);
       model1.add(buzzy);

       view1     = model1.getView();
       renderer1 = view1.getRenderer();       
       view1.setRenderer(new ScaledVisualizationRenderer(renderer1, 
                                                         471.0, 
                                                         418.0));       
       view1.setBounds(0,0,471,418);     
       view1.setSize(471,418);       
//]visualization1.

//[visualization2.

       house = factory.createContent("/visual/statik/house.gif", 
                                      3);
       house.setLocation(0,0);

       model2 = new Visualization();
       model2.add(house);

       view2     = model2.getView();
       renderer2 = view2.getRenderer();       
       view2.setRenderer(new ScaledVisualizationRenderer(renderer2, 
                                                         525.0, 
                                                         375.0));       
       view2.setBounds(50,50,160,120);     
       view2.setSize(160,120);       
//]visualization2.
       
//[contentPane.
       // The content pane
       contentPane = (JPanel)rootPaneContainer.getContentPane();
       contentPane.add(view2);
       contentPane.add(view1);
//]contentPane.
//[skeleton2.

    }
}
//]skeleton2.
