52 lines
2.2 KiB
C#
52 lines
2.2 KiB
C#
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) { }
|
|
}
|
|
} |