private void Open()
        {
            OpenResourcePackRequest.Raise(new Notification
            {
                Content = "Open Resource Pack",
                Title   = "Open Resource Pack"
            }, delegate(INotification notification)
            {
                _loadedResourcePackFileName = notification.Content as string;
                if (_loadedResourcePackFileName == null)
                {
                    return;
                }

                ClearLoadedData();
                var resources = _domainService.LoadResourcePack(_loadedResourcePackFileName).ToList();
                BGMResources.AddRange(resources.Where(x => x.ResourceType == ResourceType.BGM));
                SFXResources.AddRange(resources.Where(x => x.ResourceType == ResourceType.SFX));
                CreatureResources.AddRange(resources.Where(x => x.ResourceType == ResourceType.Creature));
                IconResources.AddRange(resources.Where(x => x.ResourceType == ResourceType.Icon));
                ItemResources.AddRange(resources.Where(x => x.ResourceType == ResourceType.Item));
                PortraitResources.AddRange(resources.Where(x => x.ResourceType == ResourceType.Portrait));
                TilesetResources.AddRange(resources.Where(x => x.ResourceType == ResourceType.Tileset));
            });
        }
 private void ClearLoadedData()
 {
     BGMResources.Clear();
     CreatureResources.Clear();
     ItemResources.Clear();
     SFXResources.Clear();
     IconResources.Clear();
     PortraitResources.Clear();
     TilesetResources.Clear();
 }
        private void AddOrUpdateResource(ResourceItemData item)
        {
            ResourceItemData existing;

            switch (SelectedTab)
            {
            case Tab.BGM:
                existing = BGMResources.SingleOrDefault(x => x.FileName == item.FileName);
                if (existing != null)
                {
                    BGMResources.Remove(existing);
                }
                BGMResources.Add(item);
                break;

            case Tab.SFX:
                existing = SFXResources.SingleOrDefault(x => x.FileName == item.FileName);
                if (existing != null)
                {
                    SFXResources.Remove(existing);
                }
                SFXResources.Add(item);
                break;

            case Tab.Creatures:
                existing = CreatureResources.SingleOrDefault(x => x.FileName == item.FileName);
                if (existing != null)
                {
                    CreatureResources.Remove(existing);
                }
                CreatureResources.Add(item);
                break;

            case Tab.Icons:
                existing = IconResources.SingleOrDefault(x => x.FileName == item.FileName);
                if (existing != null)
                {
                    IconResources.Remove(existing);
                }
                IconResources.Add(item);
                break;

            case Tab.Items:
                existing = ItemResources.SingleOrDefault(x => x.FileName == item.FileName);
                if (existing != null)
                {
                    ItemResources.Remove(existing);
                }
                ItemResources.Add(item);
                break;

            case Tab.Portraits:
                existing = PortraitResources.SingleOrDefault(x => x.FileName == item.FileName);
                if (existing != null)
                {
                    PortraitResources.Remove(existing);
                }
                PortraitResources.Add(item);
                break;

            case Tab.Tilesets:
                existing = TilesetResources.SingleOrDefault(x => x.FileName == item.FileName);
                if (existing != null)
                {
                    TilesetResources.Remove(existing);
                }
                TilesetResources.Add(item);
                break;
            }
        }