Public Access
59 lines
2.2 KiB
C#
59 lines
2.2 KiB
C#
using System.Windows.Input;
|
|
using Avalonia;
|
|
using Avalonia.Controls;
|
|
|
|
namespace DodoSSH.Client.App.Views;
|
|
|
|
/// <summary>
|
|
/// The v5b session shell's host header: the address, and a ghost button that crosses to the other surface.
|
|
/// See the remark at the top of SessionHeader.axaml.
|
|
/// </summary>
|
|
internal sealed partial class SessionHeader : UserControl
|
|
{
|
|
/// <summary>What the cross-surface ghost button says — "Open SFTP" or "Open terminal".</summary>
|
|
internal static readonly StyledProperty<string?> OpenLabelProperty =
|
|
AvaloniaProperty.Register<SessionHeader, string?>(nameof(OpenLabel));
|
|
|
|
/// <summary>What the cross-surface ghost button runs.</summary>
|
|
/// <remarks>
|
|
/// The terminal usage binds <c>SelectFilesHostCommand</c> with the selected tab as its parameter; the
|
|
/// SFTP usage binds <c>OpenTerminalForFilesHostCommand</c>, which needs none — see the remark on both in
|
|
/// <c>MainWindowViewModel</c> for why the two directions are not symmetrical.
|
|
/// </remarks>
|
|
internal static readonly StyledProperty<ICommand?> OpenCommandProperty =
|
|
AvaloniaProperty.Register<SessionHeader, ICommand?>(nameof(OpenCommand));
|
|
|
|
internal static readonly StyledProperty<object?> OpenCommandParameterProperty =
|
|
AvaloniaProperty.Register<SessionHeader, object?>(nameof(OpenCommandParameter));
|
|
|
|
/// <summary>What the header says instead of an address, while no session/host context is active.</summary>
|
|
internal static readonly StyledProperty<string?> EmptyTextProperty =
|
|
AvaloniaProperty.Register<SessionHeader, string?>(nameof(EmptyText));
|
|
|
|
public SessionHeader() => InitializeComponent();
|
|
|
|
internal string? OpenLabel
|
|
{
|
|
get => GetValue(OpenLabelProperty);
|
|
set => SetValue(OpenLabelProperty, value);
|
|
}
|
|
|
|
internal ICommand? OpenCommand
|
|
{
|
|
get => GetValue(OpenCommandProperty);
|
|
set => SetValue(OpenCommandProperty, value);
|
|
}
|
|
|
|
internal object? OpenCommandParameter
|
|
{
|
|
get => GetValue(OpenCommandParameterProperty);
|
|
set => SetValue(OpenCommandParameterProperty, value);
|
|
}
|
|
|
|
internal string? EmptyText
|
|
{
|
|
get => GetValue(EmptyTextProperty);
|
|
set => SetValue(EmptyTextProperty, value);
|
|
}
|
|
}
|