using System.Windows;
using System.Windows.Controls;
using Microsoft.Extensions.DependencyInjection;
using SharepointToolbox.ViewModels;
using SharepointToolbox.Views.Dialogs;
using SharepointToolbox.Views.Tabs;

namespace SharepointToolbox;

public partial class MainWindow : Window
{
    private readonly MainWindowViewModel _viewModel;

    public MainWindow(MainWindowViewModel viewModel, IServiceProvider serviceProvider)
    {
        InitializeComponent();
        _viewModel = viewModel;
        DataContext = viewModel;

        // Wire profile management dialog factory
        viewModel.OpenProfileManagementDialog = () => serviceProvider.GetRequiredService<ProfileManagementDialog>();

        // Replace Permissions tab placeholder with the DI-resolved PermissionsView
        PermissionsTabItem.Content = serviceProvider.GetRequiredService<PermissionsView>();

        // Replace Settings tab placeholder with the DI-resolved SettingsView
        SettingsTabItem.Content = serviceProvider.GetRequiredService<SettingsView>();

        Loaded += OnLoaded;
    }

    private async void OnLoaded(object sender, RoutedEventArgs e)
    {
        await _viewModel.LoadProfilesAsync();
    }

    // Expose the LogPanel RichTextBox (generated by x:Name="LogPanel") for LogPanelSink wiring
    public RichTextBox GetLogPanel() => LogPanel;
}
