56 lines
1.4 KiB
C#
56 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Specialized;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Input;
|
|
using ClaudeDo.Ui.ViewModels.Islands;
|
|
|
|
namespace ClaudeDo.Ui.Views.Islands.Detail;
|
|
|
|
public partial class WorkConsole : UserControl
|
|
{
|
|
private INotifyCollectionChanged? _log;
|
|
|
|
public WorkConsole()
|
|
{
|
|
InitializeComponent();
|
|
DataContextChanged += OnDataContextChanged;
|
|
}
|
|
|
|
private void OnDataContextChanged(object? sender, EventArgs e)
|
|
{
|
|
if (_log is not null)
|
|
_log.CollectionChanged -= OnLogChanged;
|
|
|
|
_log = (DataContext as DetailsIslandViewModel)?.Log;
|
|
|
|
if (_log is not null)
|
|
_log.CollectionChanged += OnLogChanged;
|
|
}
|
|
|
|
private void OnLogChanged(object? sender, NotifyCollectionChangedEventArgs e)
|
|
{
|
|
if (e.Action != NotifyCollectionChangedAction.Add) return;
|
|
EventHandler? handler = null;
|
|
handler = (_, _) =>
|
|
{
|
|
LogScroll.LayoutUpdated -= handler;
|
|
LogScroll.ScrollToEnd();
|
|
};
|
|
LogScroll.LayoutUpdated += handler;
|
|
}
|
|
|
|
private void OnReviewInputKeyDown(object? sender, KeyEventArgs e)
|
|
{
|
|
if (e.Key != Key.Enter || e.KeyModifiers.HasFlag(KeyModifiers.Shift))
|
|
return;
|
|
|
|
if (DataContext is DetailsIslandViewModel vm &&
|
|
vm.RejectReviewCommand.CanExecute(null))
|
|
{
|
|
vm.RejectReviewCommand.Execute(null);
|
|
}
|
|
|
|
e.Handled = true;
|
|
}
|
|
}
|