using Content.Client.Stylesheets; using Content.Shared.Chat; using Content.Shared.Input; using Robust.Client.UserInterface.Controls; namespace Content.Client.UserInterface.Systems.Chat.Controls; [Virtual] public class ChatInputBox : PanelContainer { public readonly ChannelSelectorButton ChannelSelector; public readonly HistoryLineEdit Input; public readonly ChannelFilterButton FilterButton; protected readonly BoxContainer Container; protected ChatChannel ActiveChannel { get; private set; } = ChatChannel.Local; public ChatInputBox() { Container = new BoxContainer { Orientation = BoxContainer.LayoutOrientation.Horizontal, SeparationOverride = 4 }; AddChild(Container); ChannelSelector = new ChannelSelectorButton { Name = "ChannelSelector", ToggleMode = true, StyleClasses = {"chatSelectorOptionButton"}, MinWidth = 75 }; Container.AddChild(ChannelSelector); Input = new HistoryLineEdit { Name = "Input", PlaceHolder = GetChatboxInfoPlaceholder(), HorizontalExpand = true, StyleClasses = {"chatLineEdit"} }; Container.AddChild(Input); FilterButton = new ChannelFilterButton { Name = "FilterButton", StyleClasses = {"chatFilterOptionButton"} }; Container.AddChild(FilterButton); AddStyleClass(StyleNano.StyleClassChatSubPanel); ChannelSelector.OnChannelSelect += UpdateActiveChannel; } private void UpdateActiveChannel(ChatSelectChannel selectedChannel) { ActiveChannel = (ChatChannel) selectedChannel; } private static string GetChatboxInfoPlaceholder() { return (BoundKeyHelper.IsBound(ContentKeyFunctions.FocusChat), BoundKeyHelper.IsBound(ContentKeyFunctions.CycleChatChannelForward)) switch { (true, true) => Loc.GetString("hud-chatbox-info", ("talk-key", BoundKeyHelper.ShortKeyName(ContentKeyFunctions.FocusChat)), ("cycle-key", BoundKeyHelper.ShortKeyName(ContentKeyFunctions.CycleChatChannelForward))), (true, false) => Loc.GetString("hud-chatbox-info-talk", ("talk-key", BoundKeyHelper.ShortKeyName(ContentKeyFunctions.FocusChat))), (false, true) => Loc.GetString("hud-chatbox-info-cycle", ("cycle-key", BoundKeyHelper.ShortKeyName(ContentKeyFunctions.CycleChatChannelForward))), (false, false) => Loc.GetString("hud-chatbox-info-unbound") }; } }