import java.awt.*;
import java.util.*;
import java.awt.swing.*;
import java.awt.swing.event.*;
public class FormPanel extends JPanel implements Observer {
 Movie movie = null;                                    
 JTextField scriptField = new JTextField("0", 20);
 JTextField actingField = new JTextField("0", 20);
 JTextField directingField = new JTextField("0", 20);
 FormPanel () {
  setLayout(new GridLayout(3, 2, 3, 3));              
  add(new JLabel ("Script"));    add(scriptField);
  add(new JLabel ("Acting"));    add(actingField);
  add(new JLabel ("Directing")); add(directingField);
  scriptField.addActionListener(new LocalActionListener());     
  actingField.addActionListener(new LocalActionListener());     
  directingField.addActionListener(new LocalActionListener());  
 }
 public void attachObservable (Movie m) {
  if (m != movie) {
   if (movie != null) {movie.deleteObserver(this);}
   movie = m;
   movie.addObserver(this);
   movie.changed();
  }
 }
 public void update (Observable o, Object x) {
  scriptField.setText(String.valueOf(movie.getScript()));
  actingField.setText(String.valueOf(movie.getActing()));
  directingField.setText(String.valueOf(movie.getDirecting()));
 }
 class LocalActionListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   if (movie == null) {return;}
   if (e.getSource() == scriptField) {                                
    movie.setScript(Integer.parseInt(e.getActionCommand())); return;  
   } else if (e.getSource() == actingField) {                         
    movie.setActing(Integer.parseInt(e.getActionCommand())); return;  
   } else if (e.getSource() == directingField) {                      
    movie.setDirecting(Integer.parseInt(e.getActionCommand())); return;
   } else {return;}  
  } 
 } 
 public Dimension getMinimumSize() {return new Dimension(300, 75);}
 public Dimension getPreferredSize() {return new Dimension(300, 75);}
}
