Files
Lattice/Lattice.UI/Controls/LatticeContextualToolbar.cs

50 lines
2.2 KiB
C#

using Lattice.Core.Models;
using Lattice.UI.Primitives; // Для доступа к LatticeIcon
using Microsoft.UI.Xaml.Controls;
namespace Lattice.UI.Controls;
/// <summary>
/// Панель инструментов, автоматически фильтрующая команды на основе текущего контекста Core.
/// </summary>
public class LatticeContextualToolbar : CommandBar
{
/// <summary>
/// Обновляет список команд на основе предоставленных определений и текущего контекста.
/// </summary>
/// <param name="actions">Полный список доступных действий.</param>
/// <param name="currentContext">Строковый идентификатор активного контекста (например, "CodeEditor").</param>
public void UpdateItems(IEnumerable<ActionDefinition> 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);
}
}
}
}