public static void Edit(Resource resource)
		{
			ResourceEditor editor = CreateInstance<ResourceEditor>();
			editor.titleContent = new GUIContent("Edit " + resource.category);
			editor.EditResource(resource);
			editor.Show();
		}
		private static void OnResourceSaved(Resource resource)
		{
			if(resource is Configuration)
			{
				Configuration config = (resource as Configuration);

// TODO: filter out bad data
//				if(config == null)
//				{
//					FatalError("There is no configuration set up.");
//				}
//				else if(config.setting == null)
//				{
//					FatalError("There is no setting defined in the configuration.");
//				}
//				else if(config.setting.bootState == null)
//				{
//					FatalError("The configuratons setting needs a boot state defined.");
//				}
//				else if(config.setting.states == null || config.setting.states.Count == 0)
//				{
//					FatalError("You must define states you need in the configuratons setting.");
//				}
//				else if(!config.setting.states.Contains(config.setting.bootState))
//				{
//					FatalError("Defined setting must have boot state added into states.");
//				}
//				else if(config.setting.loader == null)
//				{
//					FatalError("You must define a loader scene.");
//				}
//				if(config.setting == null)
//				{
//					Debug.LogError("You must have setting defined in the configuration.");
//					return;
//				}
//				Debug.LogError("You must have a loader scene defined for setting: " + config.setting.name);

				int totalScenes = config.setting.states.Count + 2;
				EditorBuildSettingsScene[] newScenes = new EditorBuildSettingsScene[totalScenes];
				newScenes[0] = new EditorBuildSettingsScene("Assets/Scenes/Main.unity", true);
				newScenes[1] = new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(config.setting.loader), true);

				for(int i = 0; i<config.setting.states.Count; i++)
				{
					SceneAsset scene = config.setting.states[i].scene;
					newScenes[i+2] = new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(scene), true);
				}

				EditorBuildSettings.scenes = newScenes;
			}
		}
 public ActionResult Update(Resource resource)
 {
     var urlReferrer = Request.UrlReferrer;
     string newUrl = Request.UrlReferrer.ToString();
     bool success = true;
     try
     {
         _resourceUpdateCommand.PerformAction(resource, DataSession);
     }
     catch
     {
         success = false;
     }
     if (newUrl.Contains("success"))
     {
         newUrl = newUrl.Replace("&success=true", "");
         newUrl = newUrl.Replace("&success=false", "");
         newUrl = newUrl.Replace("?success=true", "");
         newUrl = newUrl.Replace("?success=false", "");
     }
     var separator = (newUrl.Contains("?") ? "&" : "?");
     newUrl += string.Format("{0}success={1}", separator, success.ToString().ToLower());
     return Redirect(newUrl);
 }
		public void EditResource(Resource resource)
		{
			mode = eResourceMode.Edit;
			this.resource = resource;
			feedback = "Editting resource: " + resource.name;
			serialized = new SerializedObject(resource);
		}
		public void CreateResource(Type type)
		{
			mode = eResourceMode.Create;
			resource = (Resource)ScriptableObject.CreateInstance(type);
			feedback = "Creating new resource; " + type.Name.ToString();
			serialized = new SerializedObject(resource);
		}