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