96 lines
5.2 KiB
C#
96 lines
5.2 KiB
C#
namespace UVC.UI.Toolbar.Model
|
|
{
|
|
/// <summary>
|
|
/// 한 번 클릭으로 특정 동작을 수행하는 표준적인 버튼입니다.
|
|
/// ToolbarButtonBase를 상속받아 텍스트, 아이콘, 툴팁, 활성화 상태 및 클릭 커맨드 기능을 가집니다.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// 이 클래스는 ToolbarButtonBase의 기능을 그대로 사용하며, 특별히 추가된 로직은 없습니다.
|
|
/// 복잡한 상태 관리 없이 단순 클릭 동작만을 필요로 하는 경우에 사용됩니다.
|
|
/// View 레이어(예: ToolbarView)에서는 이 모델에 해당하는 UI 요소(예: UnityEngine.UI.Button)를 생성하고,
|
|
/// 사용자가 UI 버튼을 클릭하면 이 모델의 ExecuteClick 메서드가 호출되도록 연결합니다.
|
|
/// </remarks>
|
|
/// <example>
|
|
/// <code>
|
|
/// // Toolbar 또는 ToolbarModel 등에서 ToolbarStandardButton 생성 및 사용 예시
|
|
///
|
|
/// // 1. 버튼 클릭 시 실행될 커맨드 정의 (예: 간단한 로그 출력)
|
|
/// ICommand saveCommand = new ActionCommand(() =>
|
|
/// {
|
|
/// UnityEngine.Debug.Log("저장 버튼 클릭됨. 저장 로직 실행...");
|
|
/// // 여기에 실제 저장 로직 구현
|
|
/// });
|
|
///
|
|
/// // 2. ToolbarStandardButton 인스턴스 생성 및 속성 설정
|
|
/// ToolbarStandardButton saveButton = new ToolbarStandardButton
|
|
/// {
|
|
/// Text = "button_save", // 버튼 텍스트 (다국어 키 또는 실제 텍스트)
|
|
/// IconSpritePath = "icons/toolbar/save_icon", // Resources 폴더 내 아이콘 경로
|
|
/// Tooltip = "tooltip_save_button_description", // 툴팁 (다국어 키 또는 실제 텍스트)
|
|
/// ClickCommand = saveCommand, // 위에서 정의한 커맨드 할당
|
|
/// IsEnabled = true // 버튼 활성화 상태
|
|
/// };
|
|
///
|
|
/// // 3. 생성된 버튼 모델을 ToolbarModel에 추가 (ToolbarModel의 AddItem 또는 AddStandardButton 메서드 사용)
|
|
/// // toolbarModel.AddItem(saveButton);
|
|
/// // 또는
|
|
/// // toolbarModel.AddStandardButton("button_save", "icons/toolbar/save_icon", saveCommand, "tooltip_save_button_description");
|
|
///
|
|
/// // 4. 버튼 상태 변경 예시
|
|
/// // saveButton.IsEnabled = false; // 버튼 비활성화 (UI에 반영됨)
|
|
/// // saveButton.Text = "button_saved"; // 버튼 텍스트 변경 (UI에 반영됨)
|
|
/// </code>
|
|
/// </example>
|
|
public class ToolbarStandardButton : ToolbarButtonBase
|
|
{
|
|
// ToolbarStandardButton은 ToolbarButtonBase의 모든 기능을 상속받습니다.
|
|
// 특별히 ToolbarStandardButton만을 위한 추가적인 속성이나 메서드가 필요하다면 여기에 정의할 수 있습니다.
|
|
|
|
// 예시: 생성자를 통해 주요 속성을 설정하도록 할 수도 있습니다.
|
|
// /// <summary>
|
|
// /// 지정된 속성으로 ToolbarStandardButton의 새 인스턴스를 초기화합니다.
|
|
// /// </summary>
|
|
// /// <param name="text">버튼 텍스트 또는 다국어 키입니다.</param>
|
|
// /// <param name="iconSpritePath">아이콘의 Resources 경로입니다.</param>
|
|
// /// <param name="command">클릭 시 실행될 커맨드입니다.</param>
|
|
// /// <param name="tooltip">툴팁 텍스트 또는 다국어 키입니다.</param>
|
|
// public ToolbarStandardButton(string text, string iconSpritePath = null, ICommand command = null, string tooltip = null)
|
|
// {
|
|
// this.Text = text;
|
|
// this.IconSpritePath = iconSpritePath;
|
|
// this.ClickCommand = command;
|
|
// this.TooltipKey = tooltip;
|
|
// }
|
|
|
|
// ToolbarButtonBase의 ExecuteClick 메서드를 그대로 사용합니다.
|
|
// 만약 StandardButton만의 특별한 클릭 전/후 처리가 필요하다면 ExecuteClick 메서드를 override 할 수 있습니다.
|
|
// /// <summary>
|
|
// /// 버튼 클릭 로직을 실행합니다.
|
|
// /// </summary>
|
|
// /// <param name="parameter">커맨드에 전달할 파라미터입니다.</param>
|
|
// public override void ExecuteClick(object parameter = null)
|
|
// {
|
|
// if (!IsEnabled) return;
|
|
//
|
|
// // UnityEngine.Debug.Log($"ToolbarStandardButton '{Text}' ExecuteClick 호출됨.");
|
|
//
|
|
// // 부모 클래스의 ExecuteClick (ClickCommand 실행 등)
|
|
// base.ExecuteClick(parameter);
|
|
//
|
|
// // 여기에 ToolbarStandardButton만의 추가적인 로직이 있다면 작성
|
|
// // 예를 들어, 클릭 후 특정 사운드 재생 등
|
|
// }
|
|
|
|
/// <summary>
|
|
/// 이 버튼 모델에 연결된 모든 이벤트 핸들러를 정리합니다.
|
|
/// ToolbarStandardButton은 ToolbarButtonBase에서 상속받은 이벤트 외에 추가적인 이벤트가 없으므로,
|
|
/// 기본 구현을 호출합니다.
|
|
/// </summary>
|
|
public override void ClearEventHandlers()
|
|
{
|
|
base.ClearEventHandlers();
|
|
// ToolbarStandardButton에 특화된 이벤트가 있다면 여기서 정리합니다.
|
|
// 예: CustomEvent = null;
|
|
}
|
|
}
|
|
} |