Files
Lattice/Lattice.Core/README.md
2026-01-07 21:31:57 +03:00

3.0 KiB
Raw Blame History

Lattice.Core

Framework Author Platform

Lattice.Core — это платформонезависимое ядро (Layout Engine) для построения сложных интерфейсов с системой докинга в стиле Visual Studio 2026.

Библиотека является частью экосистемы Lattice и отвечает исключительно за математику макета, управление деревом узлов и контекстное состояние, не имея зависимостей от конкретных UI-фреймворков.

🚀 Особенности

  • Агностическая архитектура: Полная совместимость с .NET 8+, WinUI 3 и Uno Platform.
  • Древовидная компоновка: Управление интерфейсом через узлы (Split и Content).
  • Context-Aware System: Встроенный сервис отслеживания контекста для динамического переключения панелей инструментов.
  • Smart Docking: Алгоритмы автоматического разделения зон и схлопывания пустых контейнеров.
  • JSON Persistence: Полиморфная сериализация макетов для сохранения и загрузки состояний пользователя.

📁 Структура проекта

  • Abstractions/ — Интерфейсы для расширения системы.
  • Models/ — Базовые сущности дерева (узлы, направления, ориентация).
  • Engine/LayoutManager, реализующий логику трансформации дерева.
  • Context/ — Сервисы управления активными состояниями и командами.
  • Persistence/ — Логика сохранения макета в JSON.

🛠 Использование

Создание базового макета

var layoutManager = new LayoutManager();

// Создаем контентные узлы
var explorer = new ContentNode(new MyToolComponent("Solution Explorer", "Explorer"));
var editor = new ContentNode(new MyDocumentComponent("Main.cs", "CodeEditor"));

// Устанавливаем редактор как корень
layoutManager.SetRoot(editor);

// Прикрепляем проводник слева от редактора
layoutManager.Dock(explorer, editor, DockDirection.Left);

//Переключение контекста
var contextService = new ContextManager();

// Вызывается при активации вкладки в UI
contextService.SetContext("CodeEditor");

// Проверка видимости команд в текущем контексте
bool isDebugVisible = contextService.IsCommandVisible("btnDebug", "CodeEditor");