DragAndDrop core
This commit is contained in:
@@ -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) { }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user