package ch.werner_randelshofer.gui;/*Copyright (C) 1999 Werner Randelshoferwerner.randelshofer@mythen.chhttp://www.mythen.ch/w.randelshofer/    Permission to use this release of MovieControlAWT is herebygranted without fee provided that the complete copyrightnotice and this permission notice appear in all copiesand in supporting documentation.*/import java.awt.Panel;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import ch.werner_randelshofer.gui.model.Player;import ch.werner_randelshofer.gui.model.BoundedRangeModel;import ch.werner_randelshofer.gui.event.ChangeListener;import ch.werner_randelshofer.gui.event.ChangeEvent;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;/**The MovieControlPanel contains a start/stop button,a slider, a forward and a rewind button.@author	Werner Randelshofer, Staldenmattweg 2, CH-6405 Immensee, Switzerland.@version	1999-02-28	Created.*/public class MovieControlAWTextends Panelimplements ActionListener, ItemListener, ChangeListener	{	private Player player_;	private MovieSlider slider_;	private TriggerButtonAWT forwardButton_, rewindButton_;	private ToggleButton startButton_;	private BoundedRangeModel boundedRangeModel_;		public MovieControlAWT()		{		super(new GridBagLayout());				GridBagConstraints c;				startButton_ = new ToggleButton();		startButton_.setUnselectedIcon(new ImageIcon(getClass().getResource("icon/Play.gif")));		startButton_.setSelectedIcon(new ImageIcon(getClass().getResource("icon/Pause.gif")));		startButton_.addItemListener(this);				c = new GridBagConstraints();		//c.gridx = 0;		//c.gridy = 0;		add(startButton_,c);				slider_ = new MovieSlider();				c = new GridBagConstraints();		c.gridx = 1;		//c.gridy = 0;		c.fill = GridBagConstraints.HORIZONTAL;		c.weightx = 1.0;		add(slider_,c);				rewindButton_ = new TriggerButtonAWT();		rewindButton_.setIcon(new ImageIcon(getClass().getResource("icon/Rewind.gif")));		c = new GridBagConstraints();		c.gridx = 2;		//c.gridy = 0;		add(rewindButton_,c);		rewindButton_.addActionListener(this);		forwardButton_ = new TriggerButtonAWT();		forwardButton_.setIcon(new ImageIcon(getClass().getResource("icon/Forward.gif")));		c = new GridBagConstraints();		c.gridx = 3;		//c.gridy = 0;		add(forwardButton_,c);		forwardButton_.addActionListener(this);		}		public synchronized void setPlayer(Player player)		{		if (player_ != null)			{			player_.removeChangeListener(this);			}		player_ = player;		boundedRangeModel_ = player_ == null ? null : player_.getBoundedRangeModel();		slider_.setModel(boundedRangeModel_);		if (player_ != null)			{			startButton_.setSelected(player_.isActive());			player_.addChangeListener(this);			}		}	public void setProgressModel(BoundedRangeModel brm)		{		slider_.setProgressModel(brm);		}		public void actionPerformed(ActionEvent event)		{		Object source = event.getSource();		int value = boundedRangeModel_.getValue();		if (source == forwardButton_)			{			boundedRangeModel_.setValue( value == boundedRangeModel_.getMaximum() ? boundedRangeModel_.getMinimum() : value + 1);			}		else if (source == rewindButton_)			{			boundedRangeModel_.setValue( value == boundedRangeModel_.getMinimum() ? boundedRangeModel_.getMaximum() : value - 1);			}		}		public void itemStateChanged(ItemEvent event)		{		if (player_ == null)			{ return; }					if (startButton_.isSelected() != player_.isActive())			{			if (startButton_.isSelected())				{ player_.start(); }			else				{ player_.stop(); }			}		}		public void stateChanged(ChangeEvent event)		{		startButton_.setSelected(player_.isActive());		}	}