// Generated by SharpKit.QooxDoo.Generator
using System;
using System.Collections.Generic;
using SharpKit.Html;
using SharpKit.JavaScript;

namespace qx.application
{
    /// <summary>
	/// <para>Basic application routing manager.</para>
	/// <para>Define routes to react on certain GET / POST / DELETE / PUT operations.</para>
	/// <list type="bullet">
	/// <item>GET is triggered when the hash value of the url is changed. Can be called
	/// manually by calling the <see cref="ExecuteGet"/> method.</item>
	/// <item>POST / DELETE / PUT has to be triggered manually right now (will be changed later)
	/// by calling the <see cref="ExecutePost"/>, <see cref="ExecuteDelete"/>, <see cref="ExecutePut"/> method.</item>
	/// </list>
	/// <para>This manager can also be used to provide browser history.</para>
	/// <para>Example</para>
	/// <para>Here is a little example of how to use the widget.</para>
	/// <code>
	/// var r = new qx.application.Routing();
	/// // show the start page, when no hash is given or the hash is "#/"
	/// r.onGet("/", function(data) {
	/// 	startPage.show();
	/// }, this);
	/// // whenever the url /address is called show the addressbook page.
	/// 	r.onGet("/address", function(data) {
	/// 	addressBookPage.show();
	/// }, this);
	/// // address with the parameter "id"
	/// r.onGet("/address/{id}", function(data) {
	/// 	addressPage.show();
	/// 	model.loadAddress(data.params.id);
	/// }, this);
	/// // Alternative you can use regExp for a route
	/// r.onGet(/address\/(.*)/, function(data) {
	/// addressPage.show();
	/// model.loadAddress(data.params.0);
	/// }, this);
	/// // make sure that the data is always loaded
	/// r.onGet("/address.*", function(data) {
	/// if (!model.isLoaded()) {
	/// model.loadAddresses();
	/// }
	/// }, this);
	/// // update the address
	/// r.onPost("/address/{id}", function(data) {
	/// model.updateAddress(data.params.id);
	/// }, this);
	/// // delete the address and navigate back
	/// r.onDelete("/address/{id}", function(data) {
	/// model.deleteAddress(data.params.id);
	/// r.executeGet("/address", {reverse:true});
	/// }, this);
	/// </code>
	/// <para>This example defines different routes to handle navigation events.</para>
	/// </summary>
	[JsType(JsMode.Prototype, Name = "qx.application.Routing", OmitOptionalParameters = true, Export = false)]
    public partial class Routing 
    {
		#region Methods

		public Routing() { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Decouples the Routing from the navigation handler.</para>
		/// </summary>
		[JsMethod(Name = "dispose")]
		public void Dispose() { throw new NotImplementedException(); }

		/// <summary>
		/// <para>This is a shorthand for <see cref="ExecuteGet"/>.</para>
		/// </summary>
		/// <param name="path">The path to execute</param>
		/// <param name="customData">The given custom data that should be propagated</param>
		[JsMethod(Name = "execute")]
		public void Execute(string path, object customData) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Executes the delete operation and informs all matching route handler.</para>
		/// </summary>
		/// <param name="path">The path to execute</param>
		/// <param name="paramsx">The given parameters that should be propagated</param>
		/// <param name="customData">The given custom data that should be propagated</param>
		[JsMethod(Name = "executeDelete")]
		public void ExecuteDelete(string path, object paramsx, object customData) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Executes the get operation and informs all matching route handler.</para>
		/// </summary>
		/// <param name="path">The path to execute</param>
		/// <param name="customData">The given custom data that should be propagated</param>
		[JsMethod(Name = "executeGet")]
		public void ExecuteGet(string path, object customData) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Executes the post operation and informs all matching route handler.</para>
		/// </summary>
		/// <param name="path">The path to execute</param>
		/// <param name="paramsx">The given parameters that should be propagated</param>
		/// <param name="customData">The given custom data that should be propagated</param>
		[JsMethod(Name = "executePost")]
		public void ExecutePost(string path, object paramsx, object customData) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Executes the put operation and informs all matching route handler.</para>
		/// </summary>
		/// <param name="path">The path to execute</param>
		/// <param name="paramsx">The given parameters that should be propagated</param>
		/// <param name="customData">The given custom data that should be propagated</param>
		[JsMethod(Name = "executePut")]
		public void ExecutePut(string path, object paramsx, object customData) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Returns state value (history hash) of the navigation handler.</para>
		/// </summary>
		/// <returns>State of history navigation handler</returns>
		[JsMethod(Name = "getState")]
		public string GetState() { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Initialization method used to execute the get route for the currently set history path.
		/// If no path is set, either the given argument named defaultRoute
		/// or the <see cref="#DEFAULT_PATH"/> will be used for initialization.</para>
		/// </summary>
		/// <param name="defaultRoute">Optional default route for initialization.</param>
		[JsMethod(Name = "init")]
		public void Init(string defaultRoute) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>This is a shorthand for <see cref="OnGet"/>.</para>
		/// </summary>
		/// <param name="route">The route, used for checking if the executed path matches.</param>
		/// <param name="handler">The handler to call, when the route matches with the executed path.</param>
		/// <param name="scope">The scope of the handler.</param>
		/// <returns>Event listener ID</returns>
		[JsMethod(Name = "on")]
		public string On(object route, Action<object> handler, object scope) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Adds a route handler for the &#8220;any&#8221; operation. The &#8220;any&#8221; operation is called
		/// before all other operations.</para>
		/// </summary>
		/// <param name="route">The route, used for checking if the executed path matches</param>
		/// <param name="handler">The handler to call, when the route matches with the executed path</param>
		/// <param name="scope">The scope of the handler</param>
		/// <returns>Event listener ID</returns>
		[JsMethod(Name = "onAny")]
		public string OnAny(object route, Action<object> handler, object scope) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Adds a route handler for the &#8220;delete&#8221; operation. The route gets called
		/// when the <see cref="ExecuteDelete"/> method found a match.</para>
		/// </summary>
		/// <param name="route">The route, used for checking if the executed path matches</param>
		/// <param name="handler">The handler to call, when the route matches with the executed path</param>
		/// <param name="scope">The scope of the handler</param>
		/// <returns>Event listener ID</returns>
		[JsMethod(Name = "onDelete")]
		public string OnDelete(object route, Action<object> handler, object scope) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Adds a route handler for the &#8220;get&#8221; operation. The route gets called
		/// when the <see cref="ExecuteGet"/> method found a match.</para>
		/// </summary>
		/// <param name="route">The route, used for checking if the executed path matches.</param>
		/// <param name="handler">The handler to call, when the route matches with the executed path.</param>
		/// <param name="scope">The scope of the handler.</param>
		/// <returns>Event listener ID</returns>
		[JsMethod(Name = "onGet")]
		public string OnGet(object route, Action<object> handler, object scope) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Adds a route handler for the &#8220;post&#8221; operation. The route gets called
		/// when the <see cref="ExecutePost"/> method found a match.</para>
		/// </summary>
		/// <param name="route">The route, used for checking if the executed path matches.</param>
		/// <param name="handler">The handler to call, when the route matches with the executed path.</param>
		/// <param name="scope">The scope of the handler.</param>
		/// <returns>Event listener ID</returns>
		[JsMethod(Name = "onPost")]
		public string OnPost(object route, Action<object> handler, object scope) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Adds a route handler for the &#8220;put&#8221; operation. The route gets called
		/// when the <see cref="ExecutePut"/> method found a match.</para>
		/// </summary>
		/// <param name="route">The route, used for checking if the executed path matches</param>
		/// <param name="handler">The handler to call, when the route matches with the executed path</param>
		/// <param name="scope">The scope of the handler</param>
		/// <returns>Event listener ID</returns>
		[JsMethod(Name = "onPut")]
		public string OnPut(object route, Action<object> handler, object scope) { throw new NotImplementedException(); }

		/// <summary>
		/// <para>Removes a registered route by the given id.</para>
		/// </summary>
		/// <param name="id">The id of the registered route</param>
		[JsMethod(Name = "remove")]
		public void Remove(string id) { throw new NotImplementedException(); }

		#endregion Methods
    }
}