#nullable enable using System; using UVC.UI.Commands; namespace UVC.UI.Menu { /// /// 컨텍스트 메뉴의 각 항목에 대한 정보를 담는 데이터 구조체입니다. /// 인스펙터에서 메뉴 항목을 쉽게 설정할 수 있도록 Serializable 특성을 가집니다. /// [Serializable] public class ContextMenuItemData { /// /// 메뉴 아이템의 고유 식별자입니다. /// public string ItemId { get; private set; } /// /// UI에 표시될 메뉴 아이템의 이름입니다. 다국어 키도 가능합니다. /// 이 키를 사용하여 실제 표시될 텍스트를 가져옵니다. /// public string DisplayName { get; private set; } /// /// 메뉴 아이템이 선택되었을 때 실행될 명령입니다. /// `ICommand` 인터페이스를 구현하는 객체여야 합니다. /// 실행할 동작이 없는 경우 null일 수 있습니다. /// public ICommand? Command { get; private set; } /// /// 실행 시 전달될 파라미터입니다. /// 이 파라미터는 호출 시 사용됩니다. /// public object? CommandParameter { get; set; } /// /// 이 메뉴 아이템이 시각적인 구분선인지 여부를 나타냅니다. /// `true`이면 메뉴 UI에서 다른 아이템들과 구분되는 선으로 표시됩니다. /// public bool IsSeparator { get; private set; } public ContextMenuItemData(string itemId = "", string displayName = "", ICommand? command = null, object? commandParameter = null, bool isSeparator = false) { this.ItemId = itemId; this.DisplayName = displayName; this.Command = command; this.CommandParameter = commandParameter; this.IsSeparator = isSeparator; } } }