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;
            }
        }