Пример #1
0
        DragList.ItemDescriptor CreateListItemForProjectItem(string name)
        {
            string caption;

            if (_view.ViewState == PmViewStates.PackagesAndProject ||
                (_view.ViewState == PmViewStates.ProjectAndVisualStudio && _model.HasVsProject(name)))
            {
                caption = ImguiUtil.WrapWithColor(name, _pmSettings.View.Theme.DraggableItemAlreadyAddedColor);
            }
            else
            {
                // this isn't always the case since it can be rendered when interpolating
                //Assert.That(_viewState == PmViewStates.Project);
                caption = name;
            }

            return(new DragList.ItemDescriptor()
            {
                Caption = caption,
                Model = name
            });
        }
Пример #2
0
        void OnDraggedDroppedListEntries(DragListTypes sourceType, DragListTypes dropType, List <DragListEntry> entries)
        {
            switch (dropType)
            {
            case DragListTypes.Package:
            {
                switch (sourceType)
                {
                case DragListTypes.PluginItem:
                {
                    foreach (var entry in entries)
                    {
                        var name = (string)entry.Model;
                        _model.RemovePluginItem(name);
                    }
                    break;
                }

                case DragListTypes.AssetItem:
                {
                    foreach (var entry in entries)
                    {
                        var name = (string)entry.Model;
                        _model.RemoveAssetItem(name);
                    }
                    break;
                }

                case DragListTypes.Release:
                {
                    _asyncProcessor.Process(
                        InstallReleasesAsync(
                            entries.Select(x => (ReleaseInfo)x.Model).ToList()), true, "Installing Releases");
                    break;
                }

                default:
                {
                    Assert.Throw();
                    break;
                }
                }

                break;
            }

            case DragListTypes.PluginItem:
            {
                switch (sourceType)
                {
                case DragListTypes.AssetItem:
                {
                    foreach (var entry in entries)
                    {
                        var name = (string)entry.Model;
                        _model.RemoveAssetItem(name);
                        _model.AddPluginItem(name);
                    }

                    break;
                }

                case DragListTypes.PluginItem:
                {
                    // Do nothing
                    break;
                }

                case DragListTypes.Package:
                {
                    foreach (var entry in entries)
                    {
                        var info = (PackageInfo)entry.Model;

                        if (!_model.HasPluginItem(info.Name))
                        {
                            if (_model.HasAssetItem(info.Name))
                            {
                                _model.RemoveAssetItem(info.Name);
                            }

                            _model.AddPluginItem(info.Name);
                        }
                    }

                    break;
                }

                default:
                {
                    Assert.Throw();
                    break;
                }
                }

                break;
            }

            case DragListTypes.AssetItem:
            {
                switch (sourceType)
                {
                case DragListTypes.AssetItem:
                {
                    // Do nothing
                    break;
                }

                case DragListTypes.PluginItem:
                {
                    foreach (var entry in entries)
                    {
                        var name = (string)entry.Model;

                        _model.RemovePluginItem(name);
                        _model.AddAssetItem(name);
                    }

                    break;
                }

                case DragListTypes.Package:
                {
                    foreach (var entry in entries)
                    {
                        var info = (PackageInfo)entry.Model;

                        if (!_model.HasAssetItem(info.Name))
                        {
                            if (_model.HasPluginItem(info.Name))
                            {
                                _model.RemovePluginItem(info.Name);
                            }

                            _model.AddAssetItem(info.Name);
                        }
                    }

                    break;
                }

                default:
                {
                    Assert.Throw();
                    break;
                }
                }

                break;
            }

            case DragListTypes.Release:
            {
                // nothing can drag to releases
                break;
            }

            case DragListTypes.VsSolution:
            {
                if (sourceType == DragListTypes.AssetItem || sourceType == DragListTypes.PluginItem)
                {
                    foreach (var entry in entries)
                    {
                        var name = (string)entry.Model;

                        if (!_model.HasVsProject(name))
                        {
                            _model.AddVsProject(name);
                        }
                    }
                }

                break;
            }

            default:
            {
                Assert.Throw();
                break;
            }
            }
        }