using UnityEngine;
using UnityEditor;
using System.Collections;

public static class ES2EditorTools
{
	public static bool AssetExists(string relativePath)
	{
		return AssetDatabase.AssetPathToGUID(relativePath) != "";
	}
	
	public static void ClearDefaultSaveFolder() 
	{
		if(EditorUtility.DisplayDialog("Clear Default Save Folder?", "Are you sure you want to clear the Default Save Folder?\n\nThis will delete everything stored in:\n"+Application.persistentDataPath, "Clear Default Save Folder", "Cancel")) 
		{
			ES2.Delete (Application.persistentDataPath+"/");
		}
	}
	
	public static void ClearPlayerPrefs() 
	{
		if(EditorUtility.DisplayDialog("Clear PlayerPrefs?", "Are you sure you want to clear PlayerPrefs?\nThis will delete everything stored in PlayerPrefs.", "Clear PlayerPrefs", "Cancel")) 
		{
			PlayerPrefs.DeleteAll();
		}
	}
	
	public static void ShowInFileBrowser(string path)
	{
		OSFileBrowser.Open(path);
	}
}

public static class OSFileBrowser
{
	public static bool IsInMacOS
	{
		get
		{
			return UnityEngine.SystemInfo.operatingSystem.IndexOf("Mac OS") != -1;
		}
	}
	
	public static bool IsInWinOS
	{
		get
		{
			return UnityEngine.SystemInfo.operatingSystem.IndexOf("Windows") != -1;
		}
	}
	
	public static void OpenInMac(string path)
	{
		bool openInsidesOfFolder = false;
		
		// try mac
		string macPath = path.Replace("\\", "/"); // mac finder doesn't like backward slashes
		
		if ( System.IO.Directory.Exists(macPath) ) // if path requested is a folder, automatically open insides of that folder
		{
			openInsidesOfFolder = true;
		}
		
		if ( !macPath.StartsWith("\"") )
		{
			macPath = "\"" + macPath;
		}
		
		if ( !macPath.EndsWith("\"") )
		{
			macPath = macPath + "\"";
		}
		
		string arguments = (openInsidesOfFolder ? "" : "-R ") + macPath;
		
		try
		{
			System.Diagnostics.Process.Start("open", arguments);
		}
		catch ( System.ComponentModel.Win32Exception e )
		{
			// tried to open mac finder in windows
			// just silently skip error
			// we currently have no platform define for the current OS we are in, so we resort to this
			e.HelpLink = ""; // do anything with this variable to silence warning about not using it
		}
	}
	
	public static void OpenInWin(string path)
	{
		bool openInsidesOfFolder = false;
		
		// try windows
		string winPath = path.Replace("/", "\\"); // windows explorer doesn't like forward slashes
		
		if ( System.IO.Directory.Exists(winPath) ) // if path requested is a folder, automatically open insides of that folder
		{
			openInsidesOfFolder = true;
		}
		
		try
		{
			System.Diagnostics.Process.Start("explorer.exe", (openInsidesOfFolder ? "/root," : "/select,") + winPath);
		}
		catch ( System.ComponentModel.Win32Exception e )
		{
			// tried to open win explorer in mac
			// just silently skip error
			// we currently have no platform define for the current OS we are in, so we resort to this
			e.HelpLink = ""; // do anything with this variable to silence warning about not using it
		}
	}
	
	public static void Open(string path)
	{
		if ( IsInWinOS )
		{
			OpenInWin(path);
		}
		else if ( IsInMacOS )
		{
			OpenInMac(path);
		}
		else // couldn't determine OS
		{
			OpenInWin(path);
			OpenInMac(path);
		}
	}
}

