DragAndDrop core

This commit is contained in:
FrigaT
2026-01-18 16:33:35 +03:00
parent 9ea82af329
commit 79bdd8bc62
229 changed files with 21214 additions and 2494 deletions

View File

@@ -0,0 +1,52 @@
using Lattice.UI.DragDrop.Abstractions;
using Microsoft.Extensions.DependencyInjection;
namespace Lattice.UI.DragDrop.Extensions;
/// <summary>
/// Методы расширения для регистрации сервисов перетаскивания.
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// Добавляет сервисы перетаскивания.
/// </summary>
public static IServiceCollection AddLatticeDragDrop(this IServiceCollection services)
{
// Регистрируем абстракции, которые будут реализованы в платформенных проектах
services.AddSingleton(typeof(IDragVisualProvider), typeof(DefaultDragVisualProvider));
services.AddSingleton(typeof(IDropVisualAdorner), typeof(DefaultDropVisualAdorner));
services.AddSingleton(typeof(IDragDropHost), typeof(DefaultDragDropHost));
return services;
}
/// <summary>
/// Реализация по умолчанию для платформ, которые еще не имеют своей реализации.
/// </summary>
private class DefaultDragVisualProvider : IDragVisualProvider
{
public object CreateDragVisual(Core.DragDrop.Models.DragInfo dragInfo, Core.Geometry.Point initialPosition)
=> new object();
public void UpdateDragVisualPosition(object dragVisual, Core.Geometry.Point position) { }
public void ReleaseDragVisual(object dragVisual) { }
}
private class DefaultDropVisualAdorner : IDropVisualAdorner
{
public void Show(Core.DragDrop.Models.DropInfo dropInfo, Core.Geometry.Rect targetBounds) { }
public void Update(Core.DragDrop.Models.DropInfo dropInfo) { }
public void Hide() { }
}
private class DefaultDragDropHost : IDragDropHost
{
public void ShowDragVisual(object dragVisual, Core.Geometry.Point position) { }
public void UpdateDragVisualPosition(object dragVisual, Core.Geometry.Point position) { }
public void HideDragVisual(object dragVisual) { }
public void ShowDropAdorner(IDropVisualAdorner adorner) { }
public void HideDropAdorner(IDropVisualAdorner adorner) { }
}
}