src/ControlPanel.java

/*
 * QuickTime for Java SDK Sample Code
 
   Usage subject to restrictions in SDK License Agreement
 * Copyright: © 1996-1999 Apple Computer, Inc.
 
 */
import java.awt.*;
import java.awt.event.*;
 
import quicktime.*;
import quicktime.app.display.*;
import quicktime.app.anim.*;
import quicktime.app.time.*;
import quicktime.std.movies.MovieController;
import quicktime.app.players.QTPlayer;
 
 
/**
 * A simple panel of AWT objects to demonstrate how AWT can be used to control a
 * QuickTime movie.
 */
public class ControlPanel extends Panel implements Errors {
//_________________________ CLASS METHODS
    public ControlPanel (Timer c, QTPlayer m, DirectGroup dg, Compositor sh) {
        this.comp = c;
        this.mov = m;
        this.dg = dg;
        shTimer = sh.getTimer();
        dgTimer = dg.getTimer();
        
        
        GridBagLayout gb = new GridBagLayout();
        setLayout (gb);
 
        GridBagConstraints cons = new GridBagConstraints();
        cons.fill = GridBagConstraints.HORIZONTAL;
        cons.insets = new Insets (1, 1, 1, 1);      
        cons.weightx = 1.0;
        
        cons.gridy = 0;
        cons.gridx = 1;
        add (rateLabel, cons);
        
        cons.gridx = 2;
        add (rateField, cons);
        
        cons.gridy = 1;
        cons.gridx = 1;
        add (compLabel, cons);
        
        cons.gridx = 2;
        add (compField, cons);
                
        cons.gridy = 2;
        cons.gridx = 0;
        add (movCb, cons);
        
        //sprites
        cons.gridy = 2;
        cons.gridx = 2;
        add (spriteLabel, cons);
        
        cons.gridx = 3;
        add (spriteField, cons);
        
        //directgroup controller
        rateField.addActionListener (new ActionListener () {
                public void actionPerformed (ActionEvent event) {
                    String str = new String (event.getActionCommand());
                    dgTimer.setRate (new Float (str).floatValue());
                }
            });
            
        //compositor controller (ripples and spaceships)                
        compField.addActionListener (new ActionListener () {
                public void actionPerformed (ActionEvent event) {
                    String str = new String (event.getActionCommand());
                    comp.setRate (new Float (str).floatValue());
                }
            });
        
        //movie looping controller
        movCb.addItemListener(new ItemListener() {
            public void itemStateChanged (ItemEvent ev) {
                if (((Checkbox)ev.getItemSelectable()).getState()) {
                    try {
                        mov.getMovieController().setLooping(true);
                    }catch(QTException ex) {
                        throw new QTRuntimeException (ex);
                    }
                }               
                else {
                    try {
                        mov.getMovieController().setLooping(false);
                    }catch(QTException ex) {
                        throw new QTRuntimeException (ex);
                    }
                }   
            }
        }); 
                
        //spaceships rate controller
        spriteField.addActionListener (new ActionListener () {
                public void actionPerformed (ActionEvent event) {
                    String str = new String (event.getActionCommand());
                    shTimer.setRate (new Float (str).floatValue());
                }
        });
    }
 
    public void setDisplay () throws QTException {
        rateField.setText (Float.toString (dgTimer.getRate()));
        spriteField.setText (Float.toString (shTimer.getRate()));
        compField.setText (Float.toString (comp.getRate()));
    }
    
//_________________________ INSTANCE VARIABLES
    private Label rateLabel = new Label ("Direct Group Rate:", Label.RIGHT);
    private TextField rateField = new TextField (5);
    
    private Label compLabel = new Label ("Compositor Rate:", Label.RIGHT);
    private TextField compField = new TextField (5);
    
    private Checkbox movCb = new Checkbox("Loop Movie");
    
    private Label spriteLabel = new Label ("Sprites Rate:", Label.RIGHT);
    private TextField spriteField = new TextField (5);
 
 
    private Timer comp;
    private QTPlayer mov;
    private Timer dgTimer;
    private Timer shTimer;
    private DirectGroup dg;
//_________________________ INSTANCE METHODS
    /**
     * @return a Dimension object which defines the minimum size
     */  
    public Dimension getMinimumSize() { return new Dimension (0, 80); }
 
    /**
     * @return a Dimension object which defines the preferred size
     */  
    public Dimension getPreferredSize() { return getMinimumSize(); }
}