using Lattice.Core.Models; using Lattice.UI.Primitives; // Для доступа к LatticeIcon using Microsoft.UI.Xaml.Controls; namespace Lattice.UI.Controls; /// /// Панель инструментов, автоматически фильтрующая команды на основе текущего контекста Core. /// public class LatticeContextualToolbar : CommandBar { /// /// Обновляет список команд на основе предоставленных определений и текущего контекста. /// /// Полный список доступных действий. /// Строковый идентификатор активного контекста (например, "CodeEditor"). public void UpdateItems(IEnumerable actions, string currentContext) { // Очищаем текущие команды PrimaryCommands.Clear(); if (actions == null) return; foreach (var action in actions) { // Логика 2026: показываем Common (общие), Global или специфичные для контекста команды if (action.TargetContext == "Common" || action.TargetContext == "Global" || action.TargetContext == currentContext) { var button = new AppBarButton { Label = action.Label, // Используем наш хелпер LatticeIcon для создания иконки из шрифта Segoe Fluent Icons Icon = LatticeIcon.GetIcon(action.IconKey), IsEnabled = action.IsEnabled }; // Добавляем всплывающую подсказку (Tooltip) if (!string.IsNullOrEmpty(action.Tooltip)) { ToolTipService.SetToolTip(button, action.Tooltip); } PrimaryCommands.Add(button); } } } }