Добавлен проект UI
This commit is contained in:
49
Lattice.UI/Controls/LatticeContextualToolbar.cs
Normal file
49
Lattice.UI/Controls/LatticeContextualToolbar.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user