using System;
using System.Collections.Generic;
namespace UVC.UI.ToolBar
{
///
/// 클릭 시 하위 버튼 그룹을 확장하여 보여주는 버튼입니다.
/// 하위 버튼 선택 시, 주 버튼의 내용이 업데이트될 수 있습니다.
///
public class ToolbarExpandableButton : ToolbarButtonBase
{
public enum ExpansionDirection { Horizontal, Vertical }
public List SubButtons { get; private set; }
public ExpansionDirection Direction { get; set; } = ExpansionDirection.Vertical;
public Action OnSubButtonSelected { get; set; }
public ToolbarExpandableButton()
{
SubButtons = new List();
}
public override void ExecuteClick()
{
if (IsEnabled)
{
OnClick?.Invoke();
}
}
public void SelectSubButton(ToolbarButtonBase selectedSubButton)
{
if (selectedSubButton != null && selectedSubButton.IsEnabled)
{
bool changed = false;
if (this.Text != selectedSubButton.Text)
{
this.Text = selectedSubButton.Text; // Setter가 OnStateChanged 호출 (단, Text가 실제로 변경되어야 함)
changed = true;
}
if (this.Icon != selectedSubButton.Icon)
{
this.Icon = selectedSubButton.Icon; // Setter가 OnStateChanged 호출
changed = true;
}
OnSubButtonSelected?.Invoke(selectedSubButton);
// selectedSubButton.ExecuteClick(); // 하위 버튼의 클릭 로직 실행은 선택 사항
if (changed) // Text나 Icon이 실제로 변경된 경우에만 명시적으로 호출하거나, 각 setter에 맡김
{
// NotifyStateChanged(); // Text, Icon setter가 이미 호출하므로 중복될 수 있음.
// 만약 Text, Icon 외 다른 상태도 변경된다면 필요.
}
}
}
}
}