toolbar 개발 중
This commit is contained in:
@@ -198,9 +198,13 @@ namespace UVC.UI.Menu
|
||||
new MenuItemData("file_new", "menu_file_new", subMenuItems: new List<MenuItemData>
|
||||
{
|
||||
new MenuItemData("file_new_project", "menu_file_new_project", new DebugLogCommand("새 프로젝트 선택됨 (Command 실행)")),
|
||||
new MenuItemData("file_new_file", "menu_file_new_file", new DebugLogCommand("새 파일 선택됨 (Command 실행)"))
|
||||
new MenuItemData("file_new_file", "menu_file_new_file",
|
||||
new ActionCommand(() => Debug.Log("[SampleProject] 새 파일 선택됨")))
|
||||
}),
|
||||
new MenuItemData("file_open", "menu_file_open", new DebugLogCommand("파일 열기 선택됨 (Command 실행)"), isEnabled: false), // "파일 열기"는 비활성화 상태로 시작
|
||||
new MenuItemData("file_open", "menu_file_open",
|
||||
new ActionCommand<string>((path) => Debug.Log($"[SampleProject] 파일 열기 선택됨: {path}"), "sample.txt"),
|
||||
commandParameter: "another_sample.txt", // 이 파라미터가 HandleMenuItemClicked에서 사용됨
|
||||
isEnabled: false), // "파일 열기"는 비활성화 상태로 시작
|
||||
MenuItemData.CreateSeparator("file_sep1"), // 구분선 추가
|
||||
new MenuItemData("file_save", "menu_file_save", command: new DebugLogCommand("저장 선택됨 (Command 실행)") , subMenuItems: new List<MenuItemData>
|
||||
{
|
||||
@@ -222,7 +226,7 @@ namespace UVC.UI.Menu
|
||||
model.MenuItems.Add(new MenuItemData("language", "menu_language", subMenuItems: new List<MenuItemData>
|
||||
{
|
||||
// 각 언어 메뉴 아이템에 ChangeLanguageCommand를 연결하여 언어 변경 기능 수행
|
||||
new MenuItemData("lang_ko", "menu_lang_korean", new ChangeLanguageCommand("ko-KR")),
|
||||
new MenuItemData("lang_ko", "menu_lang_korean", new ChangeLanguageCommand("ko-KR"), commandParameter: "ko-KR"),
|
||||
new MenuItemData("lang_en", "menu_lang_english", new ChangeLanguageCommand("en-US"))
|
||||
// 필요에 따라 다른 언어들도 추가 가능
|
||||
}));
|
||||
@@ -239,9 +243,13 @@ namespace UVC.UI.Menu
|
||||
// 클릭된 아이템이 구분선이거나 비활성화 상태인지 확인
|
||||
if (clickedItemData.IsSeparator)
|
||||
{
|
||||
// 구분선은 아무 동작도 하지 않음
|
||||
if (!clickedItemData.IsEnabled)
|
||||
{
|
||||
Debug.Log($"비활성화된 메뉴 아이템 클릭 시도: {clickedItemData.ItemId} (표시 키: {clickedItemData.DisplayNameKey})");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!clickedItemData.IsEnabled)
|
||||
{
|
||||
// 비활성화된 아이템 클릭 시 로그 (디버깅 목적)
|
||||
@@ -254,7 +262,7 @@ namespace UVC.UI.Menu
|
||||
|
||||
// 메뉴 아이템에 연결된 Command가 있다면 실행
|
||||
// Command가 null일 수 있으므로 null 조건부 연산자(?.) 사용
|
||||
clickedItemData.Command?.Execute();
|
||||
clickedItemData.Command?.Execute(clickedItemData.CommandParameter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace UVC.UI.Menu
|
||||
public string ItemId { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// UI에 표시될 메뉴 아이템의 이름에 대한 다국어 처리 키입니다.
|
||||
/// UI에 표시될 메뉴 아이템의 이름입니다. 다국어 키도 가능합니다.
|
||||
/// 이 키를 사용하여 실제 표시될 텍스트를 가져옵니다.
|
||||
/// </summary>
|
||||
public string DisplayNameKey { get; private set; }
|
||||
@@ -28,6 +28,12 @@ namespace UVC.UI.Menu
|
||||
/// </summary>
|
||||
public ICommand Command { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// <see cref="Command"/> 실행 시 전달될 파라미터입니다.
|
||||
/// 이 파라미터는 <see cref="TopMenuController.HandleMenuItemClicked"/>에서 <see cref="ICommand.Execute"/> 호출 시 사용될 수 있습니다.
|
||||
/// </summary>
|
||||
public object CommandParameter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 이 메뉴 아이템에 속한 하위 메뉴 아이템들의 목록입니다.
|
||||
/// 하위 메뉴가 없는 경우 빈 리스트입니다.
|
||||
@@ -51,16 +57,18 @@ namespace UVC.UI.Menu
|
||||
/// `MenuItemData` 클래스의 새 인스턴스를 초기화합니다.
|
||||
/// </summary>
|
||||
/// <param name="itemId">메뉴 아이템의 고유 ID.</param>
|
||||
/// <param name="displayNameKey">표시 이름의 다국어 키.</param>
|
||||
/// <param name="displayName">표시 이름. 표시 이름의 다국어 키도 가능.</param>
|
||||
/// <param name="command">실행할 명령 (선택 사항).</param>
|
||||
/// <param name="commandParameter">커맨드에 전달할 파라미터 (선택 사항).</param>
|
||||
/// <param name="subMenuItems">하위 메뉴 아이템 목록 (선택 사항).</param>
|
||||
/// <param name="isSeparator">구분선 여부 (선택 사항, 기본값: false).</param>
|
||||
/// <param name="isEnabled">활성화 상태 (선택 사항, 기본값: true).</param>
|
||||
public MenuItemData(string itemId, string displayNameKey, ICommand command = null, List<MenuItemData> subMenuItems = null, bool isSeparator = false, bool isEnabled = true)
|
||||
public MenuItemData(string itemId, string displayName, ICommand command = null, object commandParameter = null, List<MenuItemData> subMenuItems = null, bool isSeparator = false, bool isEnabled = true)
|
||||
{
|
||||
ItemId = itemId;
|
||||
DisplayNameKey = displayNameKey;
|
||||
DisplayNameKey = displayName;
|
||||
Command = command;
|
||||
CommandParameter = commandParameter; // 파라미터 저장
|
||||
SubMenuItems = subMenuItems ?? new List<MenuItemData>(); // null인 경우 빈 리스트로 초기화
|
||||
IsSeparator = isSeparator;
|
||||
IsEnabled = isEnabled;
|
||||
@@ -85,7 +93,7 @@ namespace UVC.UI.Menu
|
||||
public static MenuItemData CreateSeparator(string itemId = null)
|
||||
{
|
||||
// 구분선은 특정 동작이나 표시 이름이 필요 없으므로, displayNameKey는 비워두고 command는 null로 설정합니다.
|
||||
return new MenuItemData(itemId ?? $"separator_{Guid.NewGuid()}", string.Empty, null, null, true);
|
||||
return new MenuItemData(itemId ?? $"separator_{Guid.NewGuid()}", string.Empty, null, null, null, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -406,7 +406,7 @@ namespace UVC.UI.Menu
|
||||
{
|
||||
// LocalizationManager가 없는 경우, 키 값을 그대로 표시 (개발 중 확인 용도)
|
||||
ULog.Warning($"LocalizationManager 인스턴스가 없어 메뉴 아이템 텍스트를 키 값으로 설정합니다: {itemData.DisplayNameKey}");
|
||||
buttonText.text = $"[{itemData.DisplayNameKey}]";
|
||||
buttonText.text = itemData.DisplayNameKey;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user