/*
 * A dialog box to allow users to define the media agents they
 * want to use during session. There can be only three media agents
 * programs defined within Simphony. One agent for each media type, 
 * namely, audio, video, and application type. Currently users are 
 * allowed to set the executable name and path.
 *
 * Author: Janet H. Park
 * Date: August, 1998
 *
 */

import java.awt.*;
import java.util.*;

public class MediaDialog extends Dialog
{

	Simphony main;

	public MediaDialog(Simphony parent, boolean modal)
	{
		super(parent, modal);
		main = parent;

		// This code is automatically generated by Visual Cafe when you add
		// components to the visual environment. It instantiates and initializes
		// the components. To modify the code, only use code syntax that matches
		// what Visual Cafe can generate, or Visual Cafe may be unable to back
		// parse your Java file into its visual environment.
		//{{INIT_CONTROLS
		GridBagLayout gridBagLayout;
		gridBagLayout = new GridBagLayout();
		setLayout(gridBagLayout);
		setVisible(false);
		setSize(insets().left + insets().right + 387,insets().top + insets().bottom + 328);
		panel1 = new java.awt.Panel();
		panel1.setLayout(null);
		panel1.setBounds(insets().left + 10,insets().top + 10,367,308);
		panel1.setForeground(new Color(-16777125));
		panel1.setBackground(new Color(-3545857));
		GridBagConstraints gbc;
		gbc = new GridBagConstraints();
		gbc.weightx = 100.0;
		gbc.weighty = 100.0;
		gbc.fill = GridBagConstraints.BOTH;
		gbc.insets = new Insets(10,10,10,10);
		((GridBagLayout)getLayout()).setConstraints(panel1, gbc);
		add(panel1);
		labelVideo = new java.awt.Label("video tool",Label.RIGHT);
		labelVideo.setBounds(10,103,78,29);
		labelVideo.setFont(new Font("Dialog", Font.BOLD, 12));
		panel1.add(labelVideo);
		labelVidName = new java.awt.Label("name:",Label.RIGHT);
		labelVidName.setBounds(96,105,36,24);
		labelVidName.setFont(new Font("Dialog", Font.PLAIN, 12));
		panel1.add(labelVidName);
		textFieldVidName = new java.awt.TextField();
		textFieldVidName.setBounds(144,105,84,28);
		panel1.add(textFieldVidName);
		textFieldVidPath = new java.awt.TextField();
		textFieldVidPath.setBounds(144,137,205,28);
		textFieldVidPath.setBackground(new Color(-3545857));
		panel1.add(textFieldVidPath);
		buttonDone = new java.awt.Button();
		buttonDone.setActionCommand("button");
		buttonDone.setLabel("Done");
		buttonDone.setBounds(121,277,108,22);
		buttonDone.setForeground(new Color(16777215));
		buttonDone.setBackground(new Color(4212140));
		panel1.add(buttonDone);
		labelVidPath = new java.awt.Label("path:",Label.RIGHT);
		labelVidPath.setBounds(96,137,36,24);
		panel1.add(labelVidPath);
		labelWb = new java.awt.Label("whiteboard",Label.RIGHT);
		labelWb.setBounds(0,190,90,24);
		labelWb.setFont(new Font("Dialog", Font.BOLD, 12));
		panel1.add(labelWb);
		labelWbName = new java.awt.Label("name:",Label.RIGHT);
		labelWbName.setBounds(96,189,36,24);
		labelWbName.setFont(new Font("Dialog", Font.PLAIN, 12));
		panel1.add(labelWbName);
		textFieldWbName = new java.awt.TextField();
		textFieldWbName.setBounds(144,189,84,28);
		panel1.add(textFieldWbName);
		textFieldWbPath = new java.awt.TextField();
		textFieldWbPath.setBounds(144,221,205,28);
		textFieldWbPath.setBackground(new Color(-3545857));
		panel1.add(textFieldWbPath);
		labelWbPath = new java.awt.Label("path:",Label.RIGHT);
		labelWbPath.setBounds(96,221,36,24);
		panel1.add(labelWbPath);
		labelAudio = new java.awt.Label("audio tool",Label.RIGHT);
		labelAudio.setBounds(12,19,78,29);
		labelAudio.setFont(new Font("Dialog", Font.BOLD, 12));
		panel1.add(labelAudio);
		labelAudName = new java.awt.Label("name:",Label.RIGHT);
		labelAudName.setBounds(96,21,36,24);
		labelAudName.setFont(new Font("Dialog", Font.PLAIN, 12));
		panel1.add(labelAudName);
		textFieldAudName = new java.awt.TextField();
		textFieldAudName.setBounds(144,21,84,28);
		panel1.add(textFieldAudName);
		textFieldAudPath = new java.awt.TextField();
		textFieldAudPath.setBounds(144,53,205,28);
		textFieldAudPath.setBackground(new Color(-3545857));
		panel1.add(textFieldAudPath);
		labelAudPath = new java.awt.Label("path:",Label.RIGHT);
		labelAudPath.setBounds(96,53,36,24);
		panel1.add(labelAudPath);
		setTitle("MediaDialog");
		//}}

		//{{REGISTER_LISTENERS
		SymWindow aSymWindow = new SymWindow();
		this.addWindowListener(aSymWindow);
		SymAction lSymAction = new SymAction();
		buttonDone.addActionListener(lSymAction);
		//}}
	}
	
	public void addNotify()
	{
  	    // Record the size of the window prior to calling parents addNotify.
	    Dimension d = getSize();

		super.addNotify();

		if (fComponentsAdjusted)
			return;

		// Adjust components according to the insets
		setSize(insets().left + insets().right + d.width, insets().top + insets().bottom + d.height);
		Component components[] = getComponents();
		for (int i = 0; i < components.length; i++)
		{
			Point p = components[i].getLocation();
			p.translate(insets().left, insets().top);
			components[i].setLocation(p);
		}
		fComponentsAdjusted = true;
	}

    // Used for addNotify check.
	boolean fComponentsAdjusted = false;

    	/*
	public MediaDialog(Simphony parent, String title, boolean modal)
	{
		this(parent, modal);
		setTitle(title);
		main = parent;
	}
	*/

	public synchronized void show()
	{
		Rectangle bounds = getParent().bounds();
		Rectangle abounds = bounds();

		move(bounds.x + (bounds.width - abounds.width)/ 2,
			 bounds.y + (bounds.height - abounds.height)/2);

		super.show();
	}

	//{{DECLARE_CONTROLS
	java.awt.Panel panel1;
	java.awt.Label labelVideo;
	java.awt.Label labelVidName;
	java.awt.TextField textFieldVidName;
	java.awt.TextField textFieldVidPath;
	java.awt.Button buttonDone;
	java.awt.Label labelVidPath;
	java.awt.Label labelWb;
	java.awt.Label labelWbName;
	java.awt.TextField textFieldWbName;
	java.awt.TextField textFieldWbPath;
	java.awt.Label labelWbPath;
	java.awt.Label labelAudio;
	java.awt.Label labelAudName;
	java.awt.TextField textFieldAudName;
	java.awt.TextField textFieldAudPath;
	java.awt.Label labelAudPath;
	//}}

	class SymWindow extends java.awt.event.WindowAdapter
	{
		public void windowClosing(java.awt.event.WindowEvent event)
		{
			Object object = event.getSource();
			if (object == MediaDialog.this)
				Dialog1_WindowClosing(event);
		}
	}
	
	void Dialog1_WindowClosing(java.awt.event.WindowEvent event)
	{
		hide();
	}

	class SymAction implements java.awt.event.ActionListener
	{
		public void actionPerformed(java.awt.event.ActionEvent event)
		{
			Object object = event.getSource();
			if (object == buttonDone)
				buttonDone_Action(event);
		}
	}

	void buttonDone_Action(java.awt.event.ActionEvent event)
	{
		// to do: code goes here.
		String audio = textFieldAudName.getText().trim();
		String audiopath = textFieldAudPath.getText().trim();
		String video = textFieldVidName.getText().trim();
		String videopath = textFieldVidPath.getText().trim();
		String wb = textFieldWbName.getText().trim();
		String wbpath = textFieldWbPath.getText().trim();
	
		Media m;
		Vector mediaAgents = new Vector();
		int i = 0;

		if ((audio.length() != 0) && (audiopath.length() != 0)) {
			m = new Media("audio", audio, audiopath);
		    	mediaAgents.addElement(m);
			i++;
		}
		if ((video.length() != 0) && (videopath.length() != 0)) {
			m = new Media("video", video, video);
		    	mediaAgents.addElement(m);
			i++;
		}
		if ((wb.length() != 0) && (wbpath.length() != 0)) {
			m = new Media("wb", wb, wbpath);
		    	mediaAgents.addElement(m);
		    	i++;
		}
        if ( i > 0 ) {
		    Media[] ma = new Media[mediaAgents.size()];
		    mediaAgents.copyInto(ma);
		    main.setMediaAgents(ma);
        }

		//{{CONNECTION
		// Hide the Dialog
		setVisible(false);
		//}}
	}

}
