/// <summary>
		/// Change the current action
		/// </summary>
		/// <param name="action">Action handle</param>
		void SetAction(ActionBase action)
		{
			// Dispose disposable controls
			foreach (var ctrl in ActionPropertiesBox.Controls)
			{
				if (ctrl is IDisposable)
					((IDisposable)ctrl).Dispose();
			}
			ActionPropertiesBox.Controls.Clear();



			if (Script == null)
				return;

			Script.Action = action;

			if (action == null)
				return;

			ActionBaseControl basectrl = null;

			if (action is EnableTarget)
			{
				basectrl = new EnableTargetControl(action as EnableTarget, Dungeon);
			}
			else if (action is DisableTarget)
			{
				basectrl = new DisableTargetControl(action as DisableTarget, Dungeon);
			}
			else if (action is ToggleTarget)
			{
				basectrl = new ToggleTargetControl(action as ToggleTarget, Dungeon);
			}
			else if (action is ActivateTarget)
			{
				basectrl = new ActivateTargetControl(action as ActivateTarget, Dungeon);
			}
			else if (action is DeactivateTarget)
			{
				basectrl = new DeactivateTargetControl(action as DeactivateTarget, Dungeon);
			}
			else if (action is Teleport)
			{
				basectrl = new TeleportControl(action as Teleport, Dungeon);
			}
			else if (action is ChangePicture)
			{
				basectrl = new ChangePictureControl(action as ChangePicture);
			}
			else if (action is ChangeText)
			{
				basectrl = new ChangeTextControl(action as ChangeText);
			}
			else if (action is DisableChoice)
			{
				basectrl = new DisableChoiceControl(action as DisableChoice);
			}
			else if (action is EnableChoice)
			{
				basectrl = new EnableChoiceControl(action as EnableChoice);
			}
			else if (action is EndChoice)
			{
				basectrl = new EndChoiceControl(action as EndChoice);
			}
			else if (action is EndDialog)
			{
				basectrl = new EndDialogControl(action as EndDialog);
			}
			else if (action is GiveExperience)
			{
				basectrl = new GiveExperienceControl(action as GiveExperience);
			}
			else if (action is GiveItem)
			{
				basectrl = new GiveItemControl(action as GiveItem);
			}
			else if (action is Healing)
			{
				basectrl = new HealingControl(action as Healing);
			}
			else if (action is JoinCharacter)
			{
				basectrl = new JoinCharacterControl(action as JoinCharacter);
			}
			else if (action is DisplayMessage)
			{
				basectrl = new DisplayMessageControl(action as DisplayMessage);
			}
			else if (action is SetTo)
			{
				basectrl = new SetToControl(action as SetTo, Dungeon);
			}
			else if (action is SpawnMonster)
			{
				basectrl = new SpawnMonsterControl(action as SpawnMonster, Dungeon);
			}
			else
			{
			}

			if (basectrl == null)
				return;

			basectrl.Dock = DockStyle.Fill;
			ActionPropertiesBox.Controls.Add(basectrl);


		}
		/// <summary>
		/// Set the action
		/// </summary>
		/// <param name="script">Action handle</param>
		/// <returns>True on success</returns>
		public bool SetAction(ActionBase script)
		{
			ControlHandle = null;
			
			if (script is Teleport)
			{
				ActionListBox.SelectedItem = "Teleport";
				ControlHandle = new TeleportControl(script as Teleport, Dungeon);
			}

			else if (script is ActivateTarget)
			{
				ActionListBox.SelectedItem = "Activate";
				ControlHandle = new ActivateTargetControl(script as ActivateTarget, Dungeon);
			}

			else if (script is ChangePicture)
			{
				ActionListBox.SelectedItem = "Change Picture";
				ControlHandle = new ChangePictureControl(script as ChangePicture);
			}

			else if (script is PlaySound)
			{
				ActionListBox.SelectedItem = "Play Sound";
				ControlHandle = new PlaySoundControl(script as PlaySound);
			}

			else if (script is EndDialog)
			{
				ActionListBox.SelectedItem = "End Dialog";
				ControlHandle = new EndDialogControl(script as EndDialog);
			}

			else if (script is EndChoice)
			{
				ActionListBox.SelectedItem = "End Choice";
				ControlHandle = new EndChoiceControl(script as EndChoice);
			}

			else if (script is DeactivateTarget)
			{
				ActionListBox.SelectedItem = "Deactivate";
				ControlHandle = new DeactivateTargetControl(script as DeactivateTarget, Dungeon);
			}

			else if (script is EnableChoice)
			{
				ActionListBox.SelectedItem = "Enable Choice";
				ControlHandle = new EnableChoiceControl(script as EnableChoice);
			}

			else if (script is DisableChoice)
			{
				ActionListBox.SelectedItem = "Disable Choice";
				ControlHandle = new DisableChoiceControl(script as DisableChoice);
			}

			else if (script is ToggleTarget)
			{
				ActionListBox.SelectedItem = "Toggle";
				ControlHandle = new ToggleTargetControl(script as ToggleTarget, Dungeon);
			}

			else if (script is Healing)
			{
				ActionListBox.SelectedItem = "Healing";
				ControlHandle = new HealingControl(script as Healing);
			}

			else if (script is GiveExperience)
			{
				ActionListBox.SelectedItem = "Give Experience";
				ControlHandle = new GiveExperienceControl(script as GiveExperience);
			}

			else if (script is GiveItem)
			{
				ActionListBox.SelectedItem = "Give Item";
				ControlHandle = new GiveItemControl(script as GiveItem);
			}

			else if (script is ChangeText)
			{
				ActionListBox.SelectedItem = "Change Text";
				ControlHandle = new ChangeTextControl(script as ChangeText);
			}

			else if (script is JoinCharacter)
			{
				ActionListBox.SelectedItem = "Join Character";
				ControlHandle = new JoinCharacterControl(script as JoinCharacter);
			}


			if (ControlHandle == null)
				return false;


			ControlHandle.Dock = DockStyle.Fill;
			ActionControlBox.Controls.Clear();
			ActionControlBox.Controls.Add(ControlHandle);

			return true;
		}