public ThemeEditorWindowContentsViewController(Palette <T> palette, EditPaletteStoreService editService,
                                                       ThemeEditorWindowContentsView view)
        {
            _palette     = palette;
            _editService = editService;
            _view        = view;

            var treeView = _view.TreeView;

            treeView.OnItemAddedAsObservable()
            .Subscribe(OnItemAdded)
            .DisposeWith(_disposables);

            treeView.OnItemRemovedAsObservable()
            .Subscribe(OnItemRemoved)
            .DisposeWith(_disposables);

            treeView.OnItemClearedAsObservable()
            .Subscribe(_ => OnItemCleared())
            .DisposeWith(_disposables);

            treeView.ItemIndexChangedAsObservable
            .Subscribe(x => ItemIndexChanged(x.item, x.newIndex))
            .DisposeWith(_disposables);

            view.RightClickCreateMenuClickedAsObservable
            .Subscribe(_ => AddNewTheme())
            .DisposeWith(_disposables);

            view.RightClickRemoveMenuClickedAsObservable
            .Subscribe(_ => OnRightClickRemoveMenuClicked())
            .DisposeWith(_disposables);
        }
        private void SetupContentsView(PaletteStore store, PaletteEditorWindow view)
        {
            _colorContentsViewController?.Dispose();
            _gradientContentsViewController?.Dispose();
            _characterStyleContentsViewController?.Dispose();
            _characterStyleTMPContentsViewController?.Dispose();
            _emptyViewController?.Dispose();

            _editService = new EditPaletteStoreService(store, new GenerateNameEnumsFileService(store));

            _colorContentsViewController =
                new PaletteEditorWindowContentsViewController <Color>(store.ColorPalette, _editService,
                                                                      view.ColorContentsView);
            _gradientContentsViewController =
                new PaletteEditorWindowContentsViewController <Gradient>(store.GradientPalette, _editService,
                                                                         view.GradientContentsView);
            _characterStyleContentsViewController =
                new PaletteEditorWindowContentsViewController <CharacterStyle>(store.CharacterStylePalette, _editService,
                                                                               view.CharacterStyleContentsView);
            _characterStyleTMPContentsViewController =
                new PaletteEditorWindowContentsViewController <CharacterStyleTMP>(store.CharacterStyleTMPPalette,
                                                                                  _editService, view.CharacterStyleTMPContentsView);

            _activeContentsViewController = GetPerTypeController(_guiState.ActivePaletteType.Value);
        }