// MediaInfoDLL - All info about media files
// This software is provided 'as-is', without any express or implied
// warranty.  In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//    claim that you wrote the original software. If you use this software
//    in a product, an acknowledgment in the product documentation would be
//    appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//    misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Microsoft Visual J# example
//
// To make this example working, you must put MediaInfo.Dll and Example.ogg
// in the "./Bin/__ConfigurationName__" folder
// and add MediaInfoDll.jsl to your project
//
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

package Example;

import System.Drawing.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.Windows.Forms.*;
import System.Data.*;
import System.Text.*;

/**
 * Summary description for Form1.
 */
public class Form1 extends System.Windows.Forms.Form
{
	private System.Windows.Forms.RichTextBox richTextBox1;
	/**
	 * Required designer variable.
	 */
	private System.ComponentModel.Container components = null;

	public Form1()
	{
		//
		// Required for Windows Form Designer support
		//
		InitializeComponent();

		//
		// TODO: Add any constructor code after InitializeComponent call
		//
	}

	/**
	 * Clean up any resources being used.
	 */
	protected void Dispose(boolean disposing)
	{
		if (disposing)
		{
			if (components != null)
			{
				components.Dispose();
			}
		}
		super.Dispose(disposing);
	}

	#region Windows Form Designer generated code
	/**
	 * Required method for Designer support - do not modify
	 * the contents of this method with the code editor.
	 */
	private void InitializeComponent()
	{
		this.richTextBox1 = new System.Windows.Forms.RichTextBox();
		this.SuspendLayout();
		// 
		// richTextBox1
		// 
		this.richTextBox1.set_Font(new System.Drawing.Font("Microsoft Sans Serif", 8.25F));
		this.richTextBox1.set_Location(new System.Drawing.Point(0, 0));
		this.richTextBox1.set_Name("richTextBox1");
		this.richTextBox1.set_Size(new System.Drawing.Size(768, 512));
		this.richTextBox1.set_TabIndex(0);
		this.richTextBox1.set_Text("");
		// 
		// Form1
		// 
		this.set_AutoScaleBaseSize(new System.Drawing.Size(5, 13));
		this.set_ClientSize(new System.Drawing.Size(774, 514));
		this.get_Controls().Add(this.richTextBox1);
		this.set_FormBorderStyle(System.Windows.Forms.FormBorderStyle.Fixed3D);
		this.set_Name("Form1");
		this.set_StartPosition(System.Windows.Forms.FormStartPosition.CenterScreen);
		this.set_Text("MediaInfo.Dll Example");
		this.add_Load( new System.EventHandler(this.Form1_Load) );
		this.ResumeLayout(false);

	}
	#endregion

	/**
	 * The main entry point for the application.
	 */

	public static void main(String[] args) 
	{
		Application.Run(new Form1());
	}

	private void Form1_Load (Object sender, System.EventArgs e)
	{
		//Test if version of DLL is compatible : 3rd argument is "version of DLL tested;Your application name;Your application version"
		String ToDisplay;
		MediaInfo MI = new MediaInfo();

		ToDisplay = MI.Option("Info_Version", "0.7.0.0;MediaInfoDLL_Example_MSJS;0.7.0.0");
		if (ToDisplay.length() == 0)
		{
			richTextBox1.set_Text("MediaInfo.Dll: this version of the DLL is not compatible");
			return;
		}

		//Information about MediaInfo
		ToDisplay += "\r\n\r\nInfo_Parameters\r\n";
		ToDisplay += MI.Option("Info_Parameters");

		ToDisplay += "\r\n\r\nInfo_Capacities\r\n";
		ToDisplay += MI.Option("Info_Capacities");

		ToDisplay += "\r\n\r\nInfo_Codecs\r\n";
		ToDisplay += MI.Option("Info_Codecs");

		//An example of how to use the library
		ToDisplay += "\r\n\r\nOpen\r\n";
		MI.Open("Example.ogg");

		ToDisplay += "\r\n\r\nInform with Complete=false\r\n";
		MI.Option("Complete");
		ToDisplay += MI.Inform();

		ToDisplay += "\r\n\r\nInform with Complete=true\r\n";
		MI.Option("Complete", "1");
		ToDisplay += MI.Inform();

		ToDisplay += "\r\n\r\nCustom Inform\r\n";
		MI.Option("Inform", "General;Example : FileSize=%FileSize%");
		ToDisplay += MI.Inform();

		ToDisplay += "\r\n\r\nGet with Stream=General and Parameter=//FileSize//\r\n";
		ToDisplay += MI.Get(StreamKind.General, 0, "FileSize");

		ToDisplay += "\r\n\r\nGetI with Stream=General and Parameter=46\r\n";
		ToDisplay += MI.Get(StreamKind.General, 0, 46);

		ToDisplay += "\r\n\r\nCount_Get with StreamKind=Stream_Audio\r\n";
		ToDisplay += MI.Count_Get(StreamKind.Audio);

		ToDisplay += "\r\n\r\nGet with Stream=General and Parameter=//AudioCount//\r\n";
		ToDisplay += MI.Get(StreamKind.General, 0, "AudioCount");

		ToDisplay += "\r\n\r\nGet with Stream=Audio and Parameter=//StreamCount//\r\n";
		ToDisplay += MI.Get(StreamKind.Audio, 0, "StreamCount");

		ToDisplay += "\r\n\r\nClose\r\n";
		MI.Close();

		//Displaying the text
		richTextBox1.set_Text(ToDisplay);
	}
}
