using System;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

namespace TriLib.Samples
{
	public class URIDialog : MonoBehaviour
	{
		public static URIDialog Instance { get; private set; }

		public string Filename
		{
			get
			{
				return this._uriText.text;
			}
			set
			{
				this._uriText.text = value;
			}
		}

		public string Extension
		{
			get
			{
				return this._extensionText.text;
			}
			set
			{
				this._extensionText.text = value;
			}
		}

		protected void Awake()
		{
			this._cancelButton.onClick.AddListener(new UnityAction(this.HideDialog));
			this._uriText.onValueChanged.AddListener(new UnityAction<string>(this.UpdateExtension));
			URIDialog.Instance = this;
		}

		public void ShowDialog(Action<string, string> onOk)
		{
			this._okButton.onClick.RemoveAllListeners();
			this._okButton.onClick.AddListener(delegate()
			{
				if (onOk != null)
				{
					onOk(this.Filename, this.Extension);
				}
				this.HideDialog();
			});
			this._rendererGameObject.SetActive(true);
		}

		public void HideDialog()
		{
			this._rendererGameObject.SetActive(false);
		}

		private void UpdateExtension(string text)
		{
			this._extensionText.text = FileUtils.GetFileExtension(text);
		}

		[SerializeField]
		private Button _okButton;

		[SerializeField]
		private Button _cancelButton;

		[SerializeField]
		private InputField _uriText;

		[SerializeField]
		private InputField _extensionText;

		[SerializeField]
		private GameObject _rendererGameObject;
	}
}
