private void SelectBrush(Guid brushId)
        {
            if (_selectedBrush == brushId)
            {
                return;
            }

            TileBrush prevBrush = _selectedBrushRef;
            TileBrush newBrush  = TileBrushManager.GetBrush(brushId);

            _selectedBrushRef = newBrush;

            OnSyncCurrentBrush(new SyncTileBrushEventArgs(prevBrush));
        }
        public void ActionEditBrush(Guid brushId)
        {
            TileBrush brush = TileBrushManager.GetBrush(brushId) as TileBrush;

            if (brush == null)
            {
                return;
            }

            if (brush is DynamicTileBrush)
            {
                using (DynamicBrushForm form = new DynamicBrushForm(brush as DynamicTileBrush)) {
                    PresenterManager manager = new PresenterManager();
                    manager.Register <EditorPresenter>(_editor);

                    using (TilePoolListPresenter tilePoolList = new TilePoolListPresenter()) {
                        tilePoolList.Initialize(manager);
                        tilePoolList.BindTilePoolManager(_editor.Project.TilePoolManager);
                        form.BindTileController(tilePoolList);

                        foreach (TileBrush item in TileBrushManager.Brushes)
                        {
                            if (item.Name != brush.Name)
                            {
                                form.ReservedNames.Add(item.Name);
                            }
                        }

                        if (form.ShowDialog() == DialogResult.OK)
                        {
                            OnSyncTileBrushCollection(EventArgs.Empty);
                            SelectBrush(form.Brush.Uid);
                            OnTileBrushSelected(EventArgs.Empty);
                        }
                    }
                }
            }
            else if (brush is StaticTileBrush)
            {
                using (StaticBrushForm form = new StaticBrushForm(brush as StaticTileBrush)) {
                    PresenterManager manager = new PresenterManager();
                    manager.Register <EditorPresenter>(_editor);

                    using (TilePoolListPresenter tilePoolList = new TilePoolListPresenter()) {
                        tilePoolList.Initialize(manager);
                        tilePoolList.BindTilePoolManager(_editor.Project.TilePoolManager);
                        form.BindTileController(tilePoolList);

                        foreach (TileBrush item in TileBrushManager.Brushes)
                        {
                            if (item.Name != brush.Name)
                            {
                                form.ReservedNames.Add(item.Name);
                            }
                        }

                        if (form.ShowDialog() == DialogResult.OK)
                        {
                            OnSyncTileBrushCollection(EventArgs.Empty);
                            SelectBrush(form.Brush.Uid);
                            OnTileBrushSelected(EventArgs.Empty);
                        }
                    }
                }
            }
        }