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);
}
}
}
}