40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using Lattice.Core.Abstractions;
|
||
|
||
namespace Lattice.Core.Services;
|
||
|
||
/// <summary>
|
||
/// Реализация сервиса управления контекстом приложения.
|
||
/// </summary>
|
||
public class ContextService : IContextService
|
||
{
|
||
private string _currentContext = "Common";
|
||
|
||
/// <inheritdoc/>
|
||
public string CurrentContext => _currentContext;
|
||
|
||
/// <inheritdoc/>
|
||
public event EventHandler<string>? ContextChanged;
|
||
|
||
/// <inheritdoc/>
|
||
public void SetContext(string contextGroup)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(contextGroup)) contextGroup = "Common";
|
||
|
||
if (_currentContext != contextGroup)
|
||
{
|
||
_currentContext = contextGroup;
|
||
ContextChanged?.Invoke(this, contextGroup);
|
||
}
|
||
}
|
||
|
||
/// <inheritdoc/>
|
||
public bool IsCommandVisible(string commandId, string commandContext)
|
||
{
|
||
// Базовая логика: команда видима, если её контекст совпадает с текущим
|
||
// или если команда помечена как общая ("Common" или "Global").
|
||
return commandContext == "Common" ||
|
||
commandContext == "Global" ||
|
||
commandContext == _currentContext;
|
||
}
|
||
}
|