using System.Windows;
using System.Windows.Controls;
using AxCopilot.Views.Controls;

namespace AxCopilot.Views;

/// <summary>
/// Phase 17-UI-D: AgentSidebarView 프록시 어댑터.
/// 34개 기존 ChatWindow 파셜 파일이 사이드바 내부 요소를 그대로 참조할 수 있도록
/// 계산 프로퍼티(computed property)로 위임합니다.
/// </summary>
public partial class ChatWindow
{
    // ── 사이드바 내부 요소 프록시 (기존 코드 무수정 호환) ─────────────────

    /// <summary>대화 목록 StackPanel — RefreshConversationList 등에서 직접 사용.</summary>
    private StackPanel ConversationPanel => Sidebar.SidebarConversationPanel;

    /// <summary>검색 TextBox — SearchBox_TextChanged 및 검색 필터링에서 사용.</summary>
    private TextBox SearchBox => Sidebar.SidebarSearchBox;

    /// <summary>카테고리 아이콘 TextBlock — UpdateCategoryLabel()에서 사용.</summary>
    private TextBlock CategoryIcon => Sidebar.SidebarCategoryIcon;

    /// <summary>카테고리 레이블 TextBlock — UpdateCategoryLabel()에서 사용.</summary>
    private TextBlock CategoryLabel => Sidebar.SidebarCategoryLabel;

    /// <summary>카테고리 드롭다운 Border — 팝업 PlacementTarget으로 사용.</summary>
    private Border BtnCategoryDrop => Sidebar.SidebarCategoryDropTarget;

    /// <summary>사용자 이니셜 TextBlock — SetupUserInfo()에서 사용.</summary>
    private TextBlock UserInitialSidebar => Sidebar.SidebarUserInitial;

    /// <summary>사용자 이름 TextBlock — SetupUserInfo()에서 사용.</summary>
    private TextBlock UserNameText => Sidebar.SidebarUserName;

    /// <summary>사용자 PC 텍스트 TextBlock — SetupUserInfo()에서 사용.</summary>
    private TextBlock UserPcText => Sidebar.SidebarUserPc;

    // ── 사이드바 이벤트 구독 초기화 ──────────────────────────────────────

    private void InitSidebarEvents()
    {
        // 탭 전환: 사이드바 탭 클릭 → 메인 탭 RadioButton 동기화
        Sidebar.SidebarTabChanged += (_, tab) =>
        {
            _activeTab = tab;
            switch (tab)
            {
                case "Cowork": TabCowork.IsChecked = true; break;
                case "Code":   TabCode.IsChecked   = true; break;
                default:       TabChat.IsChecked   = true; break;
            }
        };

        // 새 대화 요청
        Sidebar.NewChatRequested += (_, _) =>
        {
            BtnNewChat_Click(Sidebar, new RoutedEventArgs());
        };

        // 전체 삭제 요청
        Sidebar.DeleteAllRequested += (_, _) =>
        {
            BtnDeleteAll_Click(Sidebar, new RoutedEventArgs());
        };

        // 카테고리 드롭다운 클릭
        Sidebar.CategoryDropClicked += (_, _) =>
        {
            BtnCategoryDrop_Click(Sidebar, new RoutedEventArgs());
        };

        // 검색어 변경 — SearchBox_TextChanged는 기존 코드가 TextBox sender로 받음
        Sidebar.SearchTextChanged += (sender, e) =>
        {
            SearchBox_TextChanged(sender, e);
        };
    }
}
