public override void CommandClick(string controlID) { if (controlID == COMMAND_NEW_ITEM) { List<RoomTemplate> templates = ConstructListOfRoomTemplates(); NewRoomDialog dialog = new NewRoomDialog(_agsEditor.CurrentGame, templates); if (dialog.ShowDialog() == DialogResult.OK) { CreateNewRoom(dialog.ChosenRoomNumber, dialog.ChosenTemplate); } dialog.Dispose(); DisposeIcons(templates); } else if (controlID == COMMAND_ADD_EXISTING_ROOM) { string fileName = _guiController.ShowOpenFileDialog("Choose room to import...", "AGS room files (*.crm)|*.crm"); if (fileName != null) { ImportExistingRoomFile(fileName); } } else if (controlID == COMMAND_CREATE_TEMPLATE) { CreateTemplateFromRoom(_rightClickedRoomNumber); } else if (controlID == COMMAND_EXCLUDE_ITEM) { if (MessageBox.Show("Are you sure you want to remove this room from the game? The file will not be deleted.", "Confirm exclude", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { if (EnsureNoCharactersStartInRoom(_rightClickedRoomNumber)) { RemoveRoomFromGame(_rightClickedRoomNumber); } } } else if (controlID == COMMAND_DELETE_ITEM) { if (MessageBox.Show("Are you sure you want to delete this room? It cannot be recovered.", "Confirm delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { if (EnsureNoCharactersStartInRoom(_rightClickedRoomNumber)) { DeleteRoom(_rightClickedRoomNumber); } } } else if (controlID == COMMAND_SORT_BY_NUMBER) { RoomList roomList = (RoomList)_agsEditor.CurrentGame.Rooms; roomList.SortByNumber(); RePopulateTreeView(); RoomListTypeConverter.SetRoomList(_agsEditor.CurrentGame.Rooms); } else if (controlID.StartsWith(TREE_PREFIX_ROOM_SETTINGS)) { LoadRoom(controlID); } else if (controlID.StartsWith(TREE_PREFIX_ROOM_SCRIPT)) { UnloadedRoom selectedRoom = FindRoomByID(Convert.ToInt32(controlID.Substring(3))); if (selectedRoom.Script == null) { selectedRoom.LoadScript(); } CreateOrShowScript(selectedRoom); } else if (controlID == COMMAND_LOAD_ROOM) { if ((_loadedRoom == null) || (_roomSettings == null) || (_loadedRoom.Number != _rightClickedRoomNumber)) { UnloadedRoom selectedRoom = FindRoomByID(_rightClickedRoomNumber); LoadDifferentRoom(selectedRoom); } if (_roomSettings != null) { _guiController.AddOrShowPane(_roomSettings); } } else if (controlID == COMMAND_SAVE_ROOM) { if (_loadedRoom != null) { SaveRoomAndShowAnyErrors(_loadedRoom); } } else if (controlID.StartsWith(TREE_PREFIX_ROOM_NODE)) { LoadRoom(controlID); } }